我想知道统一成本搜索和 Dijkstra算法之间有什么区别。它们似乎是相同的算法。
答案 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)
主要区别在于,当顶点数有限时,定义了