Min Cost Потоки (СПБГУ МатМех, весна 2013, спецкурс 344-й группы)
- Ford Bellman
- Задача: найти все кратчайшие пути из s в t
- Решение: d[k, v] = min(d[k-1, u] + w[u, v])
- Время работы O(VE), памяти O(V) (храним только последний слой)
- Реализация с break. Реализация с очередью.
- Поиск отрицательного цикла за O(VE).
- min cost потоки
- Поточная сеть с весами (w, -w, случай ориентированного и неориентированного графа)
- Задача: ищем поток размера k минимального веса. Обратное ребро имеет вес (-w).
- Алгоритм поиска mincost потока размера k, используя алгоритм Форда-Белмана за O(k*VE)
- Док-во корректности: рассмотрим разность mincost потока размера (k+1) и mincost потока размера (k).
- База: отсутвие циклов отрицательного веса. Если такие циклы есть, нужно сперва найти циркуляцию минимального веса.
- min cost потоки и отрицательные циклы
- Как строить min cost поток, если есть отрицательные циклы?
- Как искать цикл минимального среднего веса за O(VElogMax)?
- Полиномиальный алгоритм нахождения min cost потока (без док-ва)
- Применения min cost потоков
- Задача о назначениях, минимизировать сумму
- Задача о назначениях, минимизировать максимум
- Транспортная задача
- Распределения задач (отрезки) по k одинаковым автоматам. Нужно максимизировать стоимость выполненных заданий.
- Not read Покрыть граф циклами минимальной суммарной стоимости.
- Дан план, решающий транспортную задачу. Нужно его улучшить, или сказать, что он оптимален.
- В неориентированном графе найти простой цикл минимальной длины (веса), проходящий через две данные вершины.
- Дейкстра с потенциалами
- Потенциалы: изменяем веса ребер, кратчайшие пути остатся кратчайшими
- pv := dv → все новые веса ≥ 0
- Применение к потокам
- Eсли изначально есть отрицательные ребра, пустили ford-bellman-а, pv := dv, иначе pv := 0
- Дополняющий путь ищем Дейкстрой. После этого делаем pv += dv.