Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000478.doc
Скачиваний:
42
Добавлен:
30.04.2022
Размер:
6.21 Mб
Скачать

2. Алгоритм укладки графа на плоскости

Критерии планарности в практическом применении не всегда просты и не дают информации о том, как строить укладку графа на плоскости, если он планарен. Всё это вызвало появление алгоритмов, которые проверяют граф на планарность и строят его плоскую укладку. Рассмотрим один из них. Этот алгоритм представляет собой процесс последовательного присоединения к некоторому уложенному подграфу графа G новой цепи L, оба конца которой принадлежат G. После этого в качестве подграфа выбирается любой простой цикл графа G и процесс присоединения новых цепей продолжается до тех пор, пока не будет построен плоский граф, изоморфный G, или присоединение новой простой цепи на некотором этапе окажется невозможным, что свидетельствует о непланарности исходного графа G. Введём несколько определений. Пусть имеется некоторая плоская укладка подграфа графа G.

Сегментом Gi относительно называется подграф графа следующих двух видов:

  1. ребро

  2. компонента связности графа дополненная всеми рёбрами графа G, инцидентными вершинами взятой компоненты, и концами этих рёбер.

Вершина u сегмента Gi называется контактной, если Граф - плоский, следовательно он разбивает плоскость на грани.

Допустимой гранью для сегмента Gi относительно называется грань Г графа , содержащая все контактные вершины сегмента Gi. Обозначим через Г(Gi) – множество допустимых граней Gi. Для непланарных графов может быть .

Рассмотрим простую цепь L сегмента G, соединяющую две различные контактные вершины и не содержащую других контактных вершин. Такие цепи называются α-цепями. Всякая α-цепь может быть уложена в любую грань, допустимую для данного сегмента.

Два сегмента G1 и G2 называются конфликтующими, если

1) ;

2) существуют две α- цепи , которые без пересечений нельзя уложить одновременно ни в какую грань .

Пусть - плоская укладка некоторого подграфа графа G. Для каждого сегмента Gi относительно находим множество допустимых граней. Тогда могут осуществляться следующие 3 случая.

  1. Существует сегмент Gi, для которого . В этом случае исходный граф G непланарен.

  2. Для некоторого сегмента Gi существует единственная допустимая грань Г. Тогда можно расположить любую α-цепь сегмента Gi в грани Г. При этом грань Г разобьётся на две грани.

  3. . В этом случае можно расположить α-цепь в любой допустимой грани.

Сам алгоритм укладки планарного графа G на плоскость состоит из следующих шагов.

Шаг 1. Выбираем любой простой цикл С графа G. Этот цикл укладывается на плоскости и полагается .

Шаг 2. Находим все грани графа и все сегменты Gi относительно . Если множество сегментов пусто, происходит переход на шаг 7.

Шаг 3. Для каждого сегмента Gi определяем множество допустимых граней Г(Gi). Если найдётся сегмент Gi, для которого , то исходный граф G непланарен; конец алгоритма, иначе переход на шаг 4.

Шаг 4. Если существует сегмент Gi, для которого имеется единственная допустимая грань Г, то происходит переход на шаг 6, иначе на шаг 5.

Шаг 5. Для некоторого сегмента Gi, для которого , выбираем произвольную допустиму грань.

Шаг 6. Произвольная α – цепь сегмента Gi помещается в грань Г, заменяется на и происходит переход на шаг 1.

Ш аг 7. Построена укладка графа G на плоскости. Конец алгоритма.

Пример 1.

Рис. 57

Шаг 1. Выберем простой цикл , который разбивает плоскость на две грани Г1 и Г2. Положим .

Рис. 58

Шаг 2. На приведённом выше рисунке изображён граф и сегменты G1, G2 исходного графа относительно . Контактные вершины обведены кружками.

Шаг 3.

Шаг 4. Нет сегмента, для которого бы существовала единственная допустимая грань.

Шаг 5. Любую α – цепь можно уложить в Г1 или в Г2. Выберем для укладки грань Г1.

Шаг 6. Пусть . Поместим эту α – цепь в Г1. Возникает новый граф и его сегменты G1,G2,G3. Появляется и новая грань Г3.

Рис. 59

Переходим к 1- ому шагу.

Шаг 1. Новых сегмента три: G1,G2,G3.

Шаг 2. .

Шаг 3.

Шаг 4. , переход на шаг 6.

Шаг 6. α –цепь поместим в грань Г1, α –цепь также помещаем в ту же грань. В результате возникает новый граф . Он имеет 5 граней и один сегмент.

Рис. 60

Шаг 1. G1 – ребро (х3,х5).

Шаг 2. .

Шаг 3. .

Шаг 4. , переход на 6 –ой шаг.

Шаг 6. α – цепь поместим в грань Г3. Новый граф является плоской укладкой исходного планарного графа.

Рис. 61

П ример 2.

Рис. 62

Попытаемся получить плоскую укладку графа К5. Т.к. известно, что граф непланарен, алгоритм должен завершить работу на 3 – ем шаге.

Шаг 1. Выберем простой цикл

Шаг 2. Граней у графа две: Г1 и Г2, сегментов 5, все они показаны на следующем рисунке.

Рис. 63

Шаг 3.

Шаг 4.

Шаг 5. Выберем для G1 и G5 грань Г2 в качестве допустимой грани.

Шаг 6. α – цепи и присоединим к графу . Получим новый граф и три сегмента G1, G2, G3.

Рис. 64

Шаги 1 2. Новых граней у графа четыре: Г1, Г2, Г3, Г4.

Шаг 3. .

Ша г4. Для G1 и G2 выберем грань Г1.

Шаг 6. α – цепи и поместим в грань Г1 и присоединим к .

Шаг 1. и сегмент G1 показаны на следующем рисунке.

Рис. 65

Шаг 2. Граней у графа теперь 6: Г1, Г2, Г3, Г4, Г5, Г6.

Шаг 3. . Исходный граф G непланарен, конец алгоритма.

В заключение найдём число планарности и толщину полного графа К5. По формуле (2) +6 = 10-15+6 = 1. Это соответствует действительности, у графа G остался один неприсоединённый сегмент G1 (рис. 65).

Для толщины полного графа модификация формул (3) даёт точную оценку . Таким образом, этот граф можно представить в виде объединения планарных графов на двух плоскостях.

Рис. 66.