
- •Введение
- •1. Элементы теории множеств
- •1.1. Основные понятия и определения теории множеств
- •1.2. Операции над множествами и их свойства. Диаграммы Эйлера-Венна
- •1.3. Мощность множества
- •1.4. Взаимно однозначное соответствие между множествами
- •1.5. Счетные и несчетные множества
- •Задачи и упражнения
- •2. Элементы теории отношений
- •2.1. Бинарные отношения. Свойства отношений
- •2.2. Отношение эквивалентности и разбиения
- •2.3. Отношения порядка. Диаграмма Хассе
- •Задачи и упражнения
- •3.Функции, отображения и операции
- •4. Элементы теории графов
- •4.1. Основные понятия и определения теории графов
- •4.2. Типы графов
- •4.3. Матричные представления графов
- •4.5. Операции над графами
- •4.6. Метрические характеристики графа. Расстояние в графах
- •Затем, изымая степень, соответствующую вершине , получим
- •4.8. Достижимость и связность
- •4.8.1. Основные определения
- •4.8.2. Матрицы достижимостей
- •4.8.3. Нахождение сильных компонент
- •Алгоритм нахождения сильных компонент графа можно описать следующей последовательностью шагов
- •Таким образом, сильные компоненты графа можно находить по следующему алгоритму.
- •4.8.4. Базы и антибазы
- •4.9. Независимые и доминирующие множества
- •4.9.1. Нахождение всех максимальных независимых множеств
- •Опишем алгоритм нахождения всех максимальных независимых множеств вершин графа.
- •4.10. Покрытия и раскраски
- •4.11. Деревья, остовы и кодеревья
- •4.11.1. Основные определения
- •4.11.2. Алгоритм построения остова неорграфа
- •4.11.4. Обходы графа по глубине и ширине
- •Доказательство.
- •4.11.5. Упорядоченные и бинарные деревья
- •4.12. Эйлеровы циклы. Гамильтонов контур
- •4.12.1. Метод Флёри построения эйлерова цикла
- •Матрица м данного графа имеет вид
- •4.12.3. Алгебраический метод выделения гамильтоновых путей и контуров
- •4.13. Плоские и планарные графы
- •4.13.1. Формула Эйлера
- •4.13.2. Критерии анализа планарности
- •4.13.3. Алгоритм укладки графа на плоскости
- •Задачи и упражнения
- •5. Комбинаторика
- •5.1. Перестановки
- •5.2. Перестановки с неограниченными повторениями
- •5.3. Размещения
- •5.4. Сочетания
- •5.5. Сочетания с повторениями
- •5.6. Производящие функции для сочетаний
- •5.7. Производящие функции для перестановок
- •5.8. Циклы перестановок
- •Общее число дубликатов
- •5.9. Принцип включений и исключений
- •Почему появился ?
- •Задачи и упражнения
- •6. Алгебра высказываний
- •6.1. Операции над высказываниями
- •6.2. Правила записи сложных формул
- •6.3. Таблицы истинности
- •6.4. Равносильность формул
- •6.5. Дизъюнктивные и конъюнктивные нормальные формы
- •6.5.1. Алгоритм приведения пф к нормальным формам
- •6.5.2. Аналитический способ приведения к сднф
- •6.5.3. Табличный способ приведения к сднф
- •6.5.4. Табличный способ приведения к скнф
- •6.6. Логическое следствие
- •Задачи и упражнения
- •7. Разрешимые и неразрешимые проблемы
- •Заключение
- •Библиографический список
- •394026 Воронеж, Московский просп., 14
4.13.2. Критерии анализа планарности
Граф G1 называется подразбиением графа G, если G1 может быть получен из G несколькими подразбиениями ребер.
Графы G1 и G2 называются гомеоморфными, если оба они могут быть получены из одного и того же графа подразбиением его ребер.
Существует следующий критерий планарности.
Теорема 4.13.4. (Понтрягина-Куратовского). Для того чтобы граф G был планарным, необходимо и достаточно, чтобы он не содержал ни одного подграфа, гомеоморфного графам K5 или K3,3.
Эквивалентная форма критерия планарности описана в следующей теореме.
Теорема 4.13.5. (К. Вагнер, 1937 г.). Граф планарен тогда и только тогда, когда в нем нет подграфов, стягиваемых к графам К5 или К3,3.
Под стягиванием понимается последовательное отождествление вершин, связанных ребрами.
Рассмотренные критерии планарности таковы, что если даже удалось установить планарность графа, то нет информации о том, как строить его укладку на плоскости. В то же время для решения практических задач недостаточно знать, что граф планарен, а необходимо построить его плоское изображение. Появились алгоритмы, которые не только проверяют граф на планарность, но и одновременно строят его плоскую укладку, если это возможно. Одним из таких алгоритмов является следующий [1].
4.13.3. Алгоритм укладки графа на плоскости
Рассмотрим граф G=(X,V). Алгоритм укладки графа представляет собой процесс последовательного присоединения к некоторому уложенному подграфу G' (G'=(X',V')) графа G новой цепи, оба конца которой принадлежат G'. Тем самым эта цепь разбивает одну из граней G' на две. При этом в качестве начального плоского графа G' выбирается любой простой цикл графа G. Процесс продолжается до тех пор, пока не будет построен плоский граф, изоморфный графу G, или присоединение некоторой цепи окажется невозможным. В этом случае граф не является планарным.
Введем ряд определений.
Пусть построена некоторая укладка подграфа G' графа G. Сегментом S относительно G' (или просто сегментом) будем называть подграф графа G одного из следующих двух видов:
ребро v=(x,y) G, такое, что vG', x,yX';
связанную компоненту графа G\G', дополненную всеми ребрами графа G, инцидентными вершинам взятой компоненты, и концами этих ребер.
Очевидно, что в случае, когда граф G планарный, всякий сегмент, как подграф графа G, планарен, а в случае, когда G не является планарным, сегмент может быть как планарным, так и не планарным.
Вершину x сегмента S относительно G' будем называть контактной, если xX'.
Поскольку граф G' плоский, то он разбивает плоскость на грани. Допустимой гранью для сегмента S относительно G' называется грань Г графа G', содержащая все контактные вершины сегмента S. Через Г(S) будем обозначать множество допустимых граней для S. Может оказаться, что Г(S)=.
Простую цепь L сегмента S, соединяющую две различные контактные вершины и не содержащую других контактных вершин, назовем –цепью. Очевидно, что всякая –цепь, принадлежащая сегменту, может быть уложена в любую грань, допустимую для этого сегмента.
Два сегмента S1 и S2 относительно G' назовем конфликтующими, если
D=Г(S1)Г(S2),
существуют две -цепи L1S1, L2S2, которые без пересечений нельзя уложить одновременно ни в какую грань ГD. В противном случае будем говорить, что сегменты не конфликтуют.
Вернемся к алгоритму. На первом шаге этого алгоритма уложим произвольный простой цикл графа G.
Пусть G' – построенная на предыдущем шаге укладка некоторого подграфа графа G. Для каждого сегмента относительно G' находим множество допустимых граней. Теперь могут представиться только следующие три случая.
1. Существует сегмент, для которого нет допустимой грани. В этом случае граф не планарен.
2. Для некоторого сегмента S существует единственная допустимая грань Г. Тогда очередной шаг состоит в расположении любой –цепи сегмента S в грани Г. При этом –цепь разбивает грань Г на две грани.
3.
для всякого сегмента S.
Тогда появляется несколько вариантов
продолжения построения укладки графа,
поскольку любой сегмент можно размещать
в любую допустимую для этого сегмента
грань. Поэтому возникают опасения, что
неудачный выбор сегмента и грани может
помешать процессу построения укладки
на следующих шагах и плоская укладка
планарного графа не будет построена.
Это могло бы привести к неверному
заключению о том, что планарный граф
непланарен. В [2] показано, что в этом
случае для продолжения алгоритма можно
выбирать –цепь
в любом сегменте и помещать его в любую
допустимую грань.
Опишем пошагово алгоритм укладки графа на плоскости.
Шаг 1. Выберем некоторый простой цикл С графа G и уложим его на плоскости. Положим G'=С.
Шаг 2. Найдем грани графа G' и сегменты относительно G'. Если множество сегментов пусто, то перейдем к шагу 8.
Шаг 3. Для каждого сегмента S определим множество Г(S).
Шаг 4. Если существует сегмент S, для которого Г(S)=, то граф G непланарен. Конец. Иначе перейти к шагу 5.
Шаг 5. Если существует сегмент S, для которого имеется единственная допустимая грань Г, то перейти к шагу 7. Иначе – к шагу 6.
Шаг 6. Для некоторого сегмента S ( ) выбираем произвольную допустимую грань Г.
Шаг 7. Поместить произвольную –цепь LS в грань Г. Заменить G' на G'L и перейти к шагу 2.
Шаг 8. Построена укладка G' графа G на плоскости. Конец.
Примеры. 1. Для графа G, изображенного на рис. 4.48, построить его укладку на плоскости. Уложим сначала цикл С=(1, 2, 3, 4, 1), который разбивает плоскость на две грани Г1 в Г2. На рис. 4.49 изображены граф G'=С и сегменты S1, S2, S3 относительно G' с контактными вершинами, обведенными кружками. Так как Г(Si)={Г1, Г2} (i=1, 2, 3), то любую -цепь произвольного сегмента можно укладывать в любую допустимую для него грань. Поместим, например, -цепь L=(2, 5, 4) в Г1. Возникает новый граф G' и его сегменты (рис. 4.50). При этом Г(S1)={Г3}, Г(S2)={Г1, Г2}, Г(S3)={Г1, Г2, Г3}. Укладываем цепь L=(1, 5) в Г3 (рис. 4.51). Тогда Г(S1) = {Г1, Г2}, Г(S2)={Г1, Г2}. Далее, уложим -цепь L=(2, 6, 4) сегмента S1 в Г1 (рис. 4.52). В результате имеем Г(S1)={Г5}, Г(S2) ={Г1, Г2, Г3}. Наконец, уложив ребро (6,3) в Г5, а ребро (2,4) – например, а Г1, получаем укладку графа G на плоскости (рис. 4.53).
1
2 3
6 5 4
Рис. 4.48
1
2 5 6 2
Г2 Г1
4 3 1 2 4 2 3 4 4
G' S1 S2 S3
Рис. 4.49
1
2 5
6 2
Г2 Г3 Г1
5
4 3 1 2 3 4 4
G' S1 S2 S3
Рис. 4.50
1 2 6 2
Г4
Г2 Г3 Г1
5
4 3 2 3 4 4
G' S1 S2
Рис. 4.51
1
2 6 2
Г4
Г2 Г3 Г1
5 6
Г5
4 3 3 4
G' S1 S2
Рис. 4.52
1
2
5 6
4 3
G' Рис. 4.53
Для графа К3,3, изображенного на рис.4.54, построить, если это возможно, его укладку на плоскости. Цикл G' и сегменты относительно этого цикла изображены на рис. 4.55. При этом Г(Si) = {Г1, Г2} (i=1,2,3). Помещает S1 в грань Г2. Тогда S2 необходимо поместить в грань Г1 (рис. 4.56). Поскольку Г(S1)=, то К3,3 – непланарный граф.
1 2 3
6 5 4
Рис. 4.54
1 6
3 1 2 3
Г1 Г2
5 2 4 4 6 5
G' S1 S2 S2
Р
ис.
4.55
1 6 3 3
5 2 4 5
G' S1
Рис. 4.56