Разделы презентаций


Поиск в глубину в ориентированных графах Топологическая сортировка

Содержание

21.04.2014ПВГ в орграфеОсобенности поиска в глубину (ПВГ) в ориентированных графах

Слайды и текст этой презентации

Слайд 121.04.2014
ПВГ в орграфе
Построение и анализ алгоритмов
Раздел: Алгоритмы на графах

Лекция 10.2
Тема

лекции:
Поиск в глубину в ориентированных графах
Топологическая сортировка

21.04.2014ПВГ в орграфеПостроение и анализ алгоритмовРаздел: Алгоритмы на графахЛекция 10.2Тема лекции: Поиск в глубину в ориентированных графах

Слайд 221.04.2014
ПВГ в орграфе
Особенности поиска в глубину (ПВГ) в ориентированных графах

21.04.2014ПВГ в орграфеОсобенности поиска в глубину (ПВГ) в ориентированных графах

Слайд 321.04.2014
ПВГ в орграфе
Пример ПВГ в орграфе
1
2
3
4
(1)
5
6
7
(2)
(3)
(4)
(5)
(6)
(7)
8
9
10
(8)
(9)
(10)
Стоп!

21.04.2014ПВГ в орграфеПример ПВГ в орграфе1234(1)567(2)(3)(4)(5)(6)(7)8910(8)(9)(10)Стоп!

Слайд 421.04.2014
ПВГ в орграфе
Пример ПВГ в орграфе
1
2
3
4
(1)
5
6
7
(2)
(3)
(4)
(5)
(6)
(7)
8
9
10
(8)
(9)
(10)
Стоп!
Древесное ребро – от отца

к сыну в глубинном остовном дереве (ГОД)
Направленное вперед (прямое) ребро

– от предка к потомку в ГОД
Обратное ребро – от потомка к предку в ГОД
Поперечное ребро – не связывает предка и потомка

1 – номер при ПВГ: NumVert(v) или n(v)
(1) – номер в порядке использования при ПВГ: fn(v) [finishing]

21.04.2014ПВГ в орграфеПример ПВГ в орграфе1234(1)567(2)(3)(4)(5)(6)(7)8910(8)(9)(10)Стоп!Древесное ребро – от отца к сыну в глубинном остовном дереве (ГОД)Направленное

Слайд 521.04.2014
ПВГ в орграфе
1
2
3
4
(1)
5
6
7
(2)
(3)
(4)
(5)
(6)
(7)
8
9
10
(8)
(9)
(10)
1
2
3
4
5
6
7
(1)
(5)
(4)
(3)
(2)
(6)
(7)
8
9
10
(8)
(9)
(10)

21.04.2014ПВГ в орграфе1234(1)567(2)(3)(4)(5)(6)(7)8910(8)(9)(10)1234567(1)(5)(4)(3)(2)(6)(7)8910(8)(9)(10)

Слайд 621.04.2014
ПВГ в орграфе
1
2
3
4
5
6
7
(1)
(5)
(4)
(3)
(2)
(6)
(7)
8
9
10
(8)
(9)
(10)
Направленное вперед ребро(u,v): n(u)

(u,v): n(u)n(v) и

fn(v)=0
Поперечное ребро (u, v): n(u)>n(v) и fn(v)≠0
21.04.2014ПВГ в орграфе1234567(1)(5)(4)(3)(2)(6)(7)8910(8)(9)(10)Направленное вперед ребро(u,v): n(u)n(v) и fn(v)≠0

Слайд 721.04.2014
ПВГ в орграфе
Топологическая сортировка
Ациклический (бесконтурный) орграф
Лемма 1. Орграф G является

ациклическим ттогда, когда поиск в глубину в G не находит

обратных ребер.
Лемма 2. В произвольном ациклическом орграфе G=(V,E) вершины могут быть пронумерованы так, что каждая дуга будет иметь вид (vi,vj), где i
Примеры:
Сетевой график работ.
Связи между дисциплинами учебного плана (пререквизиты и постреквизиты).
Информационный граф программы (алгоритма).
21.04.2014ПВГ в орграфеТопологическая сортировкаАциклический (бесконтурный) орграфЛемма 1. Орграф G является ациклическим ттогда, когда поиск в глубину в

Слайд 821.04.2014
ПВГ в орграфе
Пример 0





1 (1)
4(2)
3(3)
2(4)
5(5)





1
2
3
4
5





2
1
3
4
5
(пере)нумерация
(vi,vj) ⇒ i

нумерация
Нумерация ПВГ

21.04.2014ПВГ в орграфеПример 01 (1)4(2)3(3)2(4)5(5)1234521345(пере)нумерация(vi,vj) ⇒ i

Слайд 921.04.2014
ПВГ в орграфе
Продолжение примера 0 (ПВГ)





1
5
2
4
3





1
2
3
4
5





1
2
3
4
5
ПВГ (поиск в глубину)
1- номер

в порядке посещения
4 – номер в порядке использования

1
2
3
4
5
5
4
3
2
1
Если начать с

красной вершины



21.04.2014ПВГ в орграфеПродолжение примера 0 (ПВГ)152431234512345ПВГ (поиск в глубину)1- номер в порядке посещения4 – номер в порядке

Слайд 1021.04.2014
ПВГ в орграфе
Продолжение примера 0 (ПВГ)
v [*] – имена вершин

в исходной нумерации;
nv [*] - номера в порядке посещения;
fn

[*] - номера в порядке использования;
sn [*] – номера в порядке топ.сортировки, т.е. sn [i] – новый номер вершины с исходным номером i; (перенумерация!)
tn [i] – исходный номер вершины с номером i в порядке топ.сортировки (перегруппировка!)


21.04.2014ПВГ в орграфеПродолжение примера 0 (ПВГ)v [*] – имена вершин в исходной нумерации; nv [*] - номера

Слайд 1121.04.2014
ПВГ в орграфе
Продолжение примера 0 (ПВГ)
1) Получение sn [*] из

fn [*]:
for (i=1; i

- fn [i] + 1;
2) Получение tn [*] из sn [*]:
for (i=1; i<=n; i++) tn[sn[i]] = i;
------------------------------------------
Или получение tn [*] сразу из fn [*]:
for (i=1; i<=n; i++) tn[n - fn[i] + 1] = i ;

Оказывается, что
sn [*] и tn [*] –
обратные перестановки
(см. след. слайд)

21.04.2014ПВГ в орграфеПродолжение примера 0 (ПВГ)1) Получение sn [*] из fn [*]: for (i=1; i

Слайд 1221.04.2014
ПВГ в орграфе
Перестановки


tn [sn [ i ]] = i ,

где i – из исходной нумерации,
sn [tn [

j ]] = j , где j – из нумерации топ.сортировки
21.04.2014ПВГ в орграфеПерестановкиtn [sn [ i ]] = i , где i – из исходной нумерации, sn

Слайд 1321.04.2014
ПВГ в орграфе
Выполнить ПВГ в орграфе G, заполнив массив fn[*].
Пронумеровать

вершины номерами (n - fn[v] + 1), т.е.

заполнить sn [*] – вектор (последовательность) новых номеров в порядке топологической сортировки (sn [ i ] – новый номер вершины с исходным номером i).
Перегруппировать вершины, т.е. заполнить tn [*] – вектор старых номеров в новом порядке (tn [ i ] – исходный номер вершины с номером i в порядке топологической сортировки)



Алгоритм топологической сортировки

21.04.2014ПВГ в орграфеВыполнить ПВГ в орграфе G, заполнив массив fn[*].Пронумеровать вершины номерами (n - fn[v] + 1),

Слайд 1421.04.2014
ПВГ в орграфе
Алгоритм топологической сортировки
Пример 1







1
2
3
4
5
6
7
1
2
3
4
5
6
7
a
b
c
d
e
f
g

21.04.2014ПВГ в орграфеАлгоритм топологической сортировкиПример 112345671234567abcdefg

Слайд 1521.04.2014
ПВГ в орграфе
Алгоритм топологической сортировки
Пример 2 (другие списки смежности)
1
7
6
4
1
3
2
3
6
5
4
2
5
7







1
2
3
4
5
6
7
1
2
3
4
5
6
7








21.04.2014ПВГ в орграфеАлгоритм топологической сортировкиПример 2 (другие списки смежности)1764132365425712345671234567

Слайд 1621.04.2014
ПВГ в орграфе
Продолжение на следующей лекции! (28 апреля)

21.04.2014ПВГ в орграфеПродолжение  на следующей лекции! (28 апреля)

Слайд 1721.04.2014
ПВГ в орграфе
Нахождение сильно связных компонент графа (ССК)
Алгоритм на основе

поиска в глубину
Сильная связность (Strongly Connection)
Определение. Орграф G сильносвязный, если

любые две его вершины достижимы друг из друга.

Определение. Орграф G односторонне связный, если для любой его пары вершин по меньшей мере одна достижима из другой.

Определение. Орграф G слабо связный, если любые две его вершины соединены полупутём.

21.04.2014ПВГ в орграфеНахождение сильно связных компонент графа (ССК)Алгоритм на основе поиска в глубинуСильная связность (Strongly Connection)Определение. Орграф

Слайд 1821.04.2014
ПВГ в орграфе
Сильно связные компоненты (Strongly Connected Components)
Сильно связная

компонента – максимальный сильно связный подграф



21.04.2014ПВГ в орграфеСильно связные компоненты   (Strongly Connected Components)Сильно связная компонента – максимальный сильно связный подграф

Слайд 1921.04.2014
ПВГ в орграфе
1
2
3
4
(1)
5
6
7
(2)
(3)
(4)
(5)
(6)
(7)
8
9
10
(8)
(9)
(10)
1
2
3
4
5
6
7
(1)
(5)
(4)
(3)
(2)
(6)
(7)
8
9
10
(8)
(9)
(10)






Каждой ССК графа соответствует дерево в ПВГ-лесу
(более точно

далее)
ПОИСК
в глубину

21.04.2014ПВГ в орграфе1234(1)567(2)(3)(4)(5)(6)(7)8910(8)(9)(10)1234567(1)(5)(4)(3)(2)(6)(7)8910(8)(9)(10)Каждой ССК графа соответствует дерево в ПВГ-лесу(более точно далее)ПОИСКв глубину

Слайд 2021.04.2014
ПВГ в орграфе
Соответствие «ССК – дерево»
Утверждение
Пусть Gi =(Vi, Ei) –

ССК орграфа G, а F =(V, T) - глубинный остовный

лес для G. Тогда узлы Vi орграфа G вместе с ребрами из Ei ∩T образуют дерево.

Т.о. «ССК ⇒ дерево», но «дерево ⇒ ССК» - не верно (см.пример)

Хорошо бы при ПВГ обнаруживать корни деревьев, соответствующих ССК (!)
Алгоритм Тарьяна (Tarjan R.E.) аналогичен ранее рассмотренному алгоритму нахождение двусвязных компонент.
Мы рассмотрим далее другой алгоритм.

21.04.2014ПВГ в орграфеСоответствие «ССК – дерево»УтверждениеПусть Gi =(Vi, Ei) – ССК орграфа G, а F =(V, T)

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

ациклический ориентированный граф.
21.04.2014
ПВГ в орграфе

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

Слайд 2221.04.2014
ПВГ в орграфе
Обращение орграфа (понадобится далее), ССК – те же (!)










21.04.2014ПВГ в орграфеОбращение орграфа (понадобится далее), ССК – те же (!)

Слайд 2321.04.2014
ПВГ в орграфе
Алгоритм Косарайю (S.R.Kosaraju) нахождения ССК орграфа (на основе двух ПВГ)
Выполнить

ПВГ орграфа G и вычислить номера вершин в порядке их

использования fn[*].
Сконструировать новый (обращенный) орграф GR , путем обращения всех дуг исходного графа.
Выполнить ПВГ орграфа GR , начиная с вершины, имеющей наибольший номер fn[ ]. Если ПВГ не завершен, то продолжить, начиная с вершины, имеющей наибольший номер fn[ ] среди оставшихся.
Каждое дерево полученного глубинного остовного дерева орграфа GR является ССК орграфа G.
21.04.2014ПВГ в орграфеАлгоритм Косарайю (S.R.Kosaraju) нахождения ССК орграфа (на основе двух ПВГ)Выполнить ПВГ орграфа G и вычислить

Слайд 2421.04.2014
ПВГ в орграфе
1
2
3
4
(1)
5
6
7
(2)
(3)
(4)
(5)
(6)
(7)
8
9
10
(8)
(9)
(10)
1
2
3
4
5
6
7
(1)
(5)
(4)
(3)
(2)
(6)
(7)
8
9
10
(8)
(9)
(10)






abde



hij
cfg
копия

21.04.2014ПВГ в орграфе1234(1)567(2)(3)(4)(5)(6)(7)8910(8)(9)(10)1234567(1)(5)(4)(3)(2)(6)(7)8910(8)(9)(10)abdehijcfgкопия

Слайд 2521.04.2014
ПВГ в орграфе
Обращенный граф
(4)
(3)
(2)
(6)
(7)
(10)



(1)
(5)
(8)
(9)



I
II
(10)
(7)
III
(4)
ПВГ в обращенном графе

21.04.2014ПВГ в орграфеОбращенный граф(4)(3)(2)(6)(7)(10)(1)(5)(8)(9)III(10)(7)III(4)ПВГ в обращенном графе

Слайд 2621.04.2014
ПВГ в орграфе
Основные факты (утверждения), на которые опирается доказательство правильности

алгоритма
Граф ССК GССК орграфа G – ациклический
ССК орграфов G

и GR совпадают (как множества вершин)
При втором ПВГ граф ССК (GR)ССК орграфа GR проходится в порядке, обратном топологической сортировке
21.04.2014ПВГ в орграфеОсновные факты (утверждения),  на которые опирается доказательство правильности алгоритма Граф ССК GССК орграфа G

Слайд 2721.04.2014
ПВГ в орграфе
Пример (пояснение к утверждениям)
5/3
6/2
7/1
8/6
9/5
10/4
4/8
3/9
2/14
12/13
13/12
1/15
G
ПВГ в G
GССК



Топ. сорт. графа

21.04.2014ПВГ в орграфеПример (пояснение к утверждениям)5/36/27/18/69/510/44/83/92/1412/1313/121/15GПВГ в GGССКТоп. сорт. графа

Слайд 2821.04.2014
ПВГ в орграфе
Пример (продолжение)
13-3
15-2
14-1
10-6
12-5
11-4
9-8
7-9
3-14
2-13
4-12
1-15
GR
ПВГ в GR
(GR)ССК





A→ C → B →

E → D
Топ. сорт. графа

21.04.2014ПВГ в орграфеПример (продолжение)13-315-214-110-612-511-49-87-93-142-134-121-15GRПВГ в GR(GR)ССКA→ C → B → E → DТоп. сорт. графа

Слайд 2921.04.2014
ПВГ в орграфе
Сложность алгоритмов нахождения ССК
Алгоритм Тарьяна (Tarjan R.E.)
Алгоритм Косарайю

(S.R.Kosaraju)
O(n + m)



КОНЕЦ ССК

21.04.2014ПВГ в орграфеСложность алгоритмов нахождения ССКАлгоритм Тарьяна (Tarjan R.E.)Алгоритм Косарайю (S.R.Kosaraju) O(n + m)КОНЕЦ ССК

Слайд 3021.04.2014
ПВГ в орграфе
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ

ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ

21.04.2014ПВГ в орграфеКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

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


Для правообладателей

Яндекс.Метрика