具有单一来源,单一目的地和统一成本搜索的Modified Dijkstra有什么区别?

时间:2018-08-11 11:44:15

标签: algorithm comparison updates dijkstra ucs

如果我们将Dijkstra算法从“单个源到所有节点的最短路径”修改为找到从“单个源到单个目标点”的最短路径,那么修改后的Dijkstra和统一成本搜索之间会有什么区别?任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

没有区别。如果使用dijkstra,则从单一源开始时,将为所有节点计算最短路径。您从源节点访问连接的节点。然后,下一个节点是优先级队列中最短的成本节点。在将新节点插入优先级队列之前,请检查当前节点成本和新成本。如果新成本小于节点成本,则将此节点插入优先级队列。

查看this,了解如何计算所有节点的单一来源。

答案 1 :(得分:0)

Dijkstra’s Algorithm versus Uniform Cost Search or a Case Against Dijkstra’s Algorithm中可以很好地剖析这两种算法之间的差异。我只是引用您Arial Felner的一些结论:

  

这两种算法有很多相似之处,并且在逻辑上   当量。最重要的相似之处是它们完全扩展   相同的节点,并且顺序完全相同。

我们怀疑,从理论上讲,这两种算法是等效的。

  

但是,这些算法之间存在许多差异,例如   在教科书中有描述,在课堂上有讲授。主要区别是优先级中节点的身份   队列。在修改后的 Dijkstra 中,所有节点最初都插入到队列中。在 UCS 中,   在搜索过程中懒惰地将节点插入队列


因此

  1. 就内存要求而言,它们是不同的,UCS的 OPEN 比修改的Dijkstra的Q小得多。在任何给定的时间步长,修改后的Dijkstra的内存需求都比UCS更大。
  2. 就运行时间而言,相同的推理适用于操纵 OPEN Q 的时间开销。修改后的Dijkstra 具有更大的开销,因为它们存储的节点的dist [] =∞永远不会扩展,因此开销更大。相比之下,在UCS中, OPEN 仅包括dist≠∞的节点,即仅逻辑上需要并且可以选择进行扩展的节点

总而言之,UCS和改良的Dijkstra在O复杂度方面是等效的,以相同的顺序扩展相同的节点,但是从实际的角度来看, UCS应该是首选,并且在处理单一来源-没有启发式信息的单一目的地问题时被广泛使用。