最佳优先搜索和A *搜索之间的区别是什么?

时间:2015-12-12 20:12:24

标签: artificial-intelligence a-star

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

Example from the textbook

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:25)

最佳优先搜索算法基于具有最低启发式值(通常称为贪婪)的启发式函数 f(n)= h 访问下一状态。它没有考虑到该特定状态的路径的成本。它所关心的只是当前状态的下一个状态具有最低的启发式。

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

  

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

     

现在你可以扩展到任一状态回阿拉德(366公里)或   奥拉迪亚(380公里)或法拉加斯(178公里)或Rimnicu Vilcea(193公里)。对于最好   首先搜索Faragas将具有最低f(n)= 178但 A * 将   有Rimnicu Vilcea f(n)= 220 + 193 = 413其中220是成本   从Arad(140 + 80)到达Rimnicu,193从Rimnicu到达   布加勒斯特,但对于法拉加斯,它将更多为f(n)= 239 + 178 = 417。

所以现在显然你可以看到 best-first 是贪婪算法,因为它会选择具有较低启发式但总体成本较高的状态,因为它没有考虑从最初到达该状态的成本状态

答案 1 :(得分:0)

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