Dijkstra算法与统一成本搜索(时间复杂度)

时间:2012-10-19 14:56:04

标签: dijkstra ucs

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

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

由于统一成本搜索与Dijkstra(稍微不同的实现)相同,因此UCS的运行时间应该类似于Dijkstra,对吧?然而,根据我的AI类,统一成本搜索在最坏的情况下是指数的,它需要O(b 1 + [C * /ε] ),其中C *是最优的成本解。 (b是分支因子)

两种算法在运行时间不同时如何相同?运行时间是否相同,但我们看待它的方式是不同的?

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

1 个答案:

答案 0 :(得分:3)

  

运行时间是否相同,但我们看待它的方式不同?

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