Слайд 2Постановка задачи топологической сортировки
Дан ориентированный граф. Требуется пронумеровать его вершины таким образом,
чтобы каждое ребро вело из вершины с меньшим номером в вершину с большим.
Иными словами нужно найти топологический порядок вершин, который соответствует порядку, задаваемому рёбрами.
Топологическая сортировка может быть не единственной.
Топологическая сортировка существует только для направленных ациклических графов (DAG).
Слайд 3Пример топологической сортировки
1
3
2
4
6
5
Исходный DAG
Возможные результаты топологической сортировки:
1 – 2 – 4 –
6 – 3 – 5
1 – 3 – 2 – 4 – 5 – 6
1 – 3 – 2 – 4 – 6 – 5
Слайд 4Алгоритм
Переберём все вершины графа.
Если вершина белая, то запустим из неё поиск в
глубину.
Во время поиска при выходе из вершины будем добавлять её номер в вектор, хранящий результат.
После того, как все вершины были посещены, в векторе будет топологическая сортировка в обратном порядке. Её нужно перевернуть.
Слайд 5Топологическая сортировка. Шаг 0
Вектор с результатом:
(пусто)
1
3
2
4
6
5
Слайд 6Топологическая сортировка. Шаг 1
Вектор с результатом:
(пусто)
1
3
2
4
6
5
Слайд 7Топологическая сортировка. Шаг 2
Вектор с результатом:
(пусто)
1
3
2
4
6
5
Слайд 8Топологическая сортировка. Шаг 3
Вектор с результатом:
(пусто)
1
3
2
4
6
5
Слайд 9Топологическая сортировка. Шаг 4
Вектор с результатом:
5
1
3
2
4
6
5
Слайд 10Топологическая сортировка. Шаг 5
Вектор с результатом:
5 – 3
1
3
2
4
6
5
Слайд 11Топологическая сортировка. Шаг 6
Вектор с результатом:
5 – 3
1
3
2
4
6
5
Слайд 12Топологическая сортировка. Шаг 7
Вектор с результатом:
5 – 3
1
3
2
4
6
5
Слайд 13Топологическая сортировка. Шаг 8
Вектор с результатом:
5 – 3
1
3
2
4
6
5
Слайд 14Топологическая сортировка. Шаг 9
Вектор с результатом:
5 – 3
1
3
2
4
6
5
Слайд 15Топологическая сортировка. Шаг 10
Вектор с результатом:
5 – 3
1
3
2
4
6
5
Слайд 16Топологическая сортировка. Шаг 11
Вектор с результатом:
5 – 3 – 6
1
3
2
4
6
5
Слайд 17Топологическая сортировка. Шаг 12
Вектор с результатом:
5 – 3 – 6 – 4
Слайд 18Топологическая сортировка. Шаг 13
Вектор с результатом:
5 – 3 – 6 – 4
Слайд 19Топологическая сортировка. Шаг 14
Вектор с результатом:
5 – 3 – 6 – 4
Слайд 20Топологическая сортировка. Шаг 15
Вектор с результатом:
1 – 2 – 4 – 6