Существует гипотеза Тутте и Томассена (Планарность и двойственность конечных и бесконечных графов, 1979), говорящая об этом.
Трехсвязный граф может быть получен из колеса путем последовательного добавления ребра и разбиения вершины на две смежные вершины степени не менее трех, так что соединяющее их ребро не содержится в 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)])
Может ли кто-нибудь помочь мне с хорошим способом реализовать это? Я знаю, что это сгенерирует огромное количество данных, но это нормально, у меня много времени;)
Изменить: Конечно, это нужно каким-то образом контролировать, поскольку количество трехсвязных графов бесконечно, но это не то, что касается этого вопроса.