【发布时间】:2011-05-30 18:21:18
【问题描述】:
Tutte 和 Thomassen 有一个猜想(有限和无限图的平面性和对偶性,1979 年)这样说
可以得到一个3-连通图 通过连续添加一个轮子 边并将一个顶点一分为二 至少有度数的相邻顶点 三个这样的边缘连接它们 不包含在 3 个循环中。要是我们 应用更一般的拆分 操作(即,我们允许边缘 加入两个新顶点 包含在 3 个循环中),那么我们可以 从 K_4 开始,我们只需要 分裂操作,以 生成所有 3 连通图。
我正在尝试使用 iGraph 和 Python 来实现最后陈述的操作。
我想定义一个函数 splitVertex(g,v),获取一个图 g 和一个顶点 v,然后让它以操作定义的所有可能方式拆分 v。然后我想要一个所有这些新图表的列表,我会在它们上做一些进一步的工作。
此时,我有以下函数创建两个新顶点x和y,这将是分割后新创建的顶点。
def splitVertex(g,v):
numver = g.vcount()
g.add_vertices(2)
x = numver
y = numver+1
g.add_edges([(x,y)])
有人可以帮我用一个很好的方法来实现它吗?我知道这会产生大量数据,但没关系,我有足够的时间;)
编辑:当然,这必须以某种方式控制,因为 3 连通图的数量是无限的,但这不是这个问题所关心的。
【问题讨论】:
-
您听起来好像认为 3 连通图的数量是有限的,但事实并非如此,因此您无法生成 all。证明:取两个 3 连通图,在它们之间添加 3 条合适的边,你就有了一个新的 3 连通图。无限重复。
-
@THC4k:嗯,是的;但是对于给定的具有 n 个节点的 3 连通图,如何生成所有 3 连通的 n+1 节点后代?我一直在纸上画出来,我也有点摸不着头脑!
-
我不认为3-连通图的数量是有限的,但是n个顶点上的3-连通图的数量肯定是有限的。
标签: python algorithm graph graph-theory igraph