algorithm - 使用 Bellman-Ford 算法的简单图遍历

标签 algorithm directed-graph bellman-ford

<分区>

我有点卡在一个问题中,我们应该在基本有向图上运行 Bellman-Ford 算法的两次迭代后填充值。

我相信我理解第一次迭代,并且我理解“松弛边权重”的概念,因为找到了更短的路径。但是,我看不出在这个特定问题中,第二次迭代如何产生比第一次迭代中的路径更短的路径。

例如,我知道通过从节点 A 开始的路径访问节点“C”,然后转到节点“B”,然后转到节点“C”的总“成本”为 6+8 = 14然而,因为这个图的遍历顺序是:AB,AC,BC,BD,等等,通过节点 B(14)到达节点 C 的成本将永远不会被节省,因为从 A 直接到 C 的更短路径将有已经找到(产生 7 的成本)我看不出任何额外的迭代如何给出从 A 到 C 的更短路径长度,例如这似乎是后续迭代的重要性。

Bellman-Ford algorithm homework problem

最佳答案

经过仔细检查,数据似乎确实正确。从某种意义上说,这只是一个格式不正确的问题,在这种特殊情况下,第二次迭代不会产生任何进一步的边缘“松弛”,因此会误导那些希望在第二次迭代中看到差异的人。

关于algorithm - 使用 Bellman-Ford 算法的简单图遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53000433/

相关文章:

linux - 是什么让 gcc std::list 排序实现如此之快?

java - 删除包含另一个文件中不存在的数据的文件行

java - 如何找到小于给定数的2的最大次方

algorithm - 在 1-NN 图中查找连通分量的快速方法?

algorithm - 关于 Floyd-Warshall、Dijkstra 和 Bellman-Ford 算法之间的区别,我是否正确?

c++ - 图中的最短路径

java - 递归 - 在二进制表示中查找 1 的连续计数

python - 在 NetworkX 的有向图中查找后继者的后继者

algorithm - Scala 中的邻接表路径

c++ - 贝尔曼福特邻接矩阵的单源最短路径未检测到负循环