【问题标题】:Find shortest path in graph algorithm在图算法中找到最短路径
【发布时间】:2019-11-19 08:34:21
【问题描述】:

我刚刚看过这个视频:https://youtu.be/2E7MmKv0Y24?t=1335
它讨论了一种算法,该算法在 DAG 中找到源和给定顶点之间的最短距离:

1.对图进行拓扑排序,并以线性形式表示图
2.初始化除源点外的所有顶点为无穷大,源点初始化为0
3.从源迭代到最右边的顶点。对于每个顶点 u,将其所有邻居 v 的距离更新为 min((source 和 v 之间的距离), (source 和 u 之间的距离) + (u 和 v 之间的距离))

大约22:00,教授说这个算法适用于负边但图不能包含循环,但我认为该算法适用于包含非负循环的图。我说的对吗?

【问题讨论】:

  • 您可以将其内容以文本形式放在这里,而不是发布视频吗?他在说什么算法?

标签: algorithm shortest-path dijkstra


【解决方案1】:

...,但我认为该算法适用于包含非负循环的图。我说的对吗?

是的,你是对的。请参阅this post 了解更多信息。

另一个问题是为什么我需要先对数组进行拓扑排序?为什么我不能遍历每个邻居并计算到他们的距离?

如果我正确理解了这个问题,您就不能只去任何下一个节点,因为首先使用另一个节点可能会有更短的方法到达这个节点(例如,到达一个节点的成本是 5,还有另一种方法可以到达使用成本为 1 + 1 = 2 的两个节点的节点;如果在这种情况下不先排序,则会使用错误的路径)

【讨论】:

    【解决方案2】:

    我意识到我显然是不正确的。如果图有环,则不可能进行拓扑排序。

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 1970-01-01
      • 2013-12-15
      • 2015-09-12
      • 2013-12-03
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多