【问题标题】:shortest path between all vertex using bfs使用 bfs 的所有顶点之间的最短路径
【发布时间】:2016-10-30 14:08:39
【问题描述】:

我正在学习图论,我需要帮助。 我需要使用 bfs 计算图中所有顶点之间的最短路径的算法。我知道 bfs 是如何工作的,但我不知道“重新制作”该算法以找到图中所有顶点之间的最短路径。

【问题讨论】:

  • 找到所有顶点之间的最短路径是什么意思?可以提供输入输出吗?
  • 如果你给出的图有顶点 A、B、C、D 并且它们都是可达的,我需要 A-B、A-C、A-D、B-C、B-D、C-D 之间的路径
  • 为每个顶点运行它?
  • 是的,对于每个顶点

标签: algorithm graph pseudocode breadth-first-search


【解决方案1】:

正如 Yerken 所说,最简单的方法是为每个节点重复 BFS。它的时间复杂度是 O( (v+e)*v ),其中 v 和 e 分别是顶点和边的数量。 O(1)

您也可以尝试使用 O(v^3) 的 Floyd-Warshall 算法,但它只给您距离,而不是路径。

【讨论】:

  • Dijkstra 的时间复杂度为O(E + V*log(V))。因此,从所有顶点重复 Dijkstras 会使时间复杂度增加。 O(V*(E + V*log(V)))。 BFS 总是比 Dijkstras 快,但在权重不相等的边缘时不能使用。
猜你喜欢
  • 2018-09-18
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多