2013-03-30 5 views
5

Для целей этого поста, с помощью плоского графа или плоской карте A, I будет означать абстрактный граф, который можно сделать в плоскости (или, что эквивалентно на сфере) вместе с круговым порядком ребер в каждой вершине в соответствии с конкретным рисунком. Эта дополнительная информация определяет вложение на сферу (вплоть до перемещения вершин и ребер таким образом, чтобы они никогда не пересекались ни с какими другими вершинами/ребрами). I do хотите разрешить петли и несколько краев.Реализации плоских графов/карт (с вложениями)

Например, предположим, что мы построили график следующим образом. Нарисуйте две вершины (A и B) в плоскости вместе с двумя ребрами, соединяющими эти два. Два ребра вместе образуют простую замкнутую кривую \ gamma. Теперь добавьте еще две вершины: A 'и B' и соедините A и A 'с ребром, а также B и B'.

Этот абстрактный граф будет иметь два неэквивалентных вложения, согласно которым вершины A 'и B' разделены кривой \ gamma или нет.


Мой вопрос: Есть ли пакет Python, который реализует такие плоские графы?

Меня интересует пакет, который может создать чертеж плоского графа (с учетом вложения, конечно), а также выполнить некоторые стандартные операции (например, указать количество граней, сформировать двойной граф и т. Д.)

Если такой пакет не существует в Python, меня также интересовали бы реализации на других языках.

Конечно, существуют различные пакеты, которые реализуют рисунок графиков и алгоритмы графа-теоретики. Тем не менее, я ни в одном из них не заметил возможности работать с графиками, которые уже появились с вложением. Ссылка была бы высоко оценена.

ответ

0

Я не уверен, что полностью понимаю ваши требования, но вы посмотрели на это planarity library. Это оболочка cython для реализации алгоритмов планарности c (++?), Включая рисование. Я использую его с networkX.