Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по МОТС / ДИСКРЕТНАЯ МАТЕМАТИКА Графы.doc
Скачиваний:
398
Добавлен:
15.02.2014
Размер:
3.38 Mб
Скачать

10.2. Эйлеровы циклы

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

10.2.1. Эйлеровы графы

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

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

ТЕОРЕМА Если граф G связен и нетривиален, то следующие утверждения экви­валентны:

G — эйлеров граф;

каждая вершина G имеет четную степень;

множество ребер G можно разбить на простые циклы.

доказательство

1 => 2 Пусть Z — эйлеров цикл. Двигаясь по Z, будем подсчитывать степе-

ни вершин, полагая их до начала прохождения нулевыми. Прохождение каждой вершины вносит 2 в степень этой вершины. Поскольку Z содер­жит все ребра, то когда обход Z будет закончен, будут учтены все ребра, а степени всех вершин — четные.

2 => 3 G — связный и нетривиальный граф, следовательно, Vv d(v) > 0. Степени

вершин четные, следовательно, Vv d(v) ^ 2. Имеем:

2q = d(v) ^ 2р

^ р => q > р - 1.

Следовательно, граф G — не дерево, а значит, граф G содержит (хотя бы один) простой цикл Z\. (Zi — множество ребер.) Тогда G - Z\ -остовный подграф, в котором опять все степени вершин четные. Исклю­чим из рассмотрения изолированные вершины. Таким образом, G - Zi тоже удовлетворяет условию 2, следовательно, существует простой цикл Z2 С (G—Zi). Далее выделяем циклы Zi, пока граф не будет пуст. Имеем: Е = Zi и П Zi = 0.

3 =4> 1 Возьмем какой-либо цикл Z\ из данного разбиения. Если Zi = Е, то теорема доказана. Если нет, то существует цикл Z%, такой что

3ui (vi e Zi&v-i е Z2),

так как G связен. Маршрут Z\ U Z2 является циклом и содержит все свои ребра по одному разу. Если Z\ U Z2 = Я, то теорема доказана. Если нет, то существует цикл Z3, такой что Зи2 (г;2 € Zi U Z2&i;2 G Z3). Далее будем наращивать эйлеров цикл, пока он не исчерпает разбиения. П

10.2.2. Алгоритм построения эйлерова цикла в эйлеровом графе

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

Алгоритм 10.1. Алгоритм построения эйлерова цикла

Вход: эйлеров граф G(V, Е), заданный списками смежности (Г[г>] — список вершин, смеж­ных с вершиной v).

Выход: последовательность вершин эйлерова цикла. S: = 0 { стек для хранения вершин } select v G V { произвольная вершина } v —> S { положить v в стек S } while S ф 0 do

v <r- S;v —> S {v — верхний элемент стека } if Г>] = 0 then v 4- 5; yield v else

select u € T[v] { взять первую вершину из списка смежности } и —¥ S { положить и в стек }

1>]: = 1>] \ {и}; Г [и]: = Г [и] \ {v} { удалить ребро (v, и) } end if end while

обоснование

Принцип действия этого алгоритма заключается в следующем. Начиная с произ­ вольной вершины, строим путь, удаляя ребра и запоминая вершины в стеке, до тех пор пока множество смежности очередной вершины не окажется пустым, что означает, что путь удлинить нельзя. Заметим, что при этом мы с необходимостью придем в ту вершину, с которой начали. В противном случае это означало бы, что вершина v имеет нечетную степень, что невозможно по условию. Таким образом, из графа были удалены ребра цикла, а вершины цикла были сохранены в стеке 5. Заметим, что при этом степени всех вершин остались четными. Далее вершина v выводится в качестве первой вершины эйлерова цикла, а процесс продолжается, начиная с вершины, стоящей на вершине стека.