Скачиваний:
87
Добавлен:
01.05.2014
Размер:
475.65 Кб
Скачать

Алгоритм построения Эйлеровой цепи.

Списки инцидентности.

Каждой вершине сопоставим список, в этом списке все вершины смежные с данным ребром.

[v] VV1V2…

Для изолированной вершины пустой список.

Граф – это массив списков.

[V1]  Для неориентированного графа ребро (V1,V2)графа вершина вV1 и

[V2]  эта же вершинаV2 может быть список списков.

….

[Vn] 

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

Списки инцидентности

S1 SE={} сюда будем заносить вершины, заносим все подряд.

Stack={V}

S2 If Stack – пустStopГраф имеет Эйлерову цепь

S3 else V:=top(stack) – Вытаскиваем верхний элемент

If (SI[V]0)U:=SI[V]; Список инцидентности, не пуст, то вытаскиваем элемент

Del(U,V) в списке дляU удаляемV, а в списке дляVудаляемUи заносим в стек

Если SI[V]=0, тоV SE{} иV удаляем из стека.

Пример:

4

3

5

1 6

8

2

7 9

Список Инцидентности

123

2378

31245

435

53468

65789

72689

82567

967

Stack 1 2,1 3,2,1 1X,3,2,1 4,3,2,1 5,4,3,2,1 3X,5,4,3,2,1 6,5,4,3,2,1

SE 0 0 0 1 1 1 1,3 1,3

Stack 7,6,5,4,3,2,1 2,7,6,5,4,3,2,1 8,2,7,6,5,4,3,2,1 5X,8,2,7,6,5,4,3,2,1

SE 1,3 1,3 1,3 1,3,5

Stack 6,8,2,7,6,5,4,3,2,1 9,6,8,2,7,6,5,4,3,2,1 7,9,6,8,2,7,6,5,4,3,2,1

SE 1,3,5 1,3,5 1,3,5

Удаляем весь стек SE 1,3,5,8,7,9,6,8,2,7,6,5,4,3,2,1

Деревья

Определение:Связанный граф не содержащий циклов называется деревом.

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

Дерево Лес

Теорема:48

Граф является деревом тогда и только тогда, когда между его двумя вершинами существует одна и только одна цепь.

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

Граф – дерево, тогда граф связан и две вершины можно соединить цепью, пусть есть две цепи, тогда из них, можно построить цикл (следствие 2, теорема 43) и наоборот.

Теорема:49

Дерево содержащее не менее двух вершин имеет, по крайней мере 2 концевые вершины (DegV<1).

Доказательство:Рассмотрим максимальную цепь:

a0x1a1x2…xLaL

Докажем, что deg a0 иaL =1

Пусть deg aL>1, тогда из нее есть реброaL+1, xLaL причемaL+1ai, иначе получился бы цикл, это не дерево => максимальная цепь удлиняется, значитdeg aL>1, тоже для а0.

Лемма: После удаления из дерева концевой вершины вместе с ребром получается дерево.

Теорема:50 Дерево с Р вершинами имеет Р-1 ребро.

Доказательство:Индукция поP:

1. P=1 - 0ребер.

2. Индукционный переход Пусть P<=k верно

Докажем для k+1>=2.

Дерево не более двух вершин или 2 концевые вершины (т. 49) по лемме одну концевую вершину убираем, тогда получим,

Для k вершин -k-1ребро

+ +

1 1

k+1 вершин -kребер

Определение:Дерево в графе, которое содержит, все его вершины называется каркасом данного графа (стягивающее дерево, покрывающий граф)

Т.е. ребра, которые надо оставить, чтобы сохранилась связанность.

каркас

Теорема:51 В связанном графе существует по крайней мере 1 каркас.

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

  1. Если в связанном графе нет циклов, то это дерево.

  2. Если есть циклы, то удаляем любое ребро из цикла, пока не кончиться цикл.

Пример, построения графа в глубину.

{(V,U)} идет в каркас, мы обойдем все вершины и у нас будет каркас( т.к. не будет циклов), мы не возвращаемся обратно в вершину.

8 9

5 6 7

2 3 4

1

8,5,6,7,4,3,2,1

Т – множество ребер, содержащих каркас.

T={(1,2), (2,3), (3,4), (4,7), (7,6), (6,5), (5,8), (6,9)}

Если граф дерево, то существует 1 каркас, если граф цикл, то – несколько.

Следствие к т.51

1) Граф связан G=(V,E) и есть подмножество реберFE, для любого цикла графаGсуществует хотя бы 1 ребро не лежащее вF, тогда можно построить каркасТ, все ребраFбудут принадлежатьT.T=(V,E`) FE`

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

Мы можем удалить ребро из цикла, не принадлежащее F.

2) Связанный граф с Р вершинами и Р-1 ребрами, является деревом.

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

Допустим P, P-1, если были бы циклы, то при построении Р вершин, было бы Р ребер, т.е. удаляя 1 ребро получим дерево.

  1. Если связанный граф имеет pвершин иqребер, тоq-p+1 >= 0.

Строя каркас, Р и Р-1 ребер, а в графе больше ребер, чем в каркасе. Следовательно это и будет >= 0.

Определение:Есть произвольный графp – вершин,q – ребер.

k– число компонент связности, тогда говорят, что:=p-k –называется корангом графа.

:=q-p+k – называется цикломатическим числом графа.

p1q1 p2q2 … pkqk

(V1,E1) (V2,E2) … (Vk,Ek)

k – число компонент связности. Тогда для любой компоненты есть коранг и цикломатическое число.

i:=pi –1 =i=1ki

i:=qi-pi+1 =i=1ki

Теорема:52

  1. Для любого графа его >=0, т.к.i=qi-pi+1>=0 (Теорема 51)

  2. G – связанный

G – дерево<=> =0 (необходимый и достаточный признак дерева).

Определение: Пусть есть связанный графP – вершин,q– ребер

G(V,E), T=(V,E) – стягивающее дерево

XE` - ребра из каркаса называются ветвями, которые не вошли хорды.

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

yE\E` y – хорда

Каждой хорде соответствует главный цикл.

М – главным циклов (сколько хорд)

P – вершин,q – ребер из них вычесть ветви (p-1)

q-(p-1)=

Пример: На главные циклы

x1,x2,x3,x4,x5 – ветви сy1e y2 циклы: bcedb: y1

y1,y2,y3 – хорды x2 b x3 x4dx5 f defd : y2

ax1 y3 abdfa: y3

Определение:Пусть есть каркас данного графа

Элементарное преобразование дерева. Вводим хорду, получаем цикл, удаляем ветвь, получаем каркас.

Соседние файлы в папке Шпаргалка по дискретной математике