Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
111
Добавлен:
15.02.2021
Размер:
3.2 Mб
Скачать

Граф называется планарным, если он изоморфен плоскому графу.

Таким образом, планарный граф можно изобразить на плоскости как

плоский. На рис. 3.4 изображены 2 изоморфных (одинаковых) графа, причем первый из них планарный (а), а второй является плоским (б).

Рис. 3.4. Планарный и плоский графы.

Заметим, что в теории графов ставится часто вопрос о реберной

раскраске графов. Какое минимальное число цветов (это число иногда называют реберно-хроматическим) нужно, чтобы раскрасить ребра графа так, что любые 2 смежных ребра (т. е. 2 ребра, имеющих общую вершину)

были бы окрашены в разный цвет? Для реберно -хроматического числа графа справедлива гораздо более точная оценка, чем для просто хроматического числа, а именно, верна следующая, в какой-то степени удивительная,

теорема.

Теорема Визинга. Если в графе максимальная степень вершин равна ,

то реберно-хроматическое число равно либо , либо +1.

Заметим, что до сих пор нет “хороших” критериев для графов, когда же именно реберно-хроматическое число равно , а когда + 1.

Очевидно, что простейший алгоритм нахождения реберно -

хроматического числа (и соответствующей раскраски ребер) состоит в следующем: по данному графу строим так называемый двойственный граф:

ребра графа соответствуют вершинам нового (двойственного) графа, причем,

если 2 ребра имеют общую вершину, то они являются смежными и в

Компьютерные технологии проектирования. Часть 2

Стр. 31

двойственном графе соединены ребром. После этого раскрашиваем наилучшим образом вершины двойственного графа и, переходя к “старому” графу, получаем (одну из возможных) наилучших реберных раскрасок графов.

Алгоритм раскраски графа по степеням вершин

Дано: G=(V,X) - связный граф. Требуется найти вершинную раскраску графа и приближенное значение хроматического числа K . Необходимо:

1.Вычислить степени вершин. Положить K=1

2.Просмотреть вершины в порядке невозрастания степеней и окрасить первую неокрашенную вершину в цвет № K

3.Просмотреть вершины в порядке невозрастания степеней и окрасить в цвет №К все вершины, которые не смежны вершинам, уже окрашенным в цвет №К

4.Если все вершины окрашены, то К-искомое хроматическое число, Иначе К=К+1 и переход к пункту 2

Рис 3.5 Исходный граф

Компьютерные технологии проектирования. Часть 2

Стр. 32

Рис 3.6.а. Вычисление степени вершин.

Рис 3.6.б Окрашивание вершины №8 и несмежных с ней.

Компьютерные технологии проектирования. Часть 2

Стр. 33

Рис 3.6.в,г,д. Окрашивание остальных вершин.

Компьютерные технологии проектирования. Часть 2

Стр. 34

Вернемся к задаче расслоения цепей перед трассировкой.

Второй способ расслоения - Последовательное выделение в графе максимальных плоских суграфов [7, 20] .

Простейший способ – последовательное удаление отрезков, имеющих максимальное число пересечений с другими отрезками. Оставшееся после удаления множество отрезков назначается на очередной слой.

Рассмотрим множество отрезков (рис. 3.1. слева). Убираем отрезки 3 и 5 (по три пересечения) и 4 (рис.3.7).

Рис. 3.7. Расслоение: а) отрезки, назначенные в первый слой; b) оставшиеся отрезки.

Затем убираем отрезок 5.

Рис. 3.8. Расслоение: отрезки, назначенные во второй (а) и третий (b) слои;

Компьютерные технологии проектирования. Часть 2

Стр. 35

Таким образом, получаем, что отрезки 1 и 2 располагаются на первом слое

(рис.3.7а), 3 и 4 – на втором (рис.3.8а), отрезок 5 – на третьем (рис.3.8.b).

Недостатки те же, плюс еще и существенная погрешность решен ия,

поскольку принцип – жадный алгоритм, при этом нахождение максимального плоского суграфа – задача не проще первой.

Теперь немного о планаризации графов:

Определения Плоский граф — это граф, нарисованный на плоскости таким образом, что

его ребра не пересекаются.

Планарный граф — это граф, который изоморфен плоскому графу. То есть планарный граф — это граф с пересечениями, но допускающий его плоскую укладку.

Грань — это часть плоскости, окруженная простым циклом и не содержащая внутри себя других элементов графа.

Внешняя грань — это вся плоскость, окружающая плоский граф.

Алгоритм укладки плоского графа (Гамма-алгоритм).

На вход подаются графы, обладающие следующими свойствами:

1.граф связный;

2.граф имеет хотя бы один цикл;

3.граф не имеет мостиков, то есть ребер после удаления которых, граф распадается на две компоненты связности.

Если нарушено свойство (1), то граф нужно укладывать отдельно по компонентам связности. Если нарушено свойство (2), то граф — дерево и нарисовать его плоскую укладку тривиально. Случай нарушения свойства (3)

рассмотрим более подробно. Если в графе есть мостики, то их нужно

Компьютерные технологии проектирования. Часть 2

Стр. 36

разрезать, провести отдельно плоскую укладку каждой компоненты связности, а затем соединить их мостиками. Здесь может возникнуть трудность: в процессе укладки концевые вершины мостика могут спрятаться внутри плоского графа. Нарисуем одну компоненту связности и будем присоединять к ней другие последовательно. Каждую новую компоненту связности будем рисовать в той грани, в которой лежит концевая вершина соответствующего мостика. Так как граф связности мостиками компонент связности является деревом, мы сумеем получить плоскую укладку.

Реализация гамма-алгоритма.

1.(Инициализация). Выберем любой простой цикл C исходного графа G; изобразим его на плоскости в виде грани, которую примем за уже уложенную часть G′; сформируем сегменты Si; если множество сегментов пусто, то перейти к п. 3.

2.(Общий шаг). Пока множество сегментов не пусто:

1.Для каждого сегмента S найти множество Γ(S). Если существует сегмент S, для которого |Γ(S)| = 0, то граф не планарный, конец.

2.Выбираем один из сегментов с минимальным числом, вмещающих его граней.

3.Выбираем одну из подходящих граней для выбранного сегмента.

4.В данном сегменте выбираем цепь между двумя контактными вершинами и укладываем ее в выбранной грани. Учтем изменения в структуре сегментов и перейдем к п. a).

5.(Завершение). Построена плоская укладка G′ исходного графа G, конец.

Каждый сегмент S относительно уже построенного графа G ′ представляет

собой одно из двух:

1.ребро, оба конца которого принадлежат G′, но само оно не принадлежит G′;

2.связную компоненту графа G — G′ дополненную всеми ребрами графа G, один из концов которых принадлежит связной компоненте, а второй из графа G′.

Те вершины, которые одновременно принадлежат G′ и какому-то сегменту назовем контактными. Если бы в каком-нибудь сегменте не было ни одной контактной вершины, то граф до разрезания был бы несвязный; есл и бы была только одна, то граф имел бы мостик. Эти возможности заранее исключены,

так что каждый сегмент имеет не менее двух контактных вершин. Поэтому в каждом сегменте имеется цепь между любой парой таких вершин. Если все

Компьютерные технологии проектирования. Часть 2

Стр. 37

контактные вершины сегмента S имеют номера вершин какой-то грани Γ, то мы будем говорить, что грань Γ вмещает этот сегмент и обозначать S Γ.

Может быть имеется не одна такая грань, вмещающая сегмент S, множество таких граней обозначим Γ(S), а их число |Γ(S)|. На общем шаге мы обозреваем все сегменты Si и определяем числа |Γ(Si)|. Если хоть одно из них равно 0, то граф не планарен, конец. Иначе, выбираем сегмент, для которого число |Γ(S)| минимально, или один из множества, если таких сегментов несколько. В этом сегменте найдем цепь между д вумя контактными вершинами и уложим ее в любую из граней множества Γ(S), совместив контактные вершины сегмента с соответствующими вершинами грани. При этом данная грань разобьется на две. Уже уложенная часть графа G ′ по количеству ребер и вершин увеличится, а сегмент, из которого вынута цепь,

исчезнет или развалится на меньшие с новыми контактными вершинами,

ведущими к вершинам G′. Выбор подходящей грани для выбранного сегмента реализуется так: находим общую грань для контактных вершин.

Если таковая существует, то грань считается подходящей; в противном случае контактные вершины лежат в разных гранях, а значит цепь,

соединяющая их, пересечет как минимум 1 сегмент и граф не будет планарен.

Корректность гамма-алгоритма

Вначале докажем ряд вспомогательных утверждений. Лемма 1 Для любого сегмента |Γ(S)| ≤ 2. Доказательство. Действительно, если все контактные вершины одного сегмента принадлежат некоторой грани Γ

(точнее, циклу, окружающему эту грань), то они могут принадлежать все вместе только одной еще грани, а именно внутренней или внешней. Ч. т. д.

