如何找到无向图的生成树不需要 MST?

问题描述

我知道解决这个问题的蛮力方法,可以给出:

  1. 遍历所有边
  2. 取一组(或列表)(假设 s)
  3. 如果向 s 添加边不会形成循环,则向 s 添加
  4. 如果所有边的迭代都完成,则结束。

但我想要一个有效的解决方案(时间+空间)来解决这个问题。

所以,任何帮助将不胜感激.......

解决方法

假设图是连通的(否则不存在生成树):从任意一个顶点开始,在图中执行depth-first search,记录每个顶点是否已经被访问过,并将每条边输出到一个您遇到的未访问顶点。这些边构成一棵生成树,因为它们是无循环的并且访问每个顶点。

这需要 O(|V|+|E|) 时间和 O(|V|) 空间。