Перевірка планарності
Задача перевірки планарності — це алгоритмічна задача перевірки, чи є даний граф планарним (тобто, чи можна його намалювати на площині без перетину ребер). Задачу добре вивчено в інформатиці і придумано багато практичних алгоритмів, зокрема, з використанням сучасних структур даних. Більшість цих методів працюють за час O(n) (лінійний час), де n — число ребер (або вершин) графа, що є асимптотично оптимальним алгоритмом[en]. Замість простого булівського значення, вихід алгоритмів перевірки планарності може дати вкладення графа, якщо граф планарний, або заваду планарності, таку як підграф Куратовського, якщо граф не планарний.
Алгоритми перевірки планарності зазвичай користуються теоремами теорії графів, які описують множину планарних графів у термінах, що не залежать від малювання графів. Сюди входять
- Теорема Понтрягіна — Куратовського, що граф планарний тоді й лише тоді, коли він не містить підграфа, який є розбиттям K5 (повного графа з п'ятьма вершинами) або K3,3 (комунальний граф, повний двочастковий граф з шістьма вершинами, три з яких з'єднані з кожною вершиною з іншої трійки).
- Теорема Вагнера, що граф планарний тоді й лише тоді, коли він не містить мінора (підграфа стягувань), ізоморфного K5 або K3,3.
- Критерій планарності де Фрейсекса — Розенштіля[en], що описує планарні графи в термінах упорядкування зліва направо в дереві пошуку в глибину.
Критерій планарності де Фрейсекса — Розенштіля можна використати прямо як частину алгоритму перевірки планарності, тоді як теореми Куратовського і Вагнера застосовують побічно — якщо алгоритм може знайти копію K5 або K3,3 в даному графі, можна бути впевненим, що вхідний граф не планарний.
Є й інші критерії планарності, які описують планарні графи математично, але які менш придатні для алгоритмів перевірки планарності:
- критерій планарності Вітні, що граф планарен тоді й лише тоді, коли його графовий матроїд[en] є також кографовым;
- критерій планарності Маклейна, що описує планарні графи базисами їхніх циклічних просторів;
- теорема Шнайдера, що описує планарні графи порядковою розмірністю[en] асоційованих частково впорядкованих множин;
- критерій планарності Колен де Вердьєра, що використовує спектральну теорію графів.
Першим опублікованим (1974) алгоритмом перевірки планарності був класичний метод додавання шляху Гопкрофта і Тарджана[1], який працював за лінійний час. Імплементацію алгоритму Гопкрофта і Тарджана включено до бібліотеки ефективних типів даних і алгоритмів[en] Мельхорна, Муцель[en] і Неера[2][3][4]. 2012 року Тейлор[5] розширив цей алгоритм для генерування всіх перестановок циклічних порядків ребер для вкладення двозв'язних компонент.
Методи додавання вершин полягає у створенні структури даних, що представляє можливі вкладення породженого підграфа даного графа, і додавання вершин по одній до цієї структури даних. Ці методи починалися з неефективного O(n2) методу, який 1967 року запропонували Лемпель, Івен[en] і Цедербаум[6]. Метод покращили Івен і Тарджан, які знайшли розв'язок лінійного часу для кроку s,t-нумерації[7], а потім поліпшили Бут і Люкер, які розробили структуру даних PQ-дерево. З цими поліпшеннями метод став лінійним за часом і, практично, став працювати швидше від методу додавання шляхів[8]. Цей метод також розширено, щоб ефективно обчислювати планарне вкладення (малювання) для планарних графів[9]. 1999 року Ші і Сю спростили ці методи, використовуючи PC-дерево (некореневий варіант PQ-дерева) і обхід із відкладеною вибіркою дерева вершин з пошуком у глибину[10].
2004 року Бойєр і Мірволд[11] розробили спрощений алгоритм з часом роботи O(n), навіяний методом PQ-дерева, але в якому позбулися PQ-дерева і алгоритм використовує додавання ребер для обчислення планарного вкладення, якщо воно можливе. В іншому випадку обчислюється розбиття Куратовського (або графа K5, або графа K3,3). Метод є одним з двох алгоритмів, які існують нині (другий — алгоритм перевірки планарності де Фрейсекса, де Мендеса і Розенштіля[12][13]). У статті Боєра, Кортезе, Патрігнамі та Баттіста[14] описано експериментальне порівняння з попередньою версією алгоритму перевірки планарності Боєра і Мірволда. При цьому алгоритм Боєра і Мірволда розширено для виділення декількох розбиттів Куратовського непланарного вхідного графа з часом роботи, лінійно залежним від розміру виходу[15]. Сирці перевірки планарності[16][17] і виділення декількох розбиттів Куратовського[16] перебувають у відкритому доступі (мовою C++). Алгоритм, що визначає підграф Куратовського за лінійний від кількості вершин час, розробив Вільямсон у 1980-х роках[18].
Інший метод використовує побудову за індукцією 3-зв'язних графів для послідовної побудови планарного вкладення будь-якої 3-зв'язної компоненти графа G (а тому й планарного вкладення самого графа G)[19]. Побудова починається з K4 і визначається так, що будь-який проміжний граф на шляху до повної компоненти є знову 3-зв'язним. Оскільки такі графи мають єдине вкладення (з точністю до вибору зовнішньої грані), наступний більший граф, якщо він залишається планарним, має бути уточненням попереднього графа. Це дозволяє звести перевірку планарності до просто перевірки, чи буде наступне додане ребро мати обидва кінці на зовнішній грані поточного вкладення. Попри концептуальну простоту (і лінійний час роботи), метод має великьу складністю пошуку послідовності побудови.
- ↑ Hopcroft, Tarjan, 1974, с. 549–568.
- ↑ Mehlhorn, Mutzel, 1996, с. 233–242.
- ↑ Mehlhorn, Mutzel, Näher, 1993.
- ↑ Mehlhorn, Näher, 1995, с. 96–102.
- ↑ Taylor, 2012.
- ↑ Lempel, Even, Cederbaum, 1967, с. 215–232.
- ↑ Even, Tarjan, 1976, с. 339–344.
- ↑ Боєр і Мірволд (Boyer, Myrvold, 2004): «Ця імплементація в LEDA повільніша, ніж LEDA-імплементації багатьох інших алгоритмів перевірки планарності з часом O(n)».
- ↑ Chiba, Nishizeki, Abe, Ozawa, 1985, с. 54–76.
- ↑ Shih, Hsu, 1999, с. 179–191.
- ↑ Boyer, Myrvold, 2004, с. 241–273.
- ↑ de Fraysseix, Ossona de Mendez, Rosenstiehl, 2006, с. 1017–1030.
- ↑ Brandes, 2009.
- ↑ Boyer, Cortese, Patrignani, Battista, 2003, с. 25–36.
- ↑ Chimani, Mutzel, Schmidt, 2008, с. 159–170.
- ↑ а б OGDF — Open Graph Drawing Framework: start
- ↑ Boost Graph Library: Boyer-Myrvold Planarity Testing/Embedding — 1.40.0
- ↑ Williamson, 1984, с. 681–693.
- ↑ Schmidt, 2014, с. 967–978.
- John Hopcroft, Robert E. Tarjan. Efficient planarity testing // Journal of the Association for Computing Machinery. — 1974. — Т. 21, вип. 4. — С. 549–568. — DOI: .
- Kurt Mehlhorn, Petra Mutzel. On the Embedding Phase of the Hopcroft and Tarjan Planarity Testing Algorithm // Algorithmica. — 1996. — Т. 16. — С. 233–242. — DOI: .
- Kurt Mehlhorn, Petra Mutzel, Stefan Näher. An Implementation of the Hopcroft and Tarjan Planarity Test and Embedding Algorithm. — 1993.
- Kurt Mehlhorn, Stefan Näher. LEDA: A library of efficient data types and algorithms // CACM. — 1995. — Т. 38, вип. 1. — С. 96–102.
- Martyn G. Taylor. Planarity Testing by Path Addition. — University of Kent, 2012. — (Ph.D.) Архівовано з джерела 2 березня 2014
- Lempel A., Even S., Cederbaum I. An algorithm for planarity testing of graphs // Theory of Graphs. — New York : Gordon and Breach, 1967. — С. 215–232.
- Shimon Even, Robert E. Tarjan. Computing an st-numbering // Theoretical Computer Science. — 1976. — Т. 2, вип. 3. — С. 339–344. — DOI: .
- Chiba N., Nishizeki T., Abe A., Ozawa T. A linear algorithm for embedding planar graphs using PQ–trees // Journal of Computer and Systems Sciences. — 1985. — Т. 30, вип. 1. — С. 54–76. — DOI: .
- Shih W. K., Hsu W. L. A new planarity test // Theoretical Computer Science. — 1999. — Т. 223, вип. 1–2. — С. 179–191. — DOI: .
- John M. Boyer, Wendy J. Myrvold. On the cutting edge: simplified O(n) planarity by edge addition // Journal of Graph Algorithms and Applications. — 2004. — Т. 8, вип. 3. — С. 241–273. — DOI: .
- de Fraysseix H., Ossona de Mendez P., Rosenstiehl P. Trémaux Trees and Planarity // International Journal of Foundations of Computer Science. — 2006. — Т. 17, вип. 5. — С. 1017–1030. — DOI: .
- Ulrik Brandes. The left-right planarity test. — 2009.
- Boyer J. M., Cortese P. F., Patrignani M., Battista G. D. Stop minding your P's and Q's: implementing a fast and simple DFS-based planarity testing and embedding algorithm // Proc. 11th Int. Symp. Graph Drawing (GD '03). — Springer-Verlag, 2003. — Т. 2912. — С. 25–36. — (Lecture Notes in Computer Science)
- Chimani M., Mutzel P., Schmidt J. M. Efficient extraction of multiple Kuratowski subdivisions // Proc. 15th Int. Symp. Graph Drawing (GD'07). — Sydney, Australia : Springer-Verlag, 2008. — Т. 4875. — С. 159–170. — (Lecture Notes in Computer Science)
- S. G. Williamson. Depth First Search and Kuratowski Subgraphs // Journal of the ACM. — 1984. — Т. 31. — С. 681–693. — DOI: .
- Jens M. Schmidt. The Mondshein Sequence // Proceedings of the 41st International Colloquium on Automata, Languages and Programming (ICALP'14). — 2014. — С. 967–978. — DOI: