Существует гипотеза Тутте и Томассена (Планарность и двойственность конечных и бесконечных графов, 1979), говорящая это
3-связный граф можно получить из колеса, последовательно добавив реброи разбиение вершины на две смежные вершины степени, по меньшей мере, трех, так что соединяющее их ребро не содержится в 3-цикле.Если мы применим более общую операцию расщепления (т. Е. Мы позволим ребру, соединяющему две новые вершины, содержаться в 3-цикле), то мы можем начать с K_4, и нам понадобится только операция расщепления, чтобы сгенерировать все 3графы.
Я пытаюсь реализовать последнюю заявленную операцию, используя iGraph с Python.
Я хочу определить функцию splitVertex (g, v), принимая граф gи вершина 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-соединенных графовбесконечен, но это не то, к чему относится этот вопрос.