Гамма-алгоритм (в общем виде) 3 страница

Определение. Матрицей Кирхгофа Гамма-алгоритм (в общем виде) 3 страница - student2.ru простого графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru называется Гамма-алгоритм (в общем виде) 3 страница - student2.ru -матрица с элементами, которые определяются так:

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Сумма элементов в каждой строке и каждом столбце матрицы Гамма-алгоритм (в общем виде) 3 страница - student2.ru равна нулю.

Теорема Кирхгофа. Число остовных деревьев в простом связном графе Гамма-алгоритм (в общем виде) 3 страница - student2.ru с Гамма-алгоритм (в общем виде) 3 страница - student2.ru вершинами равно алгебраическому дополнению любого элемента матрицы Кирхгофа Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

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

Задача отыскания кратчайшего остова графа является классической задачей теории графов. Методы решения этой задачи послужили основой для многих других важных результатов. Задача о нахождении кратчайшего остова принадлежит к числу немногих задач теории графов, которые можно считать полностью решенными. Между тем, если изменить условия задачи, на первый взгляд даже незначительно, то она оказывается значительно более трудной.

Алгоритм строит остов:

Вход: граф Гамма-алгоритм (в общем виде) 3 страница - student2.ru , заданный матрицей длин рёбер Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Выход: остов Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

while в Гамма-алгоритм (в общем виде) 3 страница - student2.ru больше одного элемента do

взять любое поддерево из Гамма-алгоритм (в общем виде) 3 страница - student2.ru

найти к нему ближайшее

соединить эти деревья в Гамма-алгоритм (в общем виде) 3 страница - student2.ru

end while

В частности, исследования алгоритма Краскала привели в конечном счете к теории жадных алгоритмов. Следующий жадный алгоритм, известный как алгоритм Краскала, находит кратчайший остов в связном графе.

Алгоритм Краскала

Вход: список Гамма-алгоритм (в общем виде) 3 страница - student2.ru рёбер графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru с длинами. Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Выход: множество Гамма-алгоритм (в общем виде) 3 страница - student2.ru рёбер кратчайшего остова.

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Упорядочить Гамма-алгоритм (в общем виде) 3 страница - student2.ru в порядке возрастания длин

Гамма-алгоритм (в общем виде) 3 страница - student2.ru { номер рассматриваемого ребра }

for Гамма-алгоритм (в общем виде) 3 страница - student2.ru from 1 to Гамма-алгоритм (в общем виде) 3 страница - student2.ru do

while добавление ребра Гамма-алгоритм (в общем виде) 3 страница - student2.ru образует цикл в Гамма-алгоритм (в общем виде) 3 страница - student2.ru do

Гамма-алгоритм (в общем виде) 3 страница - student2.ru {пропустить ребро }

Гамма-алгоритм (в общем виде) 3 страница - student2.ru end while

Гамма-алгоритм (в общем виде) 3 страница - student2.ru {добавить это ребро в SST }

end for

(SST-Shortest Sceleton Tree - стандартное обозначение для кратчайшего остова).

Пример. Дан нагруженный граф Гамма-алгоритм (в общем виде) 3 страница - student2.ru . Необходимо построить минимальное остовное дерево Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

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

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 21.8

Рисунки 21.9 – 21.11 иллюстрируют работу алгоритма Краскала.

Шаг Ребро Стоимость +/-
(1, 7) включаем
(3, 4) включаем
(2, 7) включаем
(3, 7) включаем
  (2, 3) образует цикл, не включаем
  (4, 7) образует цикл, не включаем
(1, 5) включаем
  (1, 2) образует цикл, не включаем
(1, 6) Включаем. Все вершины включены в остов. Конец.
  (5, 7)  
  (5, 6)  
  (6, 7)  

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 21.9

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 21.10

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 21.11

В результате работы алгоритма получаем остов минимальной стоимости: Гамма-алгоритм (в общем виде) 3 страница - student2.ru =57.

21.7 Ориентированные и бинарные деревья. Определения

Ориентированное дерево (корневое ориентированное дерево) (рис. 21.12) – это ориентированный граф без циклов со свойствами:

1. Существует в точности одна вершина Гамма-алгоритм (в общем виде) 3 страница - student2.ru , называемая корнем, в которую не заходит ни одна дуга.

2. В каждую вершину, кроме корня, заходит в точности одна дуга.

3. Существует путь из корня в любую другую вершину.

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 21.12

Потомок Гамма-алгоритм (в общем виде) 3 страница - student2.ru вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это вершина Гамма-алгоритм (в общем виде) 3 страница - student2.ru , в которую ведет путь из вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru ; при этом Гамма-алгоритм (в общем виде) 3 страница - student2.ru называется предком для Гамма-алгоритм (в общем виде) 3 страница - student2.ru . Если длина этого пути равна 1, то есть из Гамма-алгоритм (в общем виде) 3 страница - student2.ru в Гамма-алгоритм (в общем виде) 3 страница - student2.ru ведет дуга, то Гамма-алгоритм (в общем виде) 3 страница - student2.ru – «отец» для Гамма-алгоритм (в общем виде) 3 страница - student2.ru , а Гамма-алгоритм (в общем виде) 3 страница - student2.ru – «сын» для Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Вершины, у которых общий отец, называются братьями или сестрами.

Вершина, не имеющая потомков, называется листом.

Глубина вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru в дереве – это длина пути из корня в Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Высота вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru в дереве – это длина самого длинного пути из Гамма-алгоритм (в общем виде) 3 страница - student2.ru в какой-нибудь лист.

Высота дерева – это число дуг самого длинного пути, то есть высота корня.

Уровень вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это разность между высотой всего дерева и глубиной вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Высота дерева на рис. 21.13 равна 3, вершина 8 имеет глубину 2, высоту 1, уровень 1.

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 21.13

Лемма. Если в любом неориентированном дереве Гамма-алгоритм (в общем виде) 3 страница - student2.ru выбрать произвольную вершину Гамма-алгоритм (в общем виде) 3 страница - student2.ru в качестве корня и сориентировать все ребра в направлении «от корня», т.е. сделать Гамма-алгоритм (в общем виде) 3 страница - student2.ru началом всех инцидентных ей ребер, вершины, смежные с Гамма-алгоритм (в общем виде) 3 страница - student2.ru – началами всех инцидентных им еще не сориентированных ребер и т.д., то полученный в результате ориентированный граф Гамма-алгоритм (в общем виде) 3 страница - student2.ru будет ориентированным деревом.

Упорядоченное ориентированное дерево – это дерево, у которого множество сыновей каждой вершины упорядочено, обычно слева направо, как на рисунке 62: Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Бинарное (двоичное) дерево Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это упорядоченное дерево, из каждой вершины которого может исходить не более двух дуг. Ориентированное дерево называют бинарным, если полустепень исхода любой его вершины не больше 2.

Бинарное ориентированное дерево называют полным, если из любой его вершины, не являющейся листом, исходят ровно две дуги, а уровни всех листьев совпадают.

Каждая вершина бинарного дерева может иметь либо двух сыновей – левого и правого (вершина 2 имеет левого сына 3 и правого сына 4), либо иметь только левого сына (левый сын 9 вершины 8), либо только правого сына (вершина 5 – единственный правый сын вершины 4), либо не иметь ни одного сына (листья 3, 5, 7, 9).

Бинарное дерево называется полным, если у каждой его внутренней вершины имеется два сына и все его ветви имеют одинаковую длину.

Полное бинарное дерево уровня Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это дерево, в котором каждый узел уровня Гамма-алгоритм (в общем виде) 3 страница - student2.ru является листом и каждый узел уровня меньше Гамма-алгоритм (в общем виде) 3 страница - student2.ru имеет непустые левое и правое поддеревья.

На рис. 21.14 приведен пример полного бинарного дерева уровня 3.

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 21.14

Левое поддерево вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это максимальное поддерево, корнем которого является левый сын Гамма-алгоритм (в общем виде) 3 страница - student2.ru вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Правое поддерево вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это максимальное поддерево, корнем которого является правый сын Гамма-алгоритм (в общем виде) 3 страница - student2.ru вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

На рисунке 6.77 левое поддерево вершины 6 состоит из одной вершины 7, правое поддерево – из вершин 8, 9 и дуги (8,9).

Теорема 21.5 (теорема о высоте бинарного ориентированного дерева с заданным числом листьев). Бинарное ориентированное дерево с Гамма-алгоритм (в общем виде) 3 страница - student2.ru листьями имеет высоту, не меньшую Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

21.8 Правила прохождения бинарных деревьев

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

Существует 3 способа обхода бинарного дерева:

1. В прямом порядке.

2. В симметричном порядке.

3. В обратном порядке.

В прямом порядке (обход в прямом порядке, прямой обход, упорядоченный обход, обход сверху, обход в ширину, preorder):

1. Попасть в корень.

2. Пройти в прямом порядке левое поддерево.

3. Пройти в прямом порядке правое поддерево.

В симметричном порядке (обход симметричным способом, симметричный обход, inorder):

1. Пройти в симметричном порядке левое поддерево.

2. Попасть в корень.

3. Пройти в симметричном порядке правое поддерево.

В обратном порядке (обход в обратном порядке, обход в глубину, обратный обход, обход снизу, postorder):

1. Пройти в обратном порядке левое поддерево.

2. Пройти в обратном порядке правое поддерево.

3. Попасть в корень.

21.9 Эквивалентные бинарные деревья

Дерево и лес любого вида можно преобразовать единственным образом в эквивалентное бинарное дерево.

Правило построения бинарного дерева из любого дерева:

1. В каждом узле оставить только ветвь к старшему сыну (вертикальное соединение).

2. Соединить горизонтальными ребрами всех братьев одного отца.

3. Таким образом перестроить дерево по правилу:

– левый сын – вершина, расположенная под данной вершиной;

– правый сын – вершина, расположенная справа от данной вершины(т.е. на одном ярусе с ней).

4. Развернуть дерево таким образом, чтобы все вертикальные ветви отображали левых сыновей, а горизонтальные – правых.

В результате преобразования любого дерева в бинарное получается дерево в виде левого поддерева, подвешенного к корневой вершине.

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

Правило построения бинарного дерева из леса: корни всех поддеревьев леса соединить горизонтальными связями. В полученном дереве узлы в данном примере будут располагаться на трех уровнях. Далее перестраивать по ранее рассмотренному плану. В результате преобразования упорядоченного леса в бинарное дерево получается полное бинарное дерево с левым и правым поддеревом.

21.10 Контрольные вопросы и задания

1. Какой граф называется деревом. Приведите примеры деревьев.

2. Что называется лесом в теории графов?

3. Перечислите основные свойства деревьев.

4. Какой формулой можно воспользоваться для определения количества неориентированных помеченных графов?

5. Какой формулой можно воспользоваться для определения количества неориентированных помеченных деревьев?

6. Как определить число неизоморфных графов без пометок?

7. В каких случаях используется формула А. Кэли? Приведите эту формулу.

8. Дайте определения основа (каркаса) графа.

9. Приведите пример составления матрицы Кирхгофа простого графа.

10. Для решения каких задач используется теорема Кирхгофа.

11. Перечислите основные алгоритмы построения остовов графа.

12. Приведите алгоритм Краскала для построения остова графа.

13. Дайте определение ориентированных и бинарных деревьев.

14. Охарактеризуйте способы обхода бинарного дерева.

Лекция 22. Цикломатика графов. Раскраска графов

22.1 Цикломатика графов

22.1.1 Определения цикломатики графов

Маршрут (соединяющий вершины Гамма-алгоритм (в общем виде) 3 страница - student2.ru и Гамма-алгоритм (в общем виде) 3 страница - student2.ru ) – это конечная последовательность ребер и инцидентных им вершин, составляющих непрерывную кривую с концами Гамма-алгоритм (в общем виде) 3 страница - student2.ru и Гамма-алгоритм (в общем виде) 3 страница - student2.ru . Число ребер в маршруте называется его длиной.

Маршрут замкнут, если концы его совпадают ( Гамма-алгоритм (в общем виде) 3 страница - student2.ru ).

Маршрут, в котором все рёбра попарно различны, называется цепью.

Маршрут, в котором все вершины попарно различны, называется простой цепью.

Цикл – это замкнутая цепь.

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

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

Пример. В графе на рис. 22.1: 1. 1, 3, 1, 4 – маршрут, но не цепь; 2. 1, 3, 5, 2, 3, 4 – цепь, но не простая цепь; 3. 1, 4, 3, 2, 5 – простая цепь; 4. 1, 3, 5, 2, 3, 4, 1 – цикл, но не простой цикл; 5. 1, 3, 4, 1 – простой цикл.

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 22.1

Граф называется ациклическим, если он не содержит циклов (рис. 22.2).

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 22.2– Ациклический граф (дерево)

Следующие три определения равнозначны:

Каркас (остов) – это максимальный подграф без циклов.

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

Остовный подграф графа – это подграф, содержащий все вершины графа.

Пример.На рис. 22.3 жирными линиями выделены ребра остова.

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 22.3– Остов и кодерево

Деревомназывается связный граф, не содержащий ни одного цикла.

Хордой остова Гамма-алгоритм (в общем виде) 3 страница - student2.ru в связном графе Гамма-алгоритм (в общем виде) 3 страница - student2.ru называется всякое ребро графа, не принадлежащее Гамма-алгоритм (в общем виде) 3 страница - student2.ru . Любой подграф, который состоит из хорды и остова, имеет точно один цикл.

Кодерево графа – такой подграф графа, который содержит все его вершины и те ребра, которые не вошли в остов.

Пример.На рис. 22.3 полужирными линиями выделены ребра остова, тонкими линиями – ребра кодерева.

22.1.2 Цикломатическое число и его свойства

Определение.Наименьшее число Гамма-алгоритм (в общем виде) 3 страница - student2.ru , показывающее, сколько ребер необходимо удалить из графа, чтобы получить его остов, называется цикломатическим числом. Гамма-алгоритм (в общем виде) 3 страница - student2.ru , то есть, чтобы найти цикломатическое число графа, необходимо из числа ребер вычесть число вершин и к результату прибавить число компонент.

В случае связного графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru , следовательно, Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Пример. Для графа, приведенного на рис. 22.4, Гамма-алгоритм (в общем виде) 3 страница - student2.ru ; Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 22.4

Цикломатическое число всегда неотрицательно.

Цикломатическое число остова графа равно нулю.

Основное свойство цикломатического числа формулируется в виде теоремы: цикломатическое число мультиграфа равно максимальному числу независимых циклов.

Цикломатическое число несвязного графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru с Гамма-алгоритм (в общем виде) 3 страница - student2.ru компонентами связности Гамма-алгоритм (в общем виде) 3 страница - student2.ru может быть определено как сумма цикломатических чисел его компонент связности: Гамма-алгоритм (в общем виде) 3 страница - student2.ru

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

Цикломатическое число графа постоянно и равно числу линейно-независимых циклов графа.

22.1.3 Цикломатическая матрица

Определение. Гамма-алгоритм (в общем виде) 3 страница - student2.ru – цикломатическая матрица графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это матрица, столбцам которой соответствуют ребра графа, а строки соответствуют циклам. Гамма-алгоритм (в общем виде) 3 страница - student2.ru . Каждый элемент этой строки определяется следующим образом:

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Каждому циклу графа взаимно однозначно сопоставляется вектор-строка матрицы Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Цикломатическая матрица не задает граф с точностью до изоморфизма.

22.1.4 Базис циклов

Определение.Множество Гамма-алгоритм (в общем виде) 3 страница - student2.ru всех векторов, каждый из которых соответствует одному циклу графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru , образует векторное пространство, называемое пространством циклов графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru . При этом для любых двух циклов Гамма-алгоритм (в общем виде) 3 страница - student2.ru существует некоторый третий цикл Гамма-алгоритм (в общем виде) 3 страница - student2.ru , где символ Гамма-алгоритм (в общем виде) 3 страница - student2.ru обозначает поразрядное сложение по модулю два.

Определение. Базисом пространства цикловназывается всякая система линейно независимых векторов, порождающая данное пространство. Всякий элемент пространства циклов единственным образом представим в виде линейной комбинации векторов базиса пространства циклов. Если пространство имеет базис из Гамма-алгоритм (в общем виде) 3 страница - student2.ru векторов, то оно называется Гамма-алгоритм (в общем виде) 3 страница - student2.ru -мерным пространством.

Система циклов графа называется полной, если любой цикл данного графа представляется в виде линейной комбинации циклов из этой системы.

Базисом циклов графа называется любая полная линейно независимая система циклов данного графа. Базис циклов графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru – это базис пространства циклов графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru , состоящий из простых циклов. Любой вектор пространства циклов графа Гамма-алгоритм (в общем виде) 3 страница - student2.ru можно представить в виде линейной комбинации векторов базиса циклов.

Пример.Рассмотрим граф, изображенный на рис. 22.5.

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 22.5

Цикломатическая матрица Гамма-алгоритм (в общем виде) 3 страница - student2.ru этого графа имеет вид:

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

В качестве базиса циклов можно взять множество циклов Гамма-алгоритм (в общем виде) 3 страница - student2.ru . Можно убедиться в том, что все остальные циклы выражаются их линейными комбинациями: Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Определение. Сечение графа – это множество рёбер, удаление которых делит граф на два изолированных подграфа,

Сечение Гамма-алгоритм (в общем виде) 3 страница - student2.ru называется фундаментальным (по дереву Гамма-алгоритм (в общем виде) 3 страница - student2.ru ), если оно содержит в точности одну дугу Гамма-алгоритм (в общем виде) 3 страница - student2.ru дерева Гамма-алгоритм (в общем виде) 3 страница - student2.ru , а ориентация сечения Гамма-алгоритм (в общем виде) 3 страница - student2.ru согласована с ориентацией дуги Гамма-алгоритм (в общем виде) 3 страница - student2.ru .

Пример.На рис. 22.6 пунктирами показаны фундаментальные сечения Гамма-алгоритм (в общем виде) 3 страница - student2.ru по дереву Гамма-алгоритм (в общем виде) 3 страница - student2.ru «большая медведица».

Гамма-алгоритм (в общем виде) 3 страница - student2.ru

Рисунок 22.6

Наши рекомендации