返回介绍

Exhaustive Search

发布于 2025-02-22 13:01:30 字数 2611 浏览 0 评论 0 收藏 0

穷竭搜索又称暴力搜索,指代将所有可能性列出来,然后再在其中寻找满足题目条件的解。常用求解方法和工具有:

  1. 递归函数
  2. 队列
  3. 深度优先搜索( DFS , Depth-First Search),又常称为回溯法
  4. 广度优先搜索( BFS , Breadth-First Search)

1, 2, 3 往往在深搜或者广搜中体现。

DFS

DFS 通常从某个状态开始,根据特定的规则转移状态,直至无法转移(节点为空),然后回退到之前一步状态,继续按照指定规则转移状态,直至遍历完所有状态。

回溯法包含了多类问题,模板类似。

排列组合模板->搜索问题(是否要排序,哪些情况要跳过)

使用回溯法的一般步骤:

  1. 确定所给问题的解空间:首先应明确定义问题的解空间,解空间中至少包含问题的一个解。
  2. 确定结点的扩展搜索规则
  3. 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。

BFS

BFS 从某个状态开始,搜索 所有可以到达的状态 ,转移顺序为『初始状态->只需一次转移就可到达的所有状态->只需两次转移就可到达的所有状态->...』,所以对于同一个状态, BFS 只搜索一次,故时间复杂度为 O(states×transfer_methods)O(states \times transfer\_methods)O(states×transfer_methods). BFS 通常配合队列一起使用,搜索时先将状态加入到队列中,然后从队列顶端不断取出状态,再把从该状态可转移到的状态中尚未访问过的部分加入队列,知道队列为空或已找到解。因此 BFS 适合用于『由近及远』的搜索,比较适合用于求解最短路径、最少操作之类的问题。

Reference

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文