Dijkstra算法如何更好地找到A *算法来寻找最短路径?
答案 0 :(得分:11)
寻找最短路径并不是更好。只要你对A *有一个可接受的启发式,它就会发现短路径比Dijkstra更快。
正如Mehrad在评论中指出的那样,如果你给它一个返回0的启发式函数,A *会降级为Dijktras。
wikipedia article for A*有很多关于所有这些的好信息。
答案 1 :(得分:3)
如果你想找到一个给定源节点到图中所有节点的最短路径,那么Dijkstra优于A *,因为如果你不停留在Dijkstra,那么无论如何都要覆盖整个图形。具体目标。与简单的Dijkstra相反,A *是面向目标的算法,因此需要知道源节点和目标节点。如果你想用N *节点用A *算法覆盖整个图形,你基本上必须从源节点运行N次算法。
Dijkstra也可能更好地找到从源节点到图的许多目标的最短路径。取决于目标的位置(特别是距离源的距离),目标数量M,图形的大小,A *启发式的质量,将有一些收支平衡点,其中运行一个Dijkstra比运行更好或更低性能M乘以A *算法。
编辑:受到马修正确评论的启发,我重新措辞并添加评论: