我得到了一个无向图,其中所有具有相同权重的边和所有顶点都是连通的。我想在任何给定的顶点对之间找到路径。
效率较低的解决方案是: 要从其中一个顶点开始执行BFS,请跟踪已访问的顶点,直到到达目标顶点。这将在O(V + E)中执行。但是必须对给定的每对顶点进行此操作。因此,如果有多个查询要查找路径,则复杂度为O(M *(E + V))。
我们可以做得更好吗?是否可以利用BFS的输出并解决剩下的问题?
答案 0 :(得分:0)
当您声明图表已连接时,无需多次调用图表的搜索算法。使用对BFS(或DFS,这应该没有重大区别)的单个调用就足以为输入生成生成树。从问题陈述中可以看出,在顶点之间找不到最短路径,任何一对(a,b)
个顶点都是通过从a
到根{{}}的路径连接的。生成树的{1}}以及从r
到r
的路径。
运行时为b
,即搜索算法的运行时间;生成实际路径本身可能需要额外的计算成本。