我刚刚看过以下视频:https://youtu.be/2E7MmKv0Y24?t=1335
它讨论了一种算法,该算法可找到DAG中源与给定顶点之间的最短距离:
1。按拓扑顺序对图进行排序,并以线性形式表示图
2.将除源之外的所有顶点初始化为无穷大,源被初始化为0
3.从源迭代到最右边的顶点。对于每个顶点u,将其所有相邻v的距离更新为min((源与v之间的距离,(源与u之间的距离)+(u与v之间的距离))
教授说,大约在22:00,该算法适用于负边缘,但是图形不能包含循环,但是我认为该算法适用于包含非负循环的图形。我对吗?
另一个问题是,为什么我需要先对图进行拓扑排序?为什么我不能仅遍历每个邻居并计算与他们的距离?