图论中有一个Tutte和Thomassen的猜想(《有限和无限图的平面性和对偶性》,1979年)如下:
一个3连通图可以通过以下操作得到:从一个轮子(wheel)开始,依次添加边并将一个度数至少为3的顶点分裂成两个相邻的顶点,使它们之间的边不包含在一个3-环中。如果我们使用更一般的分裂操作(即允许连接两个新顶点的边被包含在一个3-环中),则我们可以从K_4开始,并且只需要进行分裂操作就可以生成所有的3连通图。
我正在尝试使用Python中的iGraph实现上述操作。
我想定义一个函数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连通图的数量是无限的,但这不是该问题所关注的。