Graph 无向图中任意两个节点间路径的有效求法

Graph 无向图中任意两个节点间路径的有效求法,graph,breadth-first-search,Graph,Breadth First Search,我得到了一个无向图,所有的边都有相同的权重,所有的顶点都是连通的。我想找到任意给定顶点对之间的路径 效率较低的解决方案是: 要从其中一个顶点开始执行BFS,请跟踪访问的顶点,直到到达目标顶点。这将在O(V+E)中执行。但这必须对给定的每一对顶点进行。因此,如果有M个查询要查找路径,复杂性将是O(M*(E+V)) 我们能做得更好吗?是否可以利用BFS的输出并解决其余问题?当您声明图形已连接时,无需多次调用图形的搜索算法。使用对BFS(或DFS)的单个调用就足以为输入生成生成生成树。根据您的问题陈述

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

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


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

当您声明图形已连接时,无需多次调用图形的搜索算法。使用对BFS(或DFS)的单个调用就足以为输入生成生成生成树。根据您的问题陈述,显然不需要在顶点之间找到最短路径,任何一对
(a,b)
顶点都通过
a
到生成树根
r
的路径和
r
b
的路径连接


运行时间为
O(V+E)
,即te搜索算法的运行时间;生成实际路径本身可能需要额外的计算成本。

当您声明图形已连接时,无需多次调用图形的搜索算法。使用对BFS(或DFS)的单个调用就足以为输入生成生成生成树。根据您的问题陈述,显然不需要在顶点之间找到最短路径,任何一对
(a,b)
顶点都通过
a
到生成树根
r
的路径和
r
b
的路径连接

运行时间为
O(V+E)
,即te搜索算法的运行时间;生成实际路径本身可能需要额外的计算成本