Какой простейший полиномиальный алгоритм для PLANARITY?

28

Есть несколько алгоритмов, которые решают за полиномиальное время, можно ли построить график на плоскости или нет, даже многие с линейным временем выполнения. Тем не менее, я не смог найти очень простой алгоритм, который можно было бы легко и быстро объяснить в классе, и показал бы, что PLANARITY в P. Знаете ли вы какой-нибудь?

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

Ниже приведены 3 лучших алгоритма, демонстрирующие компромисс между простотой и отсутствием глубокой теории.

Алгоритм 1. Используя это, мы можем проверить, содержит ли граф или как минор за полиномиальное время, мы получаем очень простой алгоритм с использованием глубокой теории. (Обратите внимание, что эта теория уже использует вложения графа, как указал Саид, так что это не настоящий алгоритмический подход, просто что-то простое, чтобы сказать студентам, которые уже знали / приняли теорему о второстепенном графе.)К 3 , 3K5K3,3

Алгоритм 2 [на основе чьего-либо ответа]: легко понять, что достаточно иметь дело с 3-связными графами. Для этого найдите лицо, а затем примените весеннюю теорему Тутте.

Алгоритм 3 [рекомендовано Юхо]: алгоритм Демокрона, Мальгранжа и Пертуазе (DMP). Рисуем цикл, компоненты оставшегося графа называются фрагментами, мы их встраиваем подходящим образом (пока создаем новые фрагменты). Этот подход не использует никаких других теорем.

domotorp
источник
1
Я думаю, что многие согласны с тем, что самым простым алгоритмом полиномиального времени является алгоритм Демукрона, Мальгранжа и Пертюизета (DMP). Это учебники по алгоритму, которые обычно охватывают (см., Например, Gibbons 1985 или Bondy & Murty 1976). Достаточно ли просто определить планарность или алгоритм должен также выводить планарное вложение? IIRC, статья Бойера и Мирволда @joro в SODA'99, вероятно, ссылается на детали, особенно в отношении сложности времени.
Юхо
2
Если вы хотите просто решить проблему «ПЛАНАР», разве не достаточно двух запрещенных несовершеннолетних, чье существование можно проверить за полиномиальное время ?
Джоро
2
@joro: Да, конечно, это было бы простым решением, но я бы предпочел не использовать такую ​​сильную теорему.
domotorp
1
Алгоритм, который я упомянул, был в основном алгоритмом Аусландера-Партера. Проблема в моем алгоритме была 7-й частью, когда я сказал, что мы можем разделить граф компонентов на две части. В оригинальном алгоритме мы можем это сделать, но в алгоритме, который я сказал, нам нужны более точные определения компонентов, и мне не хотелось подробно его объяснять. Рекурсивная часть была явно верной (если мы можем сделать шаг 7, то мы закончили), где вы сомневаетесь в ее правильности. Я не обновил свой ответ, потому что видел, что он будет около двух страниц, и я не могу сокращать его больше, и это не хорошо, чтобы назвать его простым.
Саид
3
Сокращение до 3-связного случая является концептуально простым и должно быть объяснено в любом случае. Если мы не слишком заинтересованы в снижении эффективности до 3-х-связного случая, это легко сделать. Проверьте все 2-узловые разрезы.
Чандра Чекури

Ответы:

6

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

Сначала мы разбиваем график на 3-связные компоненты, как упомянуто Чандрой Чекури.

  1. Разбейте график на связанные компоненты.
  2. Разбейте каждый подключенный компонент на 2 подключенных компонента. Это можно сделать в полиномиальной проверке времени для каждой вершины каждого 2-связного компонента , подключен ли .G i G i - vvGiGiv
  3. Разбейте каждый 2-компонентный компонент на 3-компонентный. Это можно сделать при проверке за полиномиальное время для двух различных вершин каждого 2-связного компонента , связан ли .G i G i - { v , u }v,uGiGi{v,u}

Мы сократили задачу до проверки, является ли трехсвязная компонента графа плоской. Пусть обозначает 3-связную компоненту.G

  1. Возьмите любой цикл из .GCG
  2. Прикрепите вершины как вершины выпуклого многоугольника. Поместите каждую из остальных вершин в барицентр своих соседей. Это приводит к системе линейных уравнений, сообщающих координаты каждой вершины. Пусть будет результирующим рисунком; это может иметь пересечения.DCD
  3. Если не имеет пересечений, мы закончили.D
  4. Возьмем вершины в любом связном компоненте группы . Ограничение на индуцированный подграф должно быть плоским. В противном случае не является плоской. Возьмем любое лицо на чертеже ограничивается индуцированного подграфа , и пусть будет цикл определение . Если должен быть плоским, то должен быть лицевым циклом. (Когда является гамильтоновым циклом, тогда должен быть построен с использованием ребра.)G - V ( C ) D G [ U V ( C ) ] G F D G [ U V ( C ) ] C F G C C C UGV(C)DG[UV(C)]GFDG[UV(C)]CFGCCC
  5. Повторите шаг 2 с C 'вместо C. Если полученный чертеж плоский, то плоский. Остальное не плоское.GGG

Примечания:

  • Утверждать, что пружинное вложение Тутте дает плоское вложение, не просто. Мне понравилась презентация в книге Эдельсбруннера и Харера «Вычислительная топология», но она только для триангуляций. Колин де Вердиер обсуждает встраивание весны в http://www.di.ens.fr/~colin/cours/algo-graphs-surfaces.pdf , раздел 1.4. Общая ссылка - это Linial, Lovász, Wigderson: резиновые ленты, выпуклые вложения и связность графа. Combinatorica 8 (1): 91-102 (1988).
  • Решение линейной системы уравнений в полиомном числе арифметических операций легко с помощью исключения Гаусса. Решить это, используя многозначное число битов, не так просто.
кто то
источник
Я отредактировал ответ, чтобы избежать использования мостов и графика перекрытия.
кто-то
Предположим, что каждый 3-компонентный компонент может быть встроен. Тогда что мы можем сделать вывод об исходном графе? Используя, что 3-связные графы имеют (самое большее) одно вложение, вероятно, мы можем закончить отсюда, но этот шаг также должен быть сделан.
domotorp
В конце, на шаге 4, что такое грань на неплоском чертеже? Я думаю, это все еще можно определить естественным образом. И в самом конце «Else G не плоское» действительно кажется довольно нетривиальным.
domotorp
Ограничение на должно быть плоским. В противном случае не является плоской. G [ U V ( C ) ] GDG[UV(C)]G
кто-то
В этом мы согласны, но я не вижу, как это помогает.
domotorp
3

Алгоритм Бойера и Мирволда считается одним из самых современных алгоритмов тестирования планарности.

На переднем крае: упрощенная O (n) планарность путем сложения краев Бойера и Мирволда.

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

Мухаммед Аль-Туркистани
источник
Меня не интересуют передовые алгоритмы планарности, я хочу кое-что легко объяснить. Я не смог найти в книге ничего более простого, чем алгоритм Демукрона, Мальгранжа и Пертуазе (DMP).
domotorp
0

Как насчет алгоритма Хопкрофта и Тарьяна 1974 года {1} ?


{1} Хопкрофт, Джон и Роберт Тарьян. «Эффективное тестирование плоскостности». Журнал ACM (JACM) 21,4 (1974): 549-568.

Ари Трахтенберг
источник
Это быстрый и не простой алгоритм.
Домоторп
0

Два алгоритма, оба в LogSpace

  1. Эрик Аллендер и Мина Махаджан - Сложность тестирования планарности
  2. Самир Датта и Гаутам Пракрия - повторное тестирование на плоскостность

Второе намного проще первого.

анонимное
источник
Совсем не просто.
domotorp