【问题标题】:Shortest path through certain vertex in directed graph有向图中通过某个顶点的最短路径
【发布时间】:2012-10-08 07:21:39
【问题描述】:

假设我们有一个具有正边权重的强连通有向图 G (V,E),并且 V0 属于 V。编写一个算法来找到所有节点对之间通过 V0 的最短路径

面试题。显然我们可以使用需要 O(VE) 的 Bellman-Ford。

但是必须存在更好的解决方案。有什么帮助吗?

【问题讨论】:

  • Bellman Ford 是单一来源,因此所有与 Bellman Ford 的配对都需要 O(V^2E),在最坏的情况下可能会上升到 O(V^4)。所有对最短路径都可以用 Floyd-Warshall @ O(V^3) 完成。
  • 在 Google 上搜索所有对最短路径。有很多有趣的结果。

标签: algorithm


【解决方案1】:

我认为您甚至可以使用 Dijkstra 算法。运行一次以找到从 V0 到所有其他顶点的最短路径,然后再次找到从每个其他顶点到 V0 的最短路径(这与在具有反向边的图上运行常规 Dijkstra 相同)。然后对于任何一对 (V1,V2) 连接从 V1 到 V0 以及从 V0 到 V2 的路径。

【讨论】:

  • 请注意,如果存在问题,通过此方法找到的路径可能不是简单。 (这个问题只字未提,但它对未来的读者是否重要)。
  • 正确。但是,即使存在从 V1 通过 V0 到 V2 的简单路径也不能保证。
  • 强连接性保证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2015-08-05
相关资源
最近更新 更多