使用 Bellman-Ford 算法的简单图遍历
simple graph traversal using the Bellman-Ford algorithm
我有点卡在一个问题中,我们应该在 运行 Bellman-Ford 算法的两次迭代之后填写值有向图。
我相信我理解第一次迭代,并且我理解 "relaxing edge weights" 的概念,因为找到了更短的路径。但是,我看不出在这个特定问题中,第二次迭代如何产生比第一次迭代中的路径更短的路径。
例如,我知道通过从节点 A 开始到节点 'B' 然后再到节点 'C' 的路径访问节点 'C' 总共有 "cost" of 6+8 = 14。但是,因为这个图的遍历顺序是:AB, AC, BC, BD, 等等,所以永远不会节省通过节点 B (14) 到达节点 C 的成本,因为已经找到了直接从 A 到 C 的更短路径(成本为 7)我看不出任何额外的迭代如何提供从 A 到 C 的更短路径长度,例如这似乎是后续的重要性迭代。
仔细检查后发现数据确实是正确的。从某种意义上说,这只是一个格式不正确的问题,在这种特殊情况下,第二次迭代不会产生任何进一步的 "relaxation" 边,因此会误导那些希望在第二次迭代中看到差异的人。
我有点卡在一个问题中,我们应该在 运行 Bellman-Ford 算法的两次迭代之后填写值有向图。
我相信我理解第一次迭代,并且我理解 "relaxing edge weights" 的概念,因为找到了更短的路径。但是,我看不出在这个特定问题中,第二次迭代如何产生比第一次迭代中的路径更短的路径。
例如,我知道通过从节点 A 开始到节点 'B' 然后再到节点 'C' 的路径访问节点 'C' 总共有 "cost" of 6+8 = 14。但是,因为这个图的遍历顺序是:AB, AC, BC, BD, 等等,所以永远不会节省通过节点 B (14) 到达节点 C 的成本,因为已经找到了直接从 A 到 C 的更短路径(成本为 7)我看不出任何额外的迭代如何提供从 A 到 C 的更短路径长度,例如这似乎是后续的重要性迭代。
仔细检查后发现数据确实是正确的。从某种意义上说,这只是一个格式不正确的问题,在这种特殊情况下,第二次迭代不会产生任何进一步的 "relaxation" 边,因此会误导那些希望在第二次迭代中看到差异的人。