如何找到无向图的两个不相交的生成树

时间:2010-07-17 14:00:45

标签: algorithm graph-theory

是否有任何适用的方法可以找到无向图的两个不相交的生成树或检查某个图是否有两个不相交的生成树

4 个答案:

答案 0 :(得分:3)

这是Matroid联盟的一个例子。考虑图形拟阵,其中基础由生成树给出。现在这个拟阵与自身的结合再次是一个拟阵。你的问题是这个拟阵的基础大小。 (是否存在大小为$ 2(| V | -1)$的基础。

这种规范算法是Matroid分区算法。存在一种算法,它执行以下操作:它维护一组边缘,并将其分区为两个林。在给定新边缘$ e $的每个步骤中,它决定是否存在当前分区重新排列到新分区中,使得新边缘可以被添加到集合中并且分区保持独立。如果没有,它会以某种方式提供它不能的证书。

有关详细信息,请查看Comb中的课程。优化或Schriver的书。

答案 1 :(得分:2)

不确定它在适用方面有多大帮助,但Tutte [1961a]和Nash-Williams [1961]独立地表征了具有k个成对边缘不相交的生成树的图:

图G具有k个成对边缘不相交的生成树 iff 对于G的顶点的每个分区为r集,至少有k个(r-1)个边的G,其端点是在不同的分区集中。

使用k = 2,它可以帮助您满足您的需求。

答案 2 :(得分:1)

根据A Note on Finding Minimum-Cost Edge-Disjoint Spanning Trees,这可以在 O(k 2 n 2 中解决,其中 k < / em>是不相交的生成树的数量, n 是顶点的数量。

不幸的是,除文章的第一页外,其他所有页面都在付费墙后面。

答案 3 :(得分:0)

假设希望找到具有不相交边集的生成树,那么:

  1. 给出图G确定G的minimum spanning tree A
  2. 通过删除G中也位于A的所有边缘来定义B = G - A.
  3. 检查B是否已连接。
  4. 最小生成树的本质在某种程度上让我直觉地认为选择它作为两棵生成树之一给你最大的自由来构建另一棵树(希望结果是边缘析取)。

    你们有什么想法?

    修改

    上述算法没有意义,因为spanning treetree,因此需要是非循环的。但不能保证B = G - A是非循环的。

    但是,这些观察结果(thx @Tormer)让我想到了另一个想法:

    1. 给定图G确定G的最小生成树A.
    2. 定义B =(V [G],E [G] \ E [A])其中V [G]描述G的顶点,E [G]描述G(A)的边缘。
    3. 确定B是否有生成树。
    4. 很可能上述算法失败了,尽管G确实有两个边缘析取生成树 - 其中没有一个是G的最小生成树。我无法判断这个(现在),所以我要求你的意见,如果总是选择最小生成树作为两者中的一个是明智的。