TutteとThomassen(有限グラフと無限グラフの平面性と双対性、1979年)による推測があります。
3連結グラフは、エッジを連続して追加し、頂点を2つの隣接する頂点に少なくとも3度分割して、それらを結合するエッジが3サイクルに含まれないようにすることでホイールから取得できます。より一般的な分割操作を適用する場合(つまり、2つの新しい頂点を結合するエッジを3サイクルに含めることができる場合)、K_4から始めることができ、3つすべてを生成するために必要なのは分割操作のみです。 -接続されたグラフ。
PythonでiGraphを使用して、最後に述べた操作を実装しようとしています。
関数splitVertex(g、v)を定義し、グラフgと頂点vを取得してから、操作で定義されているすべての可能な方法でvを分割します。次に、これらすべての新しいグラフのリストが必要です。さらに作業を行います。
この時点で、次の関数を使用して、2つの新しい頂点xとyを作成します。これは、分割後に新しく作成された頂点になります。
def splitVertex(g,v):
numver = g.vcount()
g.add_vertices(2)
x = numver
y = numver+1
g.add_edges([(x,y)])
誰かがこれを実装するための良い方法で私を助けてくれますか?これにより大量のデータが生成されることはわかっていますが、それでも問題ありません。十分な時間があります;)
編集:もちろん、3接続されたグラフの数は無限であるため、これは何らかの方法で制御する必要がありますが、それはこの質問が関係することではありません。