2015-06-05 5 views
2

Я работаю с графиками NetworkX в Python, и мне хотелось бы найти подграфы Kuratowski любого заданного графика, который у меня есть.Python Library для теста на плоскость Boyer-Myrvold или идентификация подграфа Kuratowski

Алгоритм тестирования планарного графа Boyer-Myrvold может возвращать существующий подграф Kuratowski, если граф не является плоским (O (n) в числе вершин n), поэтому я надеялся, что уже может быть реализация этого алгоритм или аналогичный алгоритм в Python. Я до сих пор не смог его найти, и я немного неохотно реорганизую его из оригинальной исследовательской работы.

Это даже лучше, если он может легко взаимодействовать с библиотекой NetworkX для графиков.

ответ

3

Существует обертка Python для частичного плана Джоан Бойера (https://code.google.com/p/planarity/), который может быть тем, что вы ищете. Это на https://github.com/hagberg/planarity.

Он имеет интерфейс NetworkX, который позволяет вам проверять плоскостность и находить подграфы Kurotowski, если нет. например

https://github.com/hagberg/planarity/blob/master/examples/networkx_interface.py

import planarity 
import networkx as nx 
# Example of the complete graph of 5 nodes, K5 
G=nx.complete_graph(5) 
# K5 is not planar 
print(planarity.is_planar(G)) # False 
# find forbidden Kuratowski subgraph 
K=planarity.kuratowski_subgraph(G) 
print(K.edges()) # K5 edges 
+0

Спасибо! Это выглядит действительно обещающим, но я не могу заставить его работать. я получаю следующее сообщение об ошибке при попытке импортировать его: импорт плоскостности Traceback (самый последний вызов последнего): Файл «», строка 1, в Файла «./planarity/planarity/__init__.py», line 2, in from .planarity import PGraph ImportError: Нет модуля с именем planarity –

+1

Я предполагаю, что проблема может возникнуть из-за того, что planarity является .pyx-файлом, а не файлом .py? –

+0

Хорошо. Я решил эту проблему с помощью следующих шагов: –