【发布时间】:2014-06-11 10:45:33
【问题描述】:
我正在尝试使用图论编写一个抽象算法。
给定一个无向无权图 G=(V,E),两个顶点:m,n∈V 和一条特定边 e∈E。我想检查边 e 是否是 m 和 n 之间所有最短路径的一部分。
我的算法:
- 从 m 开始执行 BFS 扫描,直到到达 n。 \\O(V+E)
- int temp
- 布尔 ret \\ O(1)
- 从 G 中取出边 e。\\O(1)
-
从 m 开始 BFS 扫描直到到达 n \\ O(V+E)
- 如果 d[n] = ∞, ret
- 如果 d[n] == temp, ret
- 如果 d[n] > temp, ret
将边 e 返回到 G.\\O(1)
- 返回 ret
时间复杂度分析: O(V+E)
内存分析: temp 和 ret 额外的 O(2)。
你说什么?它是正确的,还是您有一个时间复杂度更低的更好主意?
【问题讨论】:
标签: algorithm graph graph-theory