26
Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Графы: представление, обходы, топологическая сортировка. Николай Гребенщиков, www.grebenshikov.ru

Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Хакасский государственный университет им. Н.Ф. Катанова

Структуры и алгоритмы обработки данных

Лекция: Графы: представление, обходы,

топологическая сортировка.

Николай Гребенщиков, www.grebenshikov.ru

Page 2: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

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

• Сети (коммуникации и транспортировки)

• Компоновка элементов на интегральной схеме

• 3D (Сеть поверхности) и геоинформационные системы

• Календарное планирование (Зависимости между событи-ями)

• Везде, где есть множество объектов и какая-то “связь”между парами объектов.

1

Page 3: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Ориентированный граф G = (V, E) состоит из конечногомножества вершин V и множества упорядоченных пар вер-шин E, называемых ребрами.

Неориентированный граф G = (V, E) состоит из конечно-го множества вершин V и множества неупорядоченных парвершин E, называемых ребрами.

Вершина v является смежной вершине u, если ∃ ребро (u, v).

Степень вершины сумма ребер выходяших из данной вер-шины.

Степень графа максимальная степень его вершин.

2

Page 4: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Пусть G - ориентированный граф и |V | = n, тогда ≤ E ≤ n2

и∑v∈V

deg(v) = E

Путь в графе - последовательность 〈v0, v1, . . . , vk〉, где (vi−1, vi)

является ребром для i = 1, 2, . . . , k.

Длина пути - количество ребер и равна k.

Цикл - это путь, длина которого больше нуля и v0 = vk.Ацикличный граф - граф без циклов.

Свободное дерево - связный ацикличный граф. Лес дере-вьев - несвязный ацикличный граф.

DAG - directed acyclic graph.3

Page 5: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Иллюстрация

4

Page 6: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

АТД Граф

1 public class NodeInfo {2 public static final int Cleared = 0;3 public static final int Checked = 1;4 public int data;5 public int checked;6 public int group = 0;7

8 public NodeInfo(int data) {9 this.data = data;10 checked = Cleared;11 }12 }

5

Page 7: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

АТД Граф

1 class Graph {2 public Graph(int maxNodesCount);3 public void addArc(int from, int to, int data);4 public void addSingleNode(int node);5 public int getNodesCount();6 public int dfs(Action<Integer> action);7 public void floyd();8 public int getMinimalPath(int from, int to);9 public NodeInfo getNodeInfo(int node);10 }

6

Page 8: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Представление графа. Матрица смежности

Пусть G = (V, E) - орграф с n = |V | вершин и e = |E| ребер.Пусть вершины пронумерованы {1, 2, . . . , n}

Тогда n × n матрица A[v, w] =

1, если (v, w) ∈ E

0, иначеявляется

матрицей смежности.

Если граф взвешенный, то если (v, w) ∈ E ⇒ A[v, w] = W (v, w).Специальные случаи, когда A[v, w] = −1,∞.

7

Page 9: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Матрица и список смежности для орграфа

Количество ячеек в матрице: Θ(V 2) - выгодно для плот-ных графов.

Количество ячеек в списке: Θ(V + E) - выгодно для раз-реженных графов.

8

Page 10: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Матрица и список смежности для неориентированногографа

9

Page 11: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Обход графа

• Обход в ширину (Поиск растояния от одной вершины додругой в невзвешенном графе)

• Обход в глубину (Построение леса)

10

Page 12: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Обход графа в ширину. Алгоритм

11

Page 13: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Обход графа в ширину. Пример

12

Page 14: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Анализ алгоритма обхода в ширину

T (V ) = V +∑

u∈V

deg(u) + 1

= V +∑

u∈V

deg(u) + V

= 2V + E= Θ(V + E)

13

Page 15: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Обход графа в глубину. Алгоритм

14

Page 16: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Обход графа в глубину. Пример

15

Page 17: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Анализ алгоритма обхода в глубину

T (V ) = V +∑

u∈V

deg(u) + 1

= V +∑

u∈V

deg(u) + V

= 2V + E= Θ(V + E)

16

Page 18: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Древовидная структура после обхода в глубину

Обратное ребро - (u, v), где v - предок v.

Прямое ребро - (u, v), где v - потомок v.

Ребро пересечения - (u, v), где v - не потомок и не предокv. (u, v) - ребро между разными деревьями.

17

Page 19: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Интервальная структура после обхода в глубину.

Дано G = (V, E), дерево DFS для G и любые две вершиныu, v ∈ V .

• u - потомок v ⇐⇒ [d[u], f [u]] ⊆ [d[v], f [v]]

• u - предок v ⇐⇒ [d[u], f [u]] ⊇ [d[v], f [v]]

• u и v не связаны друг с другом ⇐⇒ [d[u], f [u]] и [d[v], f [v]]

не пересекаются.

18

Page 20: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Интервальная структура после обхода в глубину

19

Page 21: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Обход в глубину и циклы

Граф имеет цикл тогда и только тогда, когда DFS-деревоимеет обратное ребро.

Доказательство на семинар.

20

Page 22: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Топологическая сортировка

DAG используется для описания ограничений предшество-вания и порядка. В графе предшествования каждое ребро(u, v) означает, что u предшествует v.

Топологическая сортировка графа есть построение после-довательности a, где для всех ai и aj выполняется ∃(ai, aj)⇒i < j.

21

Page 23: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Топологическая сортировка

22

Page 24: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Топологическая сортировка

23

Page 25: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Топологическая сортировка

T (n) = Θ(V + E)

24

Page 26: Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет "Структуры и алгоритмы

Список литературы

• David M. Mount, The Lecture notes: Design and Analysisof Computer Algorithms. [Электронный ресурс] / Dept. ofComputer Science, University of Maryland, 2004. - Режимдоступа: http://www.cs.umd.edu/ mount/451/Lects/451lects.pdf. - сс.30-38

• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.609-634.

25