Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3533 / 125 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик
Лекция 2:

Маршруты, связность, расстояния

< Лекция 1 || Лекция 2: 123 || Лекция 3 >

Маршруты и связность в орграфах

Для ориентированного графа можно определить два типа маршрутов. Неориентированный маршрут (или просто маршрут ) - это чередующаяся последовательность x_{1},e_{1},x_{2}, e_{2} \ldots e_{k-1},x_{k} вершин и ребер графа, такая, что для каждого i=1,2\ldots k-1 выполняется одно из двух: e_{i} =(x_{i},x_{i+1}) или e_{i} =\quad \left(x_{i+1},x_{i} \right). Маршрут называется ориентированным (или ормаршрутом ), если e_{i} =(x_{i},x_{i+1}) для каждого i. Таким образом, при движении вдоль маршрута в орграфе ребра могут проходиться как в направлении ориентации, так и в обратном направлении, а при движении вдоль ормаршрута - только в направлении ориентации. Это различие очевидным образом распространяется на пути и циклы, так что в орграфе можно рассматривать пути и орпути, циклы и орциклы. Будем говорить, что маршрут соединяет вершины x_{1} и x_{k}, а ормаршрут ведет из x_{1} в x_{k}.

Соответственно двум типам маршрутов определяются и два типа связности орграфов. Орграф называется связным (или слабо связным ), если для каждой пары вершин в нем имеется соединяющий их маршрут; он называется сильно связным, если для каждой упорядоченной пары вершин ( a,b ) в нем имеется ормаршрут, ведущий из a в b. Максимальные по включению подмножества вершин орграфа, порождающие сильно связные подграфы, называются его областями сильной связности, а порождаемые ими подграфы - компонентами сильной связности. Очевидно, разные области сильной связности не могут иметь общих вершин, так что множество вершин каждого орграфа разбивается на области сильной связности. Областями сильной связности орграфа на рис. 2.4 являются множества \{1, 2, 5\}, \{3, 4, 6, 7, 8\}, \{9\}.


Рис. 2.4.

Эйлеровы пути и циклы

Первая теорема теории графов была доказана задолго до того, как стало употребляться словосочетание "теория графов". В 1736 г. появилась работа Эйлера, в которой не только была решена предложенная ему задача о кенигсбергских мостах, но и сформулировано общее правило, позволяющее решить любую задачу такого рода. Интересно, что в одном из писем Эйлер писал по этому поводу:

"... это решение по своему характеру, по-видимому, имеет мало отношения к математике, и мне непонятно, почему следует скорее от математика ожидать этого решения, нежели от какого-нибудь другого человека ..."

На языке теории графов задача состоит в том, чтобы определить, имеется ли в графе путь, проходящий через все его ребра (напомним, что путь, по определению, не может дважды проходить по одному ребру). Такой путь называется эйлеровым путем, а если он замкнут, то эйлеровым циклом. В графе, изображенном на рис. 2.5 а, эйлеров цикл существует - например, последовательность вершин 1, 2, 4, 5, 2, 3, 5, 6, 3, 1 образует такой цикл. В графе же на рисунке 2.5 б эйлерова цикла нет, но есть эйлеровы пути, например, 2, 4, 5, 2, 1, 3, 5, 6, 3.


Рис. 2.5.

Рассмотрим сначала условия существования эйлерова цикла в обыкновенном графе. Ясно, что в несвязном графе эйлеров цикл может существовать только в том случае, когда все его ребра принадлежат одной компоненте связности, а все остальные компоненты - просто изолированные вершины. Поэтому достаточно рассматривать связные графы.

Теорема 5. Эйлеров цикл в связном графе существует тогда и только тогда, когда в нем степени всех вершин четны.

Доказательство.

Необходимость условия очевидна, так как при каждом прохождении цикла через какую-либо вершину используются два ребра - по одному из них маршрут входит в вершину, по другому выходит из нее (это относится и к стартовой вершине - в ней ведь маршрут должен закончиться). Докажем его достаточность.

Пусть G - связный граф, в котором больше одной вершины и степени всех вершин четны. Значит, степень каждой вершины не меньше 2, поэтому по теореме 2 в графе G имеется цикл Z_{1}. Если удалить все ребра этого цикла из графа G, то получится граф G_{1}, в котором степени вершин также четны. Если в G_{1} нет ни одного ребра, то Z_{1} - эйлеров цикл. В противном случае, применяя ту же теорему 2 к графу, полученному из G_{1} удалением всех изолированных вершин, заключаем, что в G_{1} имеется цикл Z_{2}. Удалив из G_{1} все ребра цикла Z_{2}, получим граф G_{2}. Продолжая действовать таким образом, пока не придем к пустому графу, получим в итоге систему циклов Z_{1} \ldots Z_{k}, причем каждое ребро графа принадлежит в точности одному из них. Покажем теперь, что из этих циклов можно составить один цикл. Действительно, из того, что исходный граф связен, следует, что хотя бы один из циклов Z_{1} \ldots Z_{k-1} имеет общую вершину с Z_{k}. Допустим, для определенности, что таков цикл Z_{k-1}. Пусть Z_{k} =x_{1},x_{2} \ldots x_{p}, Z_{k-1} = y_{1},y_{2}
\ldots y_{q}, и x_{i} =y_{j} для некоторых i и j. Тогда последовательность вершин

Z'_{k-1} =x_{1},x_{2} \ldots x_{i},y_{j+1},y_{j+2} \ldots y_{q},y_{2} \ldots
y_{j},x_{i+1}\ldots x_{p}

очевидно, является циклом, а множество ребер этого цикла есть объединение множеств ребер циклов Z_{k-1} и Z_{k}. Таким образом, получаем систему из меньшего числа циклов, по-прежнему обладающую тем свойством, что каждое ребро графа принадлежит в точности одному из них. Действуя далее таким же образом, в конце концов получим один цикл, который и будет эйлеровым.

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

Теперь нетрудно получить и критерий существования эйлерова пути.

Теорема 6. Эйлеров путь в связном графе существует тогда и только тогда, когда в нем имеется не более двух вершин с нечетными степенями.

Доказательство.

Если в графе нет вершин с нечетными степенями, то, по предыдущей теореме, в нем имеется эйлеров цикл, он является и эйлеровым путем. Не может быть точно одной вершины с нечетной степенью - это следует из теоремы 2 "Начальные понятия теории графов" . Если же имеются точно две вершины с нечетными степенями, то построим новый граф, добавив ребро, соединяющее эти вершины. В новом графе степени всех вершин четны и, следовательно, существует эйлеров цикл (возможно, что при добавлении нового ребра получатся кратные ребра, но, как отмечалось выше, теорема об эйлеровом цикле верна и для мультиграфов). Так как циклический сдвиг цикла - тоже цикл, существует и такой эйлеров цикл, в котором добавленное ребро - последнее. Удалив из этого цикла последнее ребро, получим эйлеров путь в исходном графе.

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

Теорема 7. Эйлеров цикл в связном орграфе существует тогда и только тогда, когда у каждой его вершины число входящих в нее ребер равно числу выходящих.

< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?

Александр Лаврентьев
Александр Лаврентьев

много инструкций вида if - then - else

Например Procedure DFS(a) опишите каким образом следует понимать вложенность инструкций. Как в языке С ? 

т.е. следующее 

if (...) then (...)

if (...) then (...)

else(...)

 

раскрывается как 

if (...) then (...)

if (...) then (...)

         else(...)

или так :

if (...) then

 {  (...)

     if (...) then (...)

              else(...)

}

обьясните пожалуйста.

 

 

Марк Селяев
Марк Селяев
Россия, Санкт-Петербург, Гимназия #24 им. И.А. Крылова
Константин Дементьев
Константин Дементьев
Россия, г. Мичуринск