【发布时间】:2016-03-18 14:25:13
【问题描述】:
【问题讨论】:
标签: artificial-intelligence a-star
【问题讨论】:
标签: artificial-intelligence a-star
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* 变为统一成本搜索。
【讨论】:
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 是贪心算法,因为它会选择具有较低启发式但总体成本较高的状态,因为它不考虑从初始状态进入该状态的成本
【讨论】:
Gready 说Best-first。 What sets A* apart from a greedy best-first search algorithm is that it takes the cost/distance already traveled, g(n), into account. - 来自维基百科