Dijkstra 算法和 Bellman Ford 算法的时间复杂度不应该分别是O(|V|^2)
和吗?O(|V|^3)
我一直在从这里和这里阅读他们的伪代码。
Bellman Ford 算法和 Dijkstra 算法看起来非常相似,除了 Bellman Ford 算法在|V|
时间上与 Dijkstra 算法执行相同的过程(其中|V|
是节点数)。那么为什么我访问的关于这个主题的每一篇文章都说 Dijkstra算法运行在时间复杂度上,O(|v|^2)
而 Bellman Ford 算法运行在O(|V||E|)
时间复杂度上?我哪里做错了(如果我真的做错了)?
更新:你不觉得:
|E| = (|V|^2 - |V|)/ 2
如果每个节点都连接到其他节点?所以让我们假设每个节点都与其他节点相连。现在我们得到,O(|V|^3)
对于贝尔曼福特算法。我对吗?
所以我们有O(|V||E|)
= O(|V|(|V|^2 - |V|)/2) = O(|V|^3)
。是对的吗?如果没有,我哪里做错了?