【问题标题】:Dijkstra's algorithm Vs Uniform Cost Search (Time comlexity)Dijkstra 算法与统一成本搜索(时间复杂度)
【发布时间】:2012-10-10 05:25:30
【问题描述】:

我的问题如下:根据不同的消息来源,Dijkstra 的算法只不过是统一成本搜索的一种变体。我们知道 Dijkstra 的算法会找到源和所有目的地(单源)之间的最短路径。但是,我们总是可以修改 Dijkstra 以找到 START 和 GOAL 状态之间的最短路径(当目标从优先级队列中弹出时,我们只需停止);但是这样做,最坏的情况仍然是找到从 START 到所有其他节点的最短路径(假设目标是图中最远的节点)。

如果我们使用最小优先级堆实现 Dijkstra 算法,运行时间将为 O(V log V +E) ,其中 E 是边数,V 是顶点数。

既然 Uniform Cost Search 和 Dijkstra 一样(实现方式略有不同),那么 UCS 的运行时间应该和 Dijkstra 差不多吧?然而,根据我的 AI 课程,统一成本搜索在最坏的情况下是指数级的,它需要 O(b1 + [C*/ε]),其中 C* 是最优的成本解决方案。 (b是分支因子)

两种算法如何在运行时间不同的情况下相同?运行时间是一样的,但我们看待它的方式不同吗?

感谢您的帮助 :):) 谢谢

【问题讨论】:

    标签: dijkstra ucs


    【解决方案1】:

    运行时间是一样的,但我们看待它的方式不同吗?

    是的。统一成本搜索可用于无限大的图,Dijkstra 的原始算法永远不会终止。在这种情况下,用 VE 来定义复杂性是没有用的,因为两者都可能是无限的,并且生成的大 O 数字毫无意义。

    【讨论】:

    • 让我们坚持使用有限图(也许非常大,但仍然是有限的)。那么如何证明两种算法的运行时间相同呢?
    • @John:重写任一算法的伪代码,直到找到另一个。这可能很棘手,因为 Dijkstra 通常用于完全存储在内存中的有限图,但 UCS 用于表示为边生成函数的潜在无限图。
    • 我同意你所说的,但在我的例子中,我想证明的是:给定一张城市地图(一个图表),我想证明两种算法具有相同的时间复杂度找到最优解
    猜你喜欢
    • 2013-10-12
    • 1970-01-01
    • 2020-09-22
    • 2021-04-22
    • 1970-01-01
    • 2020-04-15
    • 2017-10-24
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多