Loading docs/graph/shortest-path.md +9 −9 Original line number Diff line number Diff line Loading @@ -222,15 +222,15 @@ IPA:/ˈdikstrɑ/或/ˈdɛikstrɑ/。 如果用暴力: $O(n^2 + m) = O(n^2)$ 。 如果用堆 $O((n+m) \log n)$ 。 如果用堆 $O(m \log n)$ 。 如果用 priority_queue: $O((n+m) \log m)$ 。 如果用 priority_queue: $O(m \log m)$ 。 (注:如果使用 priority_queue,无法删除某一个旧的结点,只能插入一个权值更小的编号相同结点,这样操作导致堆中元素是 $O(m)$ 的) 如果用线段树(ZKW 线段树): $O(m \log n + n) = O(m \log n)$ 如果用 Fibonacci 堆: $O(n \log n + m) = O(n \log n)$ (这就是为啥优秀了)。 如果用 Fibonacci 堆: $O(n \log n + m)$ (这就是为啥优秀了)。 等等,还没说正确性呢! Loading Loading @@ -329,7 +329,7 @@ Johnson 算法则通过另外一种方法来给每条边重新标注边权。 ## 不同方法的比较 | Floyd | Bellman-Ford | Dijkstra | Johnson | | ---------- | --------------- | -------------- | --------------- | | ---------- | ------------ | ------------------ | ------------------------ | | 每对结点之间的最短路 | 单源最短路 | 单源最短路 | 每对结点之间的最短路 | | 没有负环的图 | 任意图(可以判定负环是否存在) | 非负权图 | 没有负环的图 | | $O(N^3)$ | $O(NM)$ | $O(M\log M)$ | $O(NM\log M)$ | Loading Loading
docs/graph/shortest-path.md +9 −9 Original line number Diff line number Diff line Loading @@ -222,15 +222,15 @@ IPA:/ˈdikstrɑ/或/ˈdɛikstrɑ/。 如果用暴力: $O(n^2 + m) = O(n^2)$ 。 如果用堆 $O((n+m) \log n)$ 。 如果用堆 $O(m \log n)$ 。 如果用 priority_queue: $O((n+m) \log m)$ 。 如果用 priority_queue: $O(m \log m)$ 。 (注:如果使用 priority_queue,无法删除某一个旧的结点,只能插入一个权值更小的编号相同结点,这样操作导致堆中元素是 $O(m)$ 的) 如果用线段树(ZKW 线段树): $O(m \log n + n) = O(m \log n)$ 如果用 Fibonacci 堆: $O(n \log n + m) = O(n \log n)$ (这就是为啥优秀了)。 如果用 Fibonacci 堆: $O(n \log n + m)$ (这就是为啥优秀了)。 等等,还没说正确性呢! Loading Loading @@ -329,7 +329,7 @@ Johnson 算法则通过另外一种方法来给每条边重新标注边权。 ## 不同方法的比较 | Floyd | Bellman-Ford | Dijkstra | Johnson | | ---------- | --------------- | -------------- | --------------- | | ---------- | ------------ | ------------------ | ------------------------ | | 每对结点之间的最短路 | 单源最短路 | 单源最短路 | 每对结点之间的最短路 | | 没有负环的图 | 任意图(可以判定负环是否存在) | 非负权图 | 没有负环的图 | | $O(N^3)$ | $O(NM)$ | $O(M\log M)$ | $O(NM\log M)$ | Loading