【发布时间】:2018-09-20 08:30:14
【问题描述】:
Dijkstra 的算法是f(n) = g(n)
A* 是f(n) = g(n) + h(n)。
g(n) 是从起始节点到 n 的路径成本。
h(n) 是一个启发式函数,它估计从 n 到目标的最便宜路径的成本。
需要g(n)吗?没有g(n)就不能找到最短路径吗?
为什么 A* 需要 g(n)?
【问题讨论】:
-
目的是为了更快地实现目标,因此您以您期望朝着正确方向的方式影响它。但当然,解决方案必须相同。
-
我不知道为什么它更快,你能举个例子吗?
-
对不起,没有。试想一下,算法沿着边界前进,并且知道该边界内的最佳成本。如果边框向各个方向扩展,则填充它需要更长的时间。