采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师, 对图中每一条边,至少进行V-1次松驰操作,但是无向图每条边都有两个方向,所以我脑海中是认为2*(V-1)次松驰操作 才能确定从源s点到图中其它点的最短距离
bellman-ford 算法需要 V - 1 轮松弛操作,这是和整张图中有多少边无关。整张图中有多少边,影响的是每一轮松弛操作要处理多少内容(每轮松弛操作要将所有的边松弛一遍。)
之所以进行 V - 1 次操作,是因为最短路最多只能经过 V 个顶点(即图中每个顶点都走一次)。
是的,对于无向图,在每一轮松弛操作中,每一条边的两个方向都要松弛。我们的代码也没有问题:https://git.imooc.com/coding-370/Play-with-Graph-Theory-Algorithm/src/master/12-Shortest-Path/08-Bellman-Ford-Algorithm/src/BellmanFord.java
在 22-23 这两重循环中,我们会将每一条边的两个方向取出来。这是因为对于我们的无向图存储,对于 v-w 这条边,g[v] 中会有 w,g[w] 中会有 v,对应我们建图代码的 41-42 行:https://git.imooc.com/coding-370/Play-with-Graph-Theory-Algorithm/src/master/12-Shortest-Path/08-Bellman-Ford-Algorithm/src/WeightedGraph.java
继续加油!:)
谢谢🙏
登录后可查看更多问答,登录/注册
30+小时系统学习,bobo带你克服被图论支配的恐惧
988 10
1.4k 9
1.6k 7
559 7
958 6