【问题标题】:What's the difference between uniform-cost search and Dijkstra's algorithm?统一成本搜索和 Dijkstra 算法有什么区别?
【发布时间】:2012-10-09 18:47:06
【问题描述】:

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

【问题讨论】:

    标签: graph artificial-intelligence


    【解决方案1】:

    Dijkstra 的算法,也许比较有名,可以考虑 作为统一成本搜索的一种变体,其中没有目标状态,并且 处理继续,直到所有节点都已从 优先级队列,即直到所有节点的最短路径(不仅仅是一个 目标节点)已确定

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

    【讨论】:

    • 维基百科上的两个页面现已合并。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      UCS 通常用于树,而 Dijkstra 用于一般图

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          有一篇论文讨论了两者的异同。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-10-10
            • 2017-06-20
            • 2018-07-30
            • 2012-12-18
            • 2012-05-27
            • 1970-01-01
            相关资源
            最近更新 更多