Назовем сегменты S1 и S2 конфликтующими относительно уже уложенной части, если: существует грань, которая вмещает каждый из сегментов; в

Компьютерные технологии проектирования. Часть 2

Стр. 38

сегментах S1 и S2 есть две цепи (между контактными вершинами) L1 и L2

соответственно, такие, что их невозможно уложить в одну грань без пересечения. Лемма 2 Конфликтующие сегменты S1 и S2 обладают следующим свойством: если |Γ(S1)| = 2 и |Γ(S2)| = 2, то Γ(S1) = Γ(S2).

Доказательство. Действительно, в противном случае, имея по определению одну общую вмещающую грань Γ3, они бы имели еще по собственной вмещающей грани Γ1 и Γ2 соответственно. Тогда любые цепи из

S1 и S2 могли бы разместиться в Γ1 и Γ2 соответственно, а значит и в Γ3,

причем без пересечения; следовательно, S1 и S2 не были б ы конфликтующими. Противоречие. Лемма доказана. Замечание. Из доказанной леммы следует, что, имея сегмент S1, и еще сегмент S2,

конфликтующий с S1, затем сегмент S3, конфликтующий с S2 (но не с S1)

ит. д., причем каждый вмещается в две грани, то эти грани общие для всех сегментов последовательности, и можно размещать цепь L1 из S1 в первую грань Γ1, L2 из S2 в Γ2, L3 из S3 снова в Γ1 и т. д. до конца последовательности. Если цепочка сегментов замыкается в цикл четной длины, то проблем не будет; если в нече тный цикл, то в конце окажется, что два конфликтующих сегмента нужно разместить без пересечений в общую грань, что невозможно. ‘’’Теорема Кенига’’: В графе все циклы четные тогда

итолько тогда, когда граф является двудольным. Доказательство.

Достаточность. Рассмотрим двудольный граф. Начнем цикл в верхней доли.

Нужно пройти по четному числу ребер, чтобы подняться снова в верхнюю долю. Следовательно, при замыкании цикла число ребер будет четным.

Необходимость. Если граф несвязный, то проведем доказательство отдельно для каждой компоненты. Пусть граф связный и все циклы в нем четные.

Выделим произвольную вершину v0 и найдем произвольные цепи между v0

и всеми остальными вершинами (например, самые короткие алгоритмом

Компьютерные технологии проектирования. Часть 2

Стр. 39

Дейкстры). Если одна цепь (v0, vi) нечетной длины, то и любая цепь (v0, vi)

нечетная, иначе бы эти цепи образовали нечетный цикл. Аналогично, если

(v0, vi) — четная, то и любая (v0, vi) — четная. Разобьем вершины на две доли: в одну войдет вершина v0 и все, находящиеся от v0 на четном расстоянии; в другую долю поместим все вершины, находящиеся от v0 на нечетном расстоянии. Если вершины u1 и u2 принадлежат одной доле, то между ними не может быть ребра, иначе это ребро вместе с цепями (v0, u 1) и (v0, u2) образовали бы нечетный цикл. Ч. т. д. Частичной укладкой G ′

планарного графа G называется граф, который можно получить из какой -

нибудь укладки графа G на плоскости удалением каких-то ребер и вершин.

Таким образом, частичная укладка — это правильное начало укладки, в ней еще не сделано ошибок. В частичной укладке G ′ сопоставим каждому сегменту вершину в некотором постороннем служебном графе A(G ′), где вершины соединяются ребрами, если соответствующие сегменты являются конфликтующими. Лемма 3 Если результатом некоторого шага работы гамма-алгоритма является частичная укладка G′ планарного графа G такая,

что |Γ(S)| = 2 для любого сегмента S относительно G′, то A(G′) — двудольный граф. Доказательство. Пусть A(G′) — не двудольный, тогда по теореме Кенига в нем есть цикл нечетной длины. По Лемме 2 все вершины этого цикла вмещаются ровно двумя гранями. Поскольку цикл нечетный, мы не сможем уложить эти сегменты в две грани. Противоречие. Лемма доказана.

Используя доказанные выше утверждения, докажем корректность Гамма-

алгоритма. Теорема Гамма-алгоритм корректен, то есть, если G — планарный граф, то результатом каждого шага гамма -алгоритма является частичная укладка G′. Доказательство. Докажем индукцией по числу шагов. База индукции: результат инициализации есть плоская укладка, так как уложенный цикл будет в любой укладке. Шаг индукции: Пусть граф G'k − 1,

Компьютерные технологии проектирования. Часть 2 Стр. 40