Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по прикладной математике.doc
Скачиваний:
165
Добавлен:
02.05.2014
Размер:
4 Мб
Скачать
☆

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

Для начала отметим, что теорема 7.1 также дает метод построения эйлерова цикла. Здесь мы рассмотрим несколько иной алгоритм.

Пусть G(X,E) — связный неорентированный граф, не имеющий вершин нечетной степени. Назовем мостом такое ребро, удаление которого из связного графа разбивает этот граф на две компоненты связности, имеющие хотя бы по одному ребру.

1. Пустьa— произвольная вершина графаG. Возьмем любое реброe1=(a,x1) , инцидентное вершинеa, и положим= {e1}.

2. Рассмотрим подграфG1(X,E\1). Возьмем в качествеe2ребро, инци­дентное вершинеx1и неинцидентное вершинеa, которое также не является мостом в подграфеG1(если такое реброe2существует!). Получим простую цепь2= {e1,e2}.

3. Пустьe2 = (x1,x2),xa. Рассмотрим подграфG2(X,E\2) и удалим из него все изо­лированные вер­шины. В полученном подграфевыберем реброe3E\2, инцидентное вершинеa, которое не является мостом в под­графе(если такое реброe3суще­ству­ет!). Получим простую цепь

3= {e1,e2,e3}.

Продолжая указанный процесс, мы через конечное число шагов получим эйлеров цикл = {e1,e2, …,en}, гдеn— число ребер графаG(X,E).

Обоснование алгоритма

Предположим, что уже построена простая цепь k-1= {e1,e2, …,ek-1} дляk2 методом, указанным в алгоритме. Пустьek-1= (xk-2,xk-1) иxk-1a. Рас­смо­трим подграф, который получается из подграфаGk-1(X,E\k-1) удалением всех изолированных вершин. Вершинаxk-1в этом подграфеимеет нечет­ную степень, поэтому существует по крайней мере одно реброekE\k-1, ин­ци­дентноеxk-1. Если это ребро единственное, то оно не является мостом в графе. В противном случае вершинаaбудет связана с некоторой вер­ши­нойединственной цепью, содержащей реброek, что противоречит суще­ствованию эйлерова цикла в графеG. Посколькуek- не мост, то процесс мож­но продолжать, взяв. Если реброekне единственное инци­дентное вершинеxk-1, то среди этих ребер есть по крайней мере одно, не явля­ющееся мостом. В противном случае один из этих мостовможно выбро­сить так, что вершиныxk-1иaпопадут в разные компоненты связности графа. Еслиxk-1принадлежит компонентеM, то в этой компоненте все вер­шины имеют четную степень, поэтому существует эйлеров цикл вM, про­хо­дящий черезxk-1. Этот цикл содержит все ребра, инцидентныеxk-1и при­над­лежащие, являющиеся одновременно мостами. Получено противоречие, так как ребра из эйлерова цикла мостами быть не могут. Итак, в рассмотренном случае существует реброek, инцидентное вершинеxk-1и не являющееся мостом. Значит, и в этом случае процесс можно продолжать, взяв

.

Из предыдущего следует, что процесс нельзя продолжать тогда и только тогда, когда мы попадем в вершину a, причем степень вершиныaотносительно непройденных ребер равна нулю. Докажем, что в этом случае построенный цикл- простой цикл. Покажем, чтосодержит все ребра графаG. Если не все ребра графаGпринадлежат, то не принадлежащиеребра порождают компоненты связностиC1, …,Cm(m1) в подграфе. Пусть компонентаCi, 1imсоединяется с цикломв вершинеyi. Если существует реброe, такое, чтоe=(yi,a), то при построении циклабыло нарушено правило выбора ребраe, что невозможно. Если часть цикла, соединяющаяyiиa, состоит более чем из одного ребра, то первое ребро этой частибыло мостом, и поэтому было нарушено правило вы­бора, что невозможно. Итак, непройденных ребер быть не может, поэ­тому- эйлеров цикл.