Связность графов

Содержание

Слайд 2

2.1. Маршруты, цепи, циклы

2.1. Маршруты, цепи, циклы

Слайд 3

Маршруты

 

Маршруты

Слайд 4

Цепи и циклы

Цепи и циклы

 

Слайд 5

Лемма. Всякий маршрут графа содержит хотя бы одну простую цепь, соединяющую

Лемма. Всякий маршрут графа содержит хотя бы одну простую цепь, соединяющую

ту же пару вершин.

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

 

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

Слайд 6

Пример Маршрут a 1 b 2 c 3 d 4 b

Пример

Маршрут a 1 b 2 c 3 d 4 b 5

e содержит простую цепь a 1 b 5 e.

Следствие Всякий кратчайший маршрут между двумя заданными вершинами графа есть простая цепь.
Всякий цикл наименьшей длины при заданной вершине является простым.

Слайд 7

Если маршрут рассматривать с учетом ориентации ребер (может быть и по

Если маршрут рассматривать с учетом ориентации ребер (может быть и по

звеньям), то получим соответствующие определения:

ориентированный маршрут (ормаршрут);
ориентированная цепь (орцепь) – путь;
простая орцепь – простой путь.

Слайд 8

Задачи о маршрутах В теории рассматривается ряд задач и алгоритмов определения

Задачи о маршрутах
В теории рассматривается ряд задач и алгоритмов определения

свойств маршрутов:
существование маршрутов заданной длины;
достижимость вершин;
число маршрутов заданной длины;
компоненты связности и бисвязности;
кратчайшие цепи/пути;
кратчайшие цепи/пути на взвешенных графах.
Слайд 9

Существование маршрутов Рассматривается неориентированный (маршрут не предполагает ориентации) униграф (важен лишь

Существование маршрутов

Рассматривается неориентированный (маршрут не предполагает ориентации) униграф (важен лишь факт

смежности вершин).

Такой граф можно рассматривать как симметричное бинарное отношение и его можно задать матрицей смежности R, элементы rij которой – булевы. rij=1, если вершины смежны; из вершины xi существует маршрут длины 1 в вершину xj.

Элемент матрицы R2

 

определяет существование

маршрута длины 2 между этими вершинами. Далее по индукции:

 

(*)

Слайд 10

и вершины xk и xj смежны. Для маршрутов других видов задаются соответствующие матрицы смежности.

и вершины xk и xj смежны.

Для маршрутов других видов задаются соответствующие

матрицы смежности.
Слайд 11

Нахождение маршрутов Зададим граф общего вида тройками вида (x,v,y), где x,y∈V,

Нахождение маршрутов

Зададим граф общего вида тройками вида (x,v,y), где x,y∈V, v

∈E.
Умножение отношений примет следующий вид: если существует
маршрут из вершины xi в вершину xk длины l-1 и есть ребро (xk, v, xj),
то оно добавляется к маршруту длины l.

Длина 1

a1a
a2b
b2a
b3c
b4c
c3b
c4b

Длина 2

a1a1a
a1a2b
a2b2a
a2b3c
a2b4c
b2a1a
b2a2b
b3c3b

Длина 3

 

 

Слайд 12

Число маршрутов

Число маршрутов

 

 

 

Слайд 13

Число различных маршрутов длины 2 из вершины xi в вершину xj

 

Число различных маршрутов длины 2 из вершины xi в вершину xj


через вершину xk есть

Далее по индукции.

Здесь сложение и умножение – обычные арифметические
операциии.

Слайд 14

Пример Для орграфов изменяется только матрица R.

Пример

Для орграфов изменяется только матрица R.

Слайд 15

c

c

Слайд 16

Достижимость

 

Достижимость

Слайд 17

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

Ориентированные маршруты

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

(орцепь) часто называется путем , а ориентированный цикл – орциклом (контуром).
Слайд 18

2.2. Компоненты связности

2.2. Компоненты связности

Слайд 19

Компоненты и бикомпоненты

Компоненты и бикомпоненты

 

Слайд 20

Отношение «быть в одной компоненте » для ребер – эквивалентность, как и для вершин.

 

Отношение «быть в одной компоненте » для ребер – эквивалентность,
как

и для вершин.
Слайд 21

 

 

 

 

Слайд 22

Для ориентированных графов

Для ориентированных графов

 

Слайд 23

Множество вершин, достижимых из вершины x, обозначим Д(x). Теорема Вершины x

Множество вершин, достижимых из вершины x, обозначим Д(x).

Теорема Вершины x и

y взаимодостижимы тогда и только
тогда, когда Д(x) = Д(y).
⇒ Если x и y взаимодостижимы, то для любой вершины z∈V
ввиду транзитивности отношения взаимодостижимости,
из z∈ Д(x) следует z ∈Д(y), а из z ∈Д(y) следует z∈Д(x),
Поэтому Д(x) = Д(y).
⇐ Пусть Д(x) = Д(y). Так как x∈ Д(x) и y ∈Д(y), то из равенства
Д(x) = Д(y) следует, что y ∈Д(x) и x∈ Д(y), т.е. вершины x и y
взаимодостижимы.
Слайд 24

 

 

 

Слайд 25

Алгоритм работает «на месте» -- матрица Rl+1 записывается на месте матрицы R.

Алгоритм работает «на месте» -- матрица Rl+1 записывается на месте матрицы

R.

 

Слайд 26

Фрагмент программы выглядит так: Пример (для компонент) (**)

Фрагмент программы выглядит так:

Пример (для компонент)

(**)

Слайд 27

 

Слайд 28

1 2 3 5 4 Пример (бикомпоненты, матрица достижимости)

1

2

3

5

4

Пример (бикомпоненты, матрица достижимости)

 

 

Слайд 29

Фрагмент программы: for k=1 to n for i=1 to n (***)

 

Фрагмент программы:
for k=1 to n
for i=1 to n (***)

for j=1 to n
{r[i,j]:=r[i,j]∨r[i,k] ∧ r[k,j];}

 

Слайд 30

Ахо А., Хопкрофт Д., Ульман Д. (стр. 194-195) Структуры данных и

 

Ахо А., Хопкрофт Д., Ульман Д. (стр. 194-195)
Структуры данных и алгоритмы.

: Пер. с англ. : Уч. пос. — М. : Из-
дательский дом "Вильямс", 2000. — 384 с.

Алгоритм работает «на месте» -- матрица Rk записывается на месте матрицы R.

Слайд 31

Пример (алгоритм Уоршалла)

Пример (алгоритм Уоршалла)

 

 

Слайд 32

Warshall Stephen (1935 – 2006) https://en.wikipedia.org/wiki/Stephen_Warshall Warshall carried out research and

Warshall Stephen (1935 – 2006)

https://en.wikipedia.org/wiki/Stephen_Warshall

Warshall carried out research and development in

operating systems, compiler design, language design, and operations research.
Known for Floyd–Warshall algorithm
Слайд 33

2.3. Кратчайшие цепи

2.3. Кратчайшие цепи

Слайд 34

Волновой алгоритм

 

Волновой алгоритм

 

Слайд 35

 

Слайд 36

0 1 2 3 3 4 4 5 6 7 Пример

0

1

2

3

3

4

4

5

6

7

 

Пример 1. Задача о Волке, Козе (Кз) и Капусте (Кп), которых

Перевозчик (П) перевозит с одного берега реки на другой в двухместной лодке

Вершины графа соответствуют наличию персонажей на исходном берегу. Показаны только допустимые комбинации.

Слайд 37

Слайд 38

https://www.youtube.com/watch?v=YDX-ohCVtxY

https://www.youtube.com/watch?v=YDX-ohCVtxY

Слайд 39

1 1 1 1 1 1 1 1 2 2 2

1

1

1

1

1

1

1

1

2

2

2

2

2

2

2

2

2

2

2

2

2

3

3

3

3

3

3

3

3

3

3

4

4

4

4

4

4

4

4

4

4

4

4

4

4

5

5

5

5

5

5

5

5

5

5

6

6

6

6

6

6

6

6

6

6

6

6

7

7

7

7

7

7

7

7

7

7

7

7

7

7

7

7

7

8

8

8

0

Пример 2. Волновой алгоритм прокладки проводов на плате (алгоритм Ли)

Слайд 40

Взвешенный граф

Взвешенный граф

 

Слайд 41

Пример

Пример

 

 

Слайд 42

Алгоритм Беллмана - Форда

Алгоритм Беллмана - Форда

 

 

Слайд 43

 

Слайд 44

 

Слайд 45

+

 

 

+

 

Слайд 46

0a ∞b ∞c 10 a ∞f ∞d ∞e 1 a 17b

0a

∞b

∞c

10 a

∞f

∞d

∞e

1 a

17b

12b

3 d

9

d

7 d

16 e

5 b

8 e

 

13 c

Пример

Слайд 47

Если метка у вершины не меняется, клетка в следующей строке данного

Если метка у вершины не меняется, клетка в следующей строке данного

столбца не заполняется. Заключительные метки выделены красным цветом.

Иллюстрация работы алгоритма Форда

Слайд 48

В таком представлении алгоритм Беллмана — Форда более пригоден для «ручного»

В таком представлении алгоритм Беллмана — Форда более пригоден
для «ручного» исполнения.


Пусть вершины пронумерованы V={1,2,…,n} и начальная вершина
s =1. Метка вершины L(x)=[l(x),p(x)], где l(x) – метка расстояния

i

j

k

 

 

 

 

Для нахождения кратчайших цепей/путей между всеми парами вер-шин нужно выполнить цикл по i.

Слайд 49

Пример 1 2 3 4 ⊗

Пример

1

2

3

4


Слайд 50

БЕЛЛМАН, Ричард (1920- 1984) – «отец «динамического программирования» - американский математик.

БЕЛЛМАН, Ричард (1920- 1984) – «отец «динамического программирования» - американский математик.

Опубликовал 619 статей и 39 книг. Один из наиболее цитируемых математиков в мире.
В расцвете творческой жизни после удаления опухоли на позвоночнике 11 лет был прикован к инвалидному креслу, но сохранил полную работоспособность .

ФОРД, Лестер младший (1927 - 2017) – американский математик. Независимо от Беллмана в 1956 г. предложил алгоритм нахождения кратчайшего пути в графе, вместе с Фалкерсоном доказал теорему о наибольшем потоке в сети.

Слайд 51

Алгоритм Дейкстры

Алгоритм Дейкстры

 

 

 

Слайд 52

 

 

Слайд 53

 

Слайд 54

0a ∞b ∞c ∞d ∞e ∞f 10a 1a 3d 9d 7d 5b 8e 14e 13c

0a

∞b

∞c

∞d

∞e

∞f

10a

1a

3d

9d

7d

5b

8e

14e

13c

Слайд 55

Иллюстрация работы алгоритма Дейкстры

Иллюстрация работы алгоритма Дейкстры

Слайд 56

Обобщения 1. Алгоритмы Беллмана – Форда и Дейкстры легко распространяются на

Обобщения

1. Алгоритмы Беллмана – Форда и Дейкстры легко распространяются на случай

ориентированных (частично ориентированных) графов, при этом каждое неориентированное ребро представляется двумя дугами, ориентированными в разные стороны. Более того, веса (длины) этих дуг могут быть различными.
2. В алгоритме Беллмана – Форда допускаются отрицательные веса ребер, такие постановки задачи иногда полезны в приложениях. Этим он принципиально отличается от алгоритма Дейкстры, где отрицательные веса невозможны. Но «всеядность» алгоритма Беллмана – Форда оплачивается его более высокой трудоемкостью.
Слайд 57

ДЕЙКСТРА, Эдсгер (Edsger Dijkstra; 1930-2002). Нидерландский учёный, труды которого оказали большое

ДЕЙКСТРА, Эдсгер (Edsger Dijkstra; 1930-2002). Нидерландский учёный, труды которого оказали большое

влияние на развитие информатики; один из авторов языка Алгол и концепции структурного программирова-ния. По образованию физик-теоретик. Во второй половине 1950-х годов в поисках путей оптимизации разводки печатных плат разработал алгоритм поиска кратчайшего пути на графе.
Слайд 58

Алгоритм Флойда Замечание. В алгоритме Флойда, так же как и в

Алгоритм Флойда

 

Замечание. В алгоритме Флойда, так же как и в алгоритме

Беллмана – Форда, нет ограничений на неотрицательность длин ребер, как будет показано в примере.
Слайд 59

for i=1 to n for j=1 to n p[i,j]:=i; Инициализация Основной

 

 

 

for i=1 to n
for j=1 to n
p[i,j]:=i;

Инициализация

Основной цикл

Алгоритм работает «на месте»:

старые значения элементов матриц
C и P заменяются на новые; по завершению цикла по k (k=n)
C становится матрицей длин кратчайших цепей/путей, а P -- матрицей
самих цепей/путей.
Слайд 60

Фрагмент программы: for k=1 to n for i=1 to n for

Фрагмент программы:
for k=1 to n
for i=1 to n


for j=1 to n
{ s:=c[i,k]+c[k,j];
if s {c[i,j]:=s; p[i,j]:=p[k,j];}
}

c[i,j]:=min(c[i,j],c[i,k]+c[k,j])
k

 

На каждой итерации по k вычисляется
где операция ⊕ -- это min, а ⊗ -- обычное арифметическое сложе-ние. Поэлементно на этой итерации

 

Слайд 61

4 4

4

4

Слайд 62

4 4

4

4

Слайд 63

-1 4 4

-1

4

4

 

Слайд 64

Замечание. Алгоритмы Беллмана – Форда и Флойда работают кор- ректно, если

 

Замечание. Алгоритмы Беллмана – Форда и Флойда работают кор-
ректно, если в

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