Конструктивное тестирование планарности - PullRequest
0 голосов
/ 05 мая 2018

Я пишу алгоритм, который пытается построить планарный граф. Я начинаю с плоского графа и должен добавить ребра между n узлами, чтобы построить n-цикл, но не нарушить планарность. Я знаю, что это можно сделать.

Моя идея состоит в том, чтобы случайным образом добавлять ребра, пока не нарушится планарность, а затем начать все сначала, пока я не найду правильный набор ребер. Для этого мне нужно было бы провести много тестов на плоскостность.

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

Я понимаю, что алгоритмы тестирования плоскостности сложно реализовать, поэтому в идеале я бы предпочел не реализовывать все это самостоятельно.

1 Ответ

0 голосов
/ 05 мая 2018

Алгоритмы тестирования планарности часто дают комбинаторное вложение как побочный продукт. Вы можете работать непосредственно с гранями этого вложения, добавляя к каждому достаточное количество непересекающихся аккордов, не проверяя плоскостность.

Если у вас плоский линейный график и вы хотите сохранить эту структуру, снова найдите грани и затем используйте алгоритм для триангуляции невыпуклых многоугольников.

...