Графы. Топологическая сортировка

Содержание

Слайд 2

Постановка задачи топологической сортировки

Дан ориентированный граф. Требуется пронумеровать его вершины таким образом,

Постановка задачи топологической сортировки Дан ориентированный граф. Требуется пронумеровать его вершины таким
чтобы каждое ребро вело из вершины с меньшим номером в вершину с большим.
Иными словами нужно найти топологический порядок вершин, который соответствует порядку, задаваемому рёбрами.
Топологическая сортировка может быть не единственной.
Топологическая сортировка существует только для направленных ациклических графов (DAG).

Слайд 3

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

1

3

2

4

6

5

Исходный DAG

Возможные результаты топологической сортировки:
1 – 2 – 4 –

Пример топологической сортировки 1 3 2 4 6 5 Исходный DAG Возможные
6 – 3 – 5
1 – 3 – 2 – 4 – 5 – 6
1 – 3 – 2 – 4 – 6 – 5

Слайд 4

Алгоритм

Переберём все вершины графа.
Если вершина белая, то запустим из неё поиск в

Алгоритм Переберём все вершины графа. Если вершина белая, то запустим из неё
глубину.
Во время поиска при выходе из вершины будем добавлять её номер в вектор, хранящий результат.
После того, как все вершины были посещены, в векторе будет топологическая сортировка в обратном порядке. Её нужно перевернуть.

Слайд 5

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

Вектор с результатом:
(пусто)

1

3

2

4

6

5

Топологическая сортировка. Шаг 0 Вектор с результатом: (пусто) 1 3 2 4 6 5

Слайд 6

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

Вектор с результатом:
(пусто)

1

3

2

4

6

5

Топологическая сортировка. Шаг 1 Вектор с результатом: (пусто) 1 3 2 4 6 5

Слайд 7

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

Вектор с результатом:
(пусто)

1

3

2

4

6

5

Топологическая сортировка. Шаг 2 Вектор с результатом: (пусто) 1 3 2 4 6 5

Слайд 8

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

Вектор с результатом:
(пусто)

1

3

2

4

6

5

Топологическая сортировка. Шаг 3 Вектор с результатом: (пусто) 1 3 2 4 6 5

Слайд 9

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

Вектор с результатом:
5

1

3

2

4

6

5

Топологическая сортировка. Шаг 4 Вектор с результатом: 5 1 3 2 4 6 5

Слайд 10

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

Вектор с результатом:
5 – 3

1

3

2

4

6

5

Топологическая сортировка. Шаг 5 Вектор с результатом: 5 – 3 1 3 2 4 6 5

Слайд 11

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

Вектор с результатом:
5 – 3

1

3

2

4

6

5

Топологическая сортировка. Шаг 6 Вектор с результатом: 5 – 3 1 3 2 4 6 5

Слайд 12

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

Вектор с результатом:
5 – 3

1

3

2

4

6

5

Топологическая сортировка. Шаг 7 Вектор с результатом: 5 – 3 1 3 2 4 6 5

Слайд 13

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

Вектор с результатом:
5 – 3

1

3

2

4

6

5

Топологическая сортировка. Шаг 8 Вектор с результатом: 5 – 3 1 3 2 4 6 5

Слайд 14

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

Вектор с результатом:
5 – 3

1

3

2

4

6

5

Топологическая сортировка. Шаг 9 Вектор с результатом: 5 – 3 1 3 2 4 6 5

Слайд 15

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

Вектор с результатом:
5 – 3

1

3

2

4

6

5

Топологическая сортировка. Шаг 10 Вектор с результатом: 5 – 3 1 3 2 4 6 5

Слайд 16

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

Вектор с результатом:
5 – 3 – 6

1

3

2

4

6

5

Топологическая сортировка. Шаг 11 Вектор с результатом: 5 – 3 – 6

Слайд 17

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

Вектор с результатом:
5 – 3 – 6 – 4

Топологическая сортировка. Шаг 12 Вектор с результатом: 5 – 3 – 6

1

3

2

4

6

5

Слайд 18

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

Вектор с результатом:
5 – 3 – 6 – 4

Топологическая сортировка. Шаг 13 Вектор с результатом: 5 – 3 – 6
– 2

1

3

2

4

6

5

Слайд 19

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

Вектор с результатом:
5 – 3 – 6 – 4

Топологическая сортировка. Шаг 14 Вектор с результатом: 5 – 3 – 6
– 2 – 1

1

3

2

4

6

5

Слайд 20

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

Вектор с результатом:
1 – 2 – 4 – 6

Топологическая сортировка. Шаг 15 Вектор с результатом: 1 – 2 – 4
– 3 – 5

1

3

2

4

6

5