如何从图形中有效地生成所有可能的生成树

时间:2014-03-02 13:54:06

标签: algorithm data-structures graph tree

首先请注意,此问题询问 MST ,而只是all possible spanning trees

所以finding all minimal spanning treesAll minimum spanning trees implementation相同


我只需要从图表中生成所有可能的spanning trees

我认为蛮力的方式很直接:

假设我们有V个节点和E个边缘。

  1. 获取图表的所有边缘
  2. V-1边缘获取E的所有可能组合。
  3. 从组合中筛选出non-spanning-tree(对于生成树,一组V-1边内的所有节点应恰好出现一次)
  4. 但是我认为面对大图时它太慢了。

    我们有更好的方法吗?

2 个答案:

答案 0 :(得分:10)

将所有边的权重设置为相同的值,然后使用算法查找所有最小生成树。由于所有生成树都有|V|-1条边且所有边权重相等,因此所有生成树都将是最小生成树。

答案 1 :(得分:2)

我对这个问题感兴趣,还没有找到一个真正令人满意的答案。但是,我发现了许多参考文献:Knuth的算法S和S'在TAOCP第4卷第4章中,paper by Sorensen and JanssensGRAYSPANSPSPANGRAYSPSPAN由Knuth提供。太糟糕了,没有一种是用我能用的语言实现的......我想我不得不花一些时间来编写这些......