Tutte 和 Thomassen 有一个猜想(有限和无限图的平面性和对偶性,1979)说
一个 3 连通图可以通过连续添加一条边并将一个顶点分成两个至少三个度数的相邻顶点,使得连接它们的边不包含在 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 连通图的数量是无限的,但这不是这个问题所关心的。