繁体   English   中英

为什么我们不能使用经过修改的 BFS 在加权图中找到最短路径

[英]Why can't we use BFS with modifications to find shortest paths in weighted graphs

我看到了这篇关于如何到达从源 (u) 到目的地 (v) 的所有最短路径的帖子 如果算法在 O(E + V) 下工作,为什么我们不能将它(稍作修改后)用于加权图? 为什么我们在 Djikstra 的最短路径算法中使用优先队列?

在非加权图中,下图中从 A 到 C 的最短路径不可能经过 B。

         A ----- B
          \     /
           \   /
            \ /
             C

这就是为什么在非加权图中,只用一条边扩展当前搜索路径就足够了:在第一个循环中,我们查看 AB 和 AC 并确定我们已经命中 C,因此 AC 是最短路径。

对于加权图,这种工作方式可能会导致错误的结果。 以下是一些权重:

         A --1-- B
          \     /
           3   1
            \ /
             C

这里路径 AB 和 AC 也是候选路径(就像在未加权图中),但是一旦访问了 AB,优先级队列将收到 BC(作为 AB 的扩展),并且路径将优先于 AC! 这是在未加权图中永远不会发生的情况,因此优先级队列仅在处理加权图时才有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM