【发布时间】:2012-10-09 18:47:06
【问题描述】:
我想知道统一成本搜索和Dijkstra算法之间有什么区别。它们似乎是相同的算法。
【问题讨论】:
标签: graph artificial-intelligence
我想知道统一成本搜索和Dijkstra算法之间有什么区别。它们似乎是相同的算法。
【问题讨论】:
标签: graph artificial-intelligence
Dijkstra 的算法,也许比较有名,可以考虑 作为统一成本搜索的一种变体,其中没有目标状态,并且 处理继续,直到所有节点都已从 优先级队列,即直到所有节点的最短路径(不仅仅是一个 目标节点)已确定
http://en.wikipedia.org/wiki/Uniform-cost_search#Relationship_to_other_algorithms
【讨论】:
Dijkstra 算法在图中搜索从根到每个其他节点的最短路径,而统一成本搜索根据到目标节点的成本的最短路径。
此外,统一成本具有较少的空间需求,而优先级队列是“懒惰”填充的,这与 Dijkstra 的相反,后者在开始时以无限成本将所有节点添加到队列中。
【讨论】:
NotAUser、dreaMone 和 Bruno Calza 的其他答案汇编
Dijkstra 算法找到从根节点到每个其他节点的最短路径。 uniform cost 根据从根节点到目标节点的成本搜索最短路径。统一成本搜索是 Dijkstra 的算法,它专注于寻找到单个终点的最短路径,而不是到每个点的最短路径。
UCS 通过在找到终点后立即停止来执行此操作。对于 Dijkstra,没有目标状态,处理将继续,直到所有节点都从优先级队列中删除,即直到确定了到所有节点(不仅仅是目标节点)的最短路径。
UCS 的空间要求更少,优先级队列逐渐填充,而 Dijkstra 则在开始时以无限成本将所有节点添加到队列中。
由于以上几点,Dijkstra 比 UCS 更耗时
UCS 通常用于树,而 Dijkstra 用于一般图
Djikstra 仅适用于将整个图作为输入的显式图。 UCS 从源顶点开始,逐渐遍历图的必要部分。因此,它适用于显式图和隐式图(生成状态/节点的地方)。
【讨论】:
主要区别在于 Dijkstra 算法是在顶点数有限时定义的。它说将所有顶点放入队列中。但是当顶点数趋于无限时,我们不能将所有顶点放入队列中。 统一成本搜索是在这种情况下定义的,其中顶点的数量是未知的。
【讨论】:
【讨论】: