当我使用python-igraph
尝试以下内容时:
from igraph import *
g= Graph()
g.add_vertices(3)
g.vs["name"] = ["0", "1", "3"]
g.add_edge("0", "1", weight=0.0)
g.add_edge("1", "3", weight=10.0)
g.add_edge("0", "3", weight=10.0)
t = g.gomory_hu_tree(capacity="weight")
print t
我得到了输出:
IGRAPH UNW- 3 2 --
+ attr: name (v), flow (e), weight (e)
+ edges (vertex names):
0--1, 1--3
这没有任何意义,因为顶点" 3"通过具有高权重的边缘连接到其他顶点。因此,最小切割树t
应该是具有中心" 3"的星。显然情况并非如此......
答案 0 :(得分:0)
算法工作正常。断开任意两个节点的最低成本是10.0。作为该图的子图的所有树都是有效的Gomory-Hu树。事实上,对于任何K3来说都是这种情况,它有两个相同重量的边缘和三分之一的重量。
考虑蛮力方法。由于断开任意两个节点的最小成本是10.0,因此完整的最小切割图是与权重10.0的边连接的三个节点。通过对称性,该图具有三个同等有效的Gomory-Hu树,其由完整最小切割图的任意两个边组成。
所以0--1--3,1-3--0和3--0-1都是上图中可接受的Gomory-Hu树。
事实上,对于n个节点的任何图形,它具有完整的最小切割图,所有边都相等,Gomory-Hu树是连接每个节点的任何树。