igraph的Gomory-Hu树不工作?

时间:2014-08-13 22:49:00

标签: python graph igraph

当我使用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"的星。显然情况并非如此......

1 个答案:

答案 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树是连接每个节点的任何树。