Форд-Беллман, Флойд (19 ноября)
- [Java-Code]
- Форд-Беллман. Тестируем на случайном графе.
- Стандартная реализация за Θ(VE), V = 105, E = 2 × 105 [code]
- Реализация с break − 22 итерации [code]
- Реализация с очередью − 1.31 итерация [code]
- Задачи
- Пусть вес пути − максимальное ребро на пути. Насчитать матрицу расстояний.
- Нужно научиться на запрос "уменьшился вес ребра" за O(n2) пересчитывать матрицу расстояний.
- Есть n валют и m обменников. i-й обменник предлагает менять валюту ai на валюту bi по курсу ci/di. Можно ли, используя сколь угодно большие начальные сбережения и данные m обменников, сломать финансовую систему и бесконечно обогащаться? Считается, что у обменников есть бесконечное количество денег целевой валюты. O(nm).
- Есть ограф. Нужно найти количество необязательно простых путей из a в b
- Длины ровно k, здесь k ≤ 109.
- Длины не более k, здесь k ≤ 109.
- Длины от l до r, здесь l ≤ r ≤ 109.
- Цикл минимального среднего веса за O(VElogM)