首先请注意,此问题不询问 MST ,而只是all possible spanning trees
。
所以不与finding all minimal spanning trees或All minimum spanning trees implementation相同
我只需要从图表中生成所有可能的spanning trees
。
我认为蛮力的方式很直接:
假设我们有V
个节点和E
个边缘。
V-1
边缘获取E
的所有可能组合。non-spanning-tree
(对于生成树,一组V-1
边内的所有节点应恰好出现一次)但是我认为面对大图时它太慢了。
我们有更好的方法吗?
答案 0 :(得分:10)
将所有边的权重设置为相同的值,然后使用算法查找所有最小生成树。由于所有生成树都有|V|-1
条边且所有边权重相等,因此所有生成树都将是最小生成树。
答案 1 :(得分:2)
我对这个问题感兴趣,还没有找到一个真正令人满意的答案。但是,我发现了许多参考文献:Knuth的算法S和S'在TAOCP第4卷第4章中,paper by Sorensen and Janssens和GRAYSPAN,SPSPAN和GRAYSPSPAN由Knuth提供。太糟糕了,没有一种是用我能用的语言实现的......我想我不得不花一些时间来编写这些......