【问题标题】:What's the difference between best-first search and A* search?最佳优先搜索和 A* 搜索有什么区别?
【发布时间】:2016-03-18 14:25:13
【问题描述】:

在我的教科书中,我注意到这两种算法的工作原理几乎完全相同,我试图了解它们之间的主要区别是什么

教科书使用 A* 遍历此示例,方法与使用 最佳优先搜索 的方式相同。

任何帮助将不胜感激。

【问题讨论】:

    标签: artificial-intelligence a-star


    【解决方案1】:

    A* 通过使用启发式方法来指导其搜索,从而获得更好的性能。 A* 结合了 Best-first Search 和 Uniform Cost Search 的优点:确保在使用启发式算法提高算法效率的同时找到优化路径。 A* 函数将是 f(n) = g(n) + h(n),其中 h(n) 是任意随机顶点 n 和目标顶点之间的估计距离,g(n) 是起点和目标顶点之间的实际距离任意顶点 n。如果 g(n)=0,则 A* 变为最佳优先搜索。如果 h(n)=0,则 A* 变为统一成本搜索。

    【讨论】:

      【解决方案2】:

      Best-first search 算法基于启发式函数 f(n) = h 访问具有最低启发式值(通常称为贪婪)的下一个状态。它不考虑通往该特定状态的路径成本。它只关心当前状态的下一个状态具有最低启发式。

      A* 搜索 算法基于启发式访问下一个状态 f(n) = h + g 其中 h 组件与应用的启发式相同在最佳优先搜索中,但 g 组件是从初始状态到特定状态的路径。因此,它不会选择仅具有最低启发式值的下一个状态,而是在考虑到启发式和到达该状态的成本时给出最低值的状态。

      在上面的示例中,当您从 Arad 开始时,您可以去 直达锡比乌(253 公里)或泽林德(374 公里)或蒂米什瓦拉(329 公里)。 在这种情况下,两种算法都选择 Sibiu,因为它具有较低的值 f(n) = 253.

      现在您可以将任一州扩展到阿拉德(366 公里)或 奥拉迪亚(380 公里)或法拉加斯(178 公里)或里姆尼库维尔恰(193 公里)。为了最好 首先搜索 Faragas 的 f(n) = 178 最低,但 A* 会 有 Rimnicu Vilcea f(n) = 220 + 193 = 413 其中 220 是 从 Arad (140+80) 到 Rimnicu,从 Rimnicu 到 193 布加勒斯特,但对于 Faragas 来说,f(n) = 239 + 178 = 417。

      所以现在你可以清楚地看到 best-first 是贪心算法,因为它会选择具有较低启发式但总体成本较高的状态,因为它不考虑从初始状态进入该状态的成本

      【讨论】:

      • 有些人还使用“最佳优先算法”来指代包括 A* 在内的一大类启发式算法 (en.wikipedia.org/wiki/Best-first_search)
      • 我认为你的意思是GreadyBest-firstWhat sets A* apart from a greedy best-first search algorithm is that it takes the cost/distance already traveled, g(n), into account. - 来自维基百科
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      相关资源
      最近更新 更多