1294
правки
Irina (обсуждение | вклад) |
KVN (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 1 участника) | |||
Строка 4: | Строка 4: | ||
== Постановка задачи == | == Постановка задачи == | ||
Задача заключается в установлении факта, является ли входной граф G планарным. Определение, наиболее подходящее для алгоритмов проверки на планарность, звучит так: граф G является планарным, если существует его вложение в плоскость (вершины G отображаются на различные точки, ребра G отображаются на кривые, соединяющие соответствующие конечные точки), такое, что ребра графа не пересекаются. Алгоритмы, проводящие проверку графа на планарность, можно модифицировать для получения подобного вложения. | Задача заключается в установлении факта, является ли входной граф G [[планарный граф|планарным]]. Определение, наиболее подходящее для алгоритмов проверки на планарность, звучит так: граф G является планарным, если существует его [[вложение графов|вложение]] в плоскость (вершины G отображаются на различные точки, ребра G отображаются на кривые, соединяющие соответствующие конечные точки), такое, что ребра графа не пересекаются. Алгоритмы, проводящие проверку графа на планарность, можно модифицировать для получения подобного вложения. | ||
== Основные результаты == | == Основные результаты == | ||
Строка 11: | Строка 10: | ||
Первый алгоритм с линейным временем | Первый алгоритм с линейным временем выполнения предложили Хопкрофт и Тарьян [5], проанализировав итеративную версию рекурсивного алгоритма, разработанного Ауслендером и Партером [1] и модифицированного Голдштейном [4]. Алгоритм основывается на следующем наблюдении: связный граф является планарным в том и только том случае, если все его двусвязные компоненты являются планарными. Рекурсивный алгоритм последовательно обрабатывает каждую двусвязную компоненту: найти разделяющий цикл (separating cycle) C и разбиение ребер G, не принадлежащих C; определить компоненту разбиения как состоящую из ребер, связанных путем в G, и не включающую ребер из C; рекурсивно рассмотреть каждую циклическую компоненту разбиения. Если каждая компонента разбиения является планарной, а все компоненты могут быть объединены с C в планарный граф, то граф G является планарным. | ||
Строка 24: | Строка 23: | ||
== Ссылка на код == | == Ссылка на код == | ||
Библиотека LEDA предлагает эффективную реализацию алгоритма Хопкрофта и Тарьяна [7]: http://www. algorithmic-solutions.info/leda_guide/graph_algorithms/ planar_kuratowski.html | Библиотека LEDA предлагает эффективную реализацию алгоритма Хопкрофта и Тарьяна [7]: http://www.algorithmic-solutions.info/leda_guide/graph_algorithms/planar_kuratowski.html | ||
== См. также | == См. также | ||
* ''[[Полностью динамическая проверка на планарность]] | * ''[[Полностью динамическая проверка на планарность]] | ||
== Литература == | == Литература == | ||
Строка 47: | Строка 45: | ||
8. Shih, W.-K., Hsu, W.-L.: A new planarity test. Theor. Comput. Sci. 223, pp. 179-191 (1999) | 8. Shih, W.-K., Hsu, W.-L.: A new planarity test. Theor. Comput. Sci. 223, pp. 179-191 (1999) | ||
[[Категория: Совместное определение связанных терминов]] |