在无向图中任意两个节点之间查找路径的有效方法

时间:2016-08-31 12:54:22

标签: graph breadth-first-search

我得到了一个无向图,其中所有具有相同权重的边和所有顶点都是连通的。我想在任何给定的顶点对之间找到路径。

效率较低的解决方案是: 要从其中一个顶点开始执行BFS,请跟踪已访问的顶点,直到到达目标顶点。这将在O(V + E)中执行。但是必须对给定的每对顶点进行此操作。因此,如果有多个查询要查找路径,则复杂度为O(M *(E + V))。

我们可以做得更好吗?是否可以利用BFS的输出并解决剩下的问题?

1 个答案:

答案 0 :(得分:0)

当您声明图表已连接时,无需多次调用图表的搜索算法。使用对BFS(或DFS,这应该没有重大区别)的单个调用就足以为输入生成生成树。从问题陈述中可以看出,在顶点之间找不到最短路径,任何一对(a,b)个顶点都是通过从a到根{{}}的路径连接的。生成树的{1}}以及从rr的路径。

运行时为b,即搜索算法的运行时间;生成实际路径本身可能需要额外的计算成本。