答案 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 *变为均匀成本搜索。