我试图想出一个解决方案来找到使用 BFS 的无向加权图的单源最短路径算法。
我想出了一个解决方案,将每个边权重比如 x 转换为顶点之间的 x 边,每个新边的权重为 1,然后运行 BFS。我会得到一棵新的 BFS 树,因为它是一棵树,所以从根节点到每个其他顶点只存在 1 条路径。
我遇到的问题是试图提出对以下算法的分析。每条边需要被访问一次,然后根据其权重分割成相应数量的边。然后我们需要找到新图的 BFS。
访问每条边的成本是 O(m),其中 m 是边数,因为每条边都被访问一次以分割它。假设新图有 km 边(比如 m')。BFS 的时间复杂度为 O (n + m') = O(n + km) = O(n + m) 即时间复杂度保持不变。给定的证明是否正确?
我知道我可以在这里使用 Dijkstra 算法,但我对分析这种基于 BFS 的算法特别感兴趣。