我想知道“一致代价搜索”和“迪杰斯特拉算法”的区别。它们似乎是相同的算法。
我想知道“一致代价搜索”和“迪杰斯特拉算法”的区别。它们似乎是相同的算法。
http://en.wikipedia.org/wiki/Uniform-cost_search#Relationship_to_other_algorithms
Dijkstra算法在图中搜索从根节点到每个其他节点的最短路径,而一致代价搜索则在成本方面搜索到目标节点的最短路径。
此外,一致代价搜索需要更少的空间要求,而优先级队列被“懒惰”地填充,相反Dijkstra算法在开始时将所有节点添加到队列中并赋予无限成本。
由NotAUser、dreaMone和Bruno Calza的答案汇编而成
Dijkstra算法可以找到从根节点到其他每个节点的最短路径。Uniform Cost Search能够按照从根节点到目标节点的代价寻找最短路径。Uniform Cost Search是Dijkstra算法的变种,它专注于找到单个终点的最短路径,而不是找到每个点的最短路径。
UCS在找到终点后就停止搜索,而对于Dijkstra,则没有终点的概念,处理将继续直到所有节点都从优先级队列中被移除,即直到确定了所有节点(而不仅仅是一个目标节点)的最短路径。
UCS需要的空间更少,在遍历时逐渐填充优先级队列,而Dijkstra在开始时将所有节点添加到队列中并赋予无限代价。
由于上述原因,Dijkstra比UCS更耗时。
UCS通常用于树上,而Dijkstra则用于一般图上。
Djikstra仅适用于显式图,其中整个图作为输入提供。UCS从源顶点开始,并逐步遍历图的必要部分,因此既适用于显式图,也适用于隐式图(其中状态/节点是生成的)。