Алгоритмы и структуры данных, часть 2

Санкт-Петербург, весна 2019

Список лекций

Поиск в глубину

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

Кратчайшие пути без отрицательных рёбер

Кратчайшие пути в графах. Нахождение кратчайших путей из одной вершины в невзвешенных графах, поиск в ширину. Нахождение кратчайших путей из одной вершины в графах с положительными весами, алгоритм Дейкстры, оценка времени работы при различных реализациях очереди с приоритетами (массивом, двоичной кучей, d-ичной кучей).

Кратчайшие пути в графах с отрицательными рёбрами

Нахождение кратчайших путей из одной вершины в графах, в которых есть рёбра отрицательного веса, алгоритм Беллмана-Форда, проверка наличия цикла отрицательного веса. Кратчайшие пути в ациклических ориентированных графах. Кратчайшие пути между всеми парами вершин: алгоритм Флойда-Уоршалла.

Задача о максимальном потоке

Задача о максимальном потоке. Теорема о минимальном разрезе и максимальном потоке. Алгоритм Форда-Фалкерсона. Алгоритм Эдмондса-Карпа. Задача о паросочетании в двудольном графе.