View
5.195
Download
0
Category
Preview:
DESCRIPTION
Citation preview
Хакасский государственный университет им. Н.Ф. Катанова
Структуры и алгоритмы обработки данных
Лекция: Графы: представление, обходы,
топологическая сортировка.
Николай Гребенщиков, www.grebenshikov.ru
Области применения графов
• Сети (коммуникации и транспортировки)
• Компоновка элементов на интегральной схеме
• 3D (Сеть поверхности) и геоинформационные системы
• Календарное планирование (Зависимости между событи-ями)
• Везде, где есть множество объектов и какая-то “связь”между парами объектов.
1
Ориентированный граф G = (V, E) состоит из конечногомножества вершин V и множества упорядоченных пар вер-шин E, называемых ребрами.
Неориентированный граф G = (V, E) состоит из конечно-го множества вершин V и множества неупорядоченных парвершин E, называемых ребрами.
Вершина v является смежной вершине u, если ∃ ребро (u, v).
Степень вершины сумма ребер выходяших из данной вер-шины.
Степень графа максимальная степень его вершин.
2
Пусть 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
Иллюстрация
4
АТД Граф
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
АТД Граф
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
Представление графа. Матрица смежности
Пусть 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
Матрица и список смежности для орграфа
Количество ячеек в матрице: Θ(V 2) - выгодно для плот-ных графов.
Количество ячеек в списке: Θ(V + E) - выгодно для раз-реженных графов.
8
Матрица и список смежности для неориентированногографа
9
Обход графа
• Обход в ширину (Поиск растояния от одной вершины додругой в невзвешенном графе)
• Обход в глубину (Построение леса)
10
Обход графа в ширину. Алгоритм
11
Обход графа в ширину. Пример
12
Анализ алгоритма обхода в ширину
T (V ) = V +∑
u∈V
deg(u) + 1
= V +∑
u∈V
deg(u) + V
= 2V + E= Θ(V + E)
13
Обход графа в глубину. Алгоритм
14
Обход графа в глубину. Пример
15
Анализ алгоритма обхода в глубину
T (V ) = V +∑
u∈V
deg(u) + 1
= V +∑
u∈V
deg(u) + V
= 2V + E= Θ(V + E)
16
Древовидная структура после обхода в глубину
Обратное ребро - (u, v), где v - предок v.
Прямое ребро - (u, v), где v - потомок v.
Ребро пересечения - (u, v), где v - не потомок и не предокv. (u, v) - ребро между разными деревьями.
17
Интервальная структура после обхода в глубину.
Дано 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
Интервальная структура после обхода в глубину
19
Обход в глубину и циклы
Граф имеет цикл тогда и только тогда, когда DFS-деревоимеет обратное ребро.
Доказательство на семинар.
20
Топологическая сортировка
DAG используется для описания ограничений предшество-вания и порядка. В графе предшествования каждое ребро(u, v) означает, что u предшествует v.
Топологическая сортировка графа есть построение после-довательности a, где для всех ai и aj выполняется ∃(ai, aj)⇒i < j.
21
Топологическая сортировка
22
Топологическая сортировка
23
Топологическая сортировка
T (n) = Θ(V + E)
24
Список литературы
• 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
Recommended