【发布时间】:2021-04-18 06:19:36
【问题描述】:
我是 Dijkstra 算法的新手。
我的问题是:对于具有 n 个节点和 m 个边的无向图 G,Dijkstra 算法找到最短路径的时间复杂度是 o((n+m)logn)。但是如果G是连通的,为什么这个时间复杂度也可以表示为o(mlogn)呢?
干杯
【问题讨论】:
-
你用过 little-o,但你的意思是 big theta 吗?
标签: algorithm
我是 Dijkstra 算法的新手。
我的问题是:对于具有 n 个节点和 m 个边的无向图 G,Dijkstra 算法找到最短路径的时间复杂度是 o((n+m)logn)。但是如果G是连通的,为什么这个时间复杂度也可以表示为o(mlogn)呢?
干杯
【问题讨论】:
标签: algorithm
如果它没有连接,比如说只有一条边(m=1),那么它可能是o(nlgn)。这就是为什么在一般情况下它是 o((m+n)lgn)。
如果是连通的,应该有一棵树连接整个图(长度为n-1),所以m至少为n-1:(m>=n-1)。因此,对于小 O 表示法(小 O:f 渐近地由 g 主导),我可以将 n 替换为 m: o((m+1+m)lgn) "=" o(mlgn)
【讨论】: