【问题标题】:Greedy Best First Search and Depth First Search贪婪的最佳优先搜索和深度优先搜索
【发布时间】:2012-03-01 10:25:40
【问题描述】:

贪心最佳优先搜索在任何情况下都可能表现得像深度优先搜索吗?

我看到这两种算法的最坏情况是相似的 O(b^m)。这是否意味着它们的行为方式相同?

【问题讨论】:

    标签: algorithm graph-algorithm depth-first-search


    【解决方案1】:

    贪心最佳优先搜索在任何情况下都可能表现得像深度优先搜索吗?

    没有。如果是这样,那将是深度优先搜索。

    我看到这两种算法的最坏情况是相似的 O(b^m)。这是否意味着它们的行为方式相同?

    没有。

    【讨论】:

      【解决方案2】:

      “最佳优先”仅仅意味着它完全依赖于一些启发式,对可能的选项进行评分,并首先扩展最佳选项。深度优先搜索不使用这种启发式方法。

      一种思考方式是,Djiksta 将返回具有非负边的图上的最短路径。当您添加最佳优先搜索的评分机制时,您将获得 A*。拿走 Djikstra,你会再次获得最佳优先。

      【讨论】:

      • 是否存在两种算法以相同方式寻找答案的可能情况,可能是通过以相同方式遍历节点。让我们说目标在于树的第 m 层的叶子节点。 DFS 将有最坏的情况 o(b^m),GBFS 也是如此。我们是否可以通过某种方式更改 h(n),使其在某些特殊情况下像 DFS 一样工作?
      • 设置 h(n) = -g(n) 会给你一个搜索,这取决于你从队列中取出东西的顺序。 (可能是随机的或先进的,模拟 BFS)。因此,让它像 DFS 一样工作的策略是维护一个计数器,每次评估启发式算法时都会递减该计数器。例如。您的启发式函数将是: h(n): counter = counter - 1 return -g(n) + counter 同样,这不是 A* 的特别有用的应用,但它确实有效。
      猜你喜欢
      • 2020-05-23
      • 1970-01-01
      • 2011-01-31
      • 2012-01-12
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多