假设我们找到了一棵最小的生成树。现在,我们只需要在MST中从A到Z的路径。我们怎样才能在O(n ^ 2)时间内做到这一点?
我们从根A开始。然后我们查看树形式Ax中的所有边(其中x是任何顶点)。
然后,我们发现:AB,AC,AD等...... 然后对于每一个,我们寻找形式的边缘:Bx,Cx,Dx ......这显然不是O(n ^ 2)。
那么找到路径A的更好/更有效的方法是什么? Z给出了MST?
由于
答案 0 :(得分:5)
Depth-first search就足够了,最坏的情况是 O(| V | + | E |)。输入是MST的事实意味着您不必担心任何循环检测,就像在一般图表中一样。
答案 1 :(得分:0)
查找Minimum Spanning Tree,您会发现它是将所有顶点连接在一起的最小子图。这意味着每个边缘将在最多一次使用。您可以使用DFS或BFS来查找所需的路径,而无需检查周期,因为您已经拥有MST。
答案 2 :(得分:0)
在创建MST期间,您可以填充parent [],因此在使用简单的回溯之后,您将能够找到没有DFS的路径。
答案 3 :(得分:0)
如果你考虑一下,Prim的寻找MST的算法实际上只是Dijkstra的伪装。因此,如果找到MST,MST已经为您提供了最短的路径(如上所述,想想DFS)。