Кратчайшие расстояния в графах
- [10 минут] Классификация задач поиска пути
- Невзвешенный граф: bfs, O(E), 1950.
- Граф без отрицательных рёбер: Дейкстра за O(n2), O(mlogn), O(m + nlogn), O(m + nlogC), O(m + nsqrtlogC)
- На самом деле еще умеют для неорграфов искать путь за O(n + m), и для орграфов за O(m + nloglogmin(n,C))
- Отрицательные рёбра, отрицательные циклы, алгоритма для минимального простого пути не существует
- Граф с отрицательными весами рёбер
- 58' Ford,Bellman − O(EV)
- 83' Gabow − O(EV3/4log(nU))
- 89' Gabow,Tarjan − O(EV1/2log(nU))
- 93' Goldberg − O(EV1/2logN)
- [35 минут] Невзвешенный граф
- [15 минут] bfs (алгоритм без очереди, алгоритм с очередью, восстановление пути и сравнение с dfs, граф кратчайших путей, куда идут рёбра, код!)
- [5 минут] матрица расстояний и транзитивное замыкание за O(VE)
- [15 минут] транзитивное замыкание за O(VE/w) (bitset, конденсация, динамика)
--- Перерыв ---
- [25 минут] Модификации bfs для взвешенного графа без отрицательных рёбер
- Аналог bfs (позже докажем, что он за O(VE) работает)
- 0-1-bfs
- 1-k-bfs (на k+1 очереди, с раскатерением рёбер)
- [25 минут] Дейкстра
- Дейкстра за V*ExtractMin + E*DecreaseKey (V2, ElogV, E + VlogV, ElogE/VV)
- Алгоритм A*
- Реклама: алгоритм Гольдберга для поиска путей