Скачать презентацию Сеть 8 Графы 1 8 1 Типы Скачать презентацию Сеть 8 Графы 1 8 1 Типы

8 Графы.pptx

  • Количество слайдов: 54

Сеть 8. Графы 1 Сеть 8. Графы 1

8. 1. Типы графов Ориентированный граф Неориентированный граф 2 8. 1. Типы графов Ориентированный граф Неориентированный граф 2

8. 1. Ориентированный граф G – пара (V, E), где V – конечное множество 8. 1. Ориентированный граф G – пара (V, E), где V – конечное множество вершин графа G, V = {vi}, i = 1, 2, …, n, vi – вершина графа E – множество ребер графа G; упорядоченные пары вершин из V, E = {ej}, ei = (u, v), u V, v V, ei – ребро графа; выходит из вершины u и входит в вершину v 3

8. 1. Ориентированный граф Пример: V = {1, 2, 3, 4, 5, 6}, E 8. 1. Ориентированный граф Пример: V = {1, 2, 3, 4, 5, 6}, E = {(1, 2), (2, 4), (2, 5), (4, 1), (4, 5), (5, 4), (6, 3)} 1 2 3 4 5 6 4

8. 2. Неориентированный граф G – пара (V, E), где V – конечное множество 8. 2. Неориентированный граф G – пара (V, E), где V – конечное множество вершин графа G, V = {vi}, i = 1, 2, …, n, vi – вершина графа E – множество ребер графа G; неупорядоченные пары вершин из V, E = {ej}, ei = (u, v), u V, v V, u v ei – ребро графа; соединяет вершины u и v 5

8. 2. Неориентированный граф Пример: V = {1, 2, 3, 4, 5, 6}, E 8. 2. Неориентированный граф Пример: V = {1, 2, 3, 4, 5, 6}, E = {(1, 2), (1, 5), (2, 5), (3, 6)} 1 2 3 4 5 6 6

8. 3. Определения • Если (u, v) – ребро графа G, тогда вершина u 8. 3. Определения • Если (u, v) – ребро графа G, тогда вершина u графа – смежная с вершиной v: u v • Степень вершины в неориентированном графе – число ребер, соединяющих ее с другими вершинами • Вершина со степенью 0 – изолированная 7

8. 3. Определения • В ориентированном графе: исходящая степень – количество выходящих из вершины 8. 3. Определения • В ориентированном графе: исходящая степень – количество выходящих из вершины ребер, входящая степень – количество входящих в вершину ребер • Степень вершины в ориентированном графе = исходящая степень + входящая степень 8

8. 3. Определения • Путь (маршрут) длины k от вершины u к вершине v 8. 3. Определения • Путь (маршрут) длины k от вершины u к вершине v в графе G = (V, E) – последовательность вершин такая, что u = v 0, v = vk и (vi-1, vi) E для i = 1, 2, …, k • Длина пути – количество составляющих его ребер 9

8. 3. Определения • Путь содержит вершины v 0, v 1, …, vk и 8. 3. Определения • Путь содержит вершины v 0, v 1, …, vk и ребра (v 0, v 1), (v 1, v 2), …, (vk-1, vk) • Если имеется путь p из вершины u в вершину v, говорят, что вершина u достижима из вершины v по пути p • Пусть является простым, если все вершины пути – различны 10

8. 3. Определения • В ориентированном графе путь <v 0, v 1, …, vk> 8. 3. Определения • В ориентированном графе путь образует цикл, если v 0 = vk; цикл простой, если все вершины v 0, v 1, …, vk-1 различны • Петля – цикл с длиной 1 • В неориентированном графе путь образует (простой) цикл, если k ≥ 3, v 0 = vk и все вершины v 0, v 1, …, vk-1 различны • Граф без циклов – ациклический 11

8. 3. Определения • Взвешенный граф – граф, с каждым ребром которого связан определенный 8. 3. Определения • Взвешенный граф – граф, с каждым ребром которого связан определенный вес, обычно определяемый весовой функцией w: E R 12

8. 4. Представление графа 1. Набор списков смежных вершин u v . . v 8. 4. Представление графа 1. Набор списков смежных вершин u v . . v ø ø Для взвешенных графов вес ребра (u, v) хранится вместе с вершиной v в списке смежности u 13

8. 4. Представление графа Пример – неориентированный граф 1 3 2 3 4 5 8. 4. Представление графа Пример – неориентированный граф 1 3 2 3 4 5 1 4 1 2 4 1 3 ø ø 2 3 4 ø 5 4 5 ø ø 14

8. 4. Представление графа Пример – ориентированный граф 1 4 6 2 5 3 8. 4. Представление графа Пример – ориентированный граф 1 4 6 2 5 3 4 1 2 3 4 5 6 5 ø 6 2 ø ø 5 2 ø 4 ø 6 ø 15

8. 4. Представление графа 2. Матрица смежности. . . vj. . . vi . 8. 4. Представление графа 2. Матрица смежности. . . vj. . . vi . . . 0/1 . . . 16

8. 4. Представление графа Пример – неориентированный граф 1 1 2 3 4 5 8. 4. Представление графа Пример – неориентированный граф 1 1 2 3 4 5 0 1 1 1 0 1 0 0 1 1 0 17

8. 4. Представление графа Пример – ориентированный граф 1 1 2 3 4 5 8. 4. Представление графа Пример – ориентированный граф 1 1 2 3 4 5 6 2 4 5 6 3 1 2 3 4 5 6 0 0 0 1 0 0 0 1 1 0 0 0 1 18

8. 5. Поиск в ширину Один из простейших алгоритмов обхода графа Задан граф G 8. 5. Поиск в ширину Один из простейших алгоритмов обхода графа Задан граф G = (V, E) Выделена исходная вершина s Находятся все вершины, достижимые из s Строится дерево поиска в ширину с корнем s 19

8. 5. Поиск в ширину Окрашивание вершин графа: белые – еще не открытые вершины, 8. 5. Поиск в ширину Окрашивание вершин графа: белые – еще не открытые вершины, серые и черные – открытые вершины, которые обрабатываются по-разному: вершины, смежные с черной, серые или черные; вершины, смежные с серой, могут быть белыми 20

8. 5. Поиск в ширину Корень дерева – s Сканируется список смежности открытой вершины 8. 5. Поиск в ширину Корень дерева – s Сканируется список смежности открытой вершины u : если открывается белая вершина v, то вершина v и ребро (u, v) добавляются в дерево u – предшественник (или родитель) v в дереве поиска вширь, v – потомок u 21

8. 5. Алгоритм поиска BFS(G, s) Обозначения: Adj[u] – список смежности для вершины u 8. 5. Алгоритм поиска BFS(G, s) Обозначения: Adj[u] – список смежности для вершины u color[u] – цвет вершины u pred[u] – предшественник вершины u; если предшественника нет, pred[u] = NULL d[u] – расстояние от s до вершины u Q – очередь для работы с множеством серых вершин 22

8. 5. Алгоритм поиска BFS(G, s) Инициализация: Для каждой вершины u V[G], кроме s 8. 5. Алгоритм поиска BFS(G, s) Инициализация: Для каждой вершины u V[G], кроме s { color[u] = белый d[u] = pred[u] = NULL } color[s] = серый d[s] = 0 pred[s] = NULL Записать s в очередь Q 23

8. 5. Алгоритм поиска BFS(G, s) while Q не пуста { u = очередная 8. 5. Алгоритм поиска BFS(G, s) while Q не пуста { u = очередная вершина из Q для каждой v Adj[u] if color[v] = белый { color[v] = серый d[v] = d[u] + 1 pred[v] = u Записать v в Q } color[u] = черный } 24

8. 6. Пример Исходный граф r s t u v w x y 25 8. 6. Пример Исходный граф r s t u v w x y 25

8. 6. Пример Инициализация r s 0 t u v w x y Q 8. 6. Пример Инициализация r s 0 t u v w x y Q s 0 26

8. 6. Пример 1 -я итерация цикла while r 1 s 0 t u 8. 6. Пример 1 -я итерация цикла while r 1 s 0 t u 1 v w x y Q w r 1 1 27

8. 6. Пример 2 -я итерация цикла while r 1 t 2 u 1 8. 6. Пример 2 -я итерация цикла while r 1 t 2 u 1 2 v Q s 0 w x y r t x 1 2 2 28

8. 6. Пример 3 -я итерация цикла while r 1 t 2 u 2 8. 6. Пример 3 -я итерация цикла while r 1 t 2 u 2 1 2 v Q s 0 w x y t x v 2 29

8. 6. Пример 4 -я итерация цикла while r 1 s 0 t 2 8. 6. Пример 4 -я итерация цикла while r 1 s 0 t 2 u 3 2 1 2 v w x y Q x v u 2 2 3 30

8. 6. Пример 5 -я итерация цикла while r 1 s 0 t 2 8. 6. Пример 5 -я итерация цикла while r 1 s 0 t 2 u 3 2 1 2 3 v w x y Q v u y 2 3 3 31

8. 6. Пример 6 -я итерация цикла while r 1 s 0 t 2 8. 6. Пример 6 -я итерация цикла while r 1 s 0 t 2 u 3 2 1 2 3 v w x y Q u y 3 3 32

8. 6. Пример 7 -я итерация цикла while r 1 s 0 t 2 8. 6. Пример 7 -я итерация цикла while r 1 s 0 t 2 u 3 2 1 2 3 v w x y Q y 3 33

8. 6. Пример 8 -я итерация цикла while r 1 s 0 t 2 8. 6. Пример 8 -я итерация цикла while r 1 s 0 t 2 u 3 2 1 2 3 v w x y Q Ø 34

8. 6. Пример s 0 r 1 2 w 1 x 2 t 2 8. 6. Пример s 0 r 1 2 w 1 x 2 t 2 3 3 y u v 35

8. 7. Анализ алгоритма Общее время операций с очередью – Ο(V) Сумма длин всех 8. 7. Анализ алгоритма Общее время операций с очередью – Ο(V) Сумма длин всех списков смежности – (E) Общее время сканирования списков – Ο(E) Накладные расходы на инициализацию – Ο(V) Общее время работы алгоритма BFS – Ο(V + E) 36

8. 8. 37 8. 8. 37

8. . 38 8. . 38

8. . 39 8. . 39

8. . 40 8. . 40

8. . 41 8. . 41

8. . 42 8. . 42

8. . 43 8. . 43

8. . 44 8. . 44

8. . 45 8. . 45

8. . 46 8. . 46

8. . 47 8. . 47

8. . 48 8. . 48

8. . 49 8. . 49

8. . 50 8. . 50

8. . 51 8. . 51

8. . 52 8. . 52

8. . 53 8. . 53

8. . 54 8. . 54