统一成本搜索和Dijkstra算法之间有什么区别?

时间:2012-10-09 18:47:07

标签: graph artificial-intelligence

我想知道统一成本搜索 Dijkstra算法之间有什么区别。它们似乎是相同的算法。

5 个答案:

答案 0 :(得分:39)

  

可以认为Dijkstra的算法可能更为人所知   作为统一成本搜索的变体,其中没有目标状态和   处理继续,直到所有节点都从中删除   优先级队列,即直到到达所有节点的最短路径(不仅仅是a   目标节点)已经确定

http://en.wikipedia.org/wiki/Uniform-cost_search#Relationship_to_other_algorithms

答案 1 :(得分:23)

Dijkstra的算法在图中搜索从根到其他每个节点的最短路径,而统一成本搜索最短路径的目标节点成本

此外,统一成本具有较少的空间需求,而优先级队列则“懒洋洋地”填充,与Dijkstra相反,后者在开始时以无限的成本将所有节点添加到队列中。

答案 2 :(得分:14)

NotAUser,dreaMone和Bruno Calza的其他答案汇编

Dijkstra的算法找到从根节点到每个其他节点的最短路径。统一成本搜索从根节点到目标节点的成本方面的最短路径。统一成本搜索是Dijkstra的算法,该算法专注于找到到单个终点的单个最短路径,而不是到达每个点的最短路径。

UCS通过在找到完成点后立即停止来完成此操作。对于Dijkstra,没有目标状态,并且处理继续,直到所有节点都已从优先级队列中移除,即直到确定到所有节点(不仅仅是目标节点)的最短路径为止。

UCS具有较少的空间要求,其中优先级队列逐渐填充而不是Dijkstra,后者在开始时以无限的成本将所有节点添加到队列中。

由于以上几点,Dijkstra比UCS更耗时

UCS通常在树上制定,而Dijkstra用于一般图表

Djikstra仅适用于显式图,其中整个图作为输入。 UCS从源顶点开始,逐渐遍历图形的必要部分。因此,它适用于显式图和隐式图(生成状态/节点)。

答案 3 :(得分:3)

有一篇论文讨论了两者的相同点和不同点。

http://www.aaai.org/ocs/index.php/SOCS/SOCS11/paper/view/4017/4357

答案 4 :(得分:1)

主要区别在于,当顶点数有限时,定义了 Dijkstra算法。它表示将所有顶点排成一排。但是当顶点数趋于无限时,我们不能将所有顶点排在队列中。 统一成本搜索是在这种情况下定义的,其中顶点数量未知。