Алгоритм максимального потока с минимальной стоимостью - это просто решатель для определенного типа линейной программы.
Что делает линейные программы эффективно разрешимыми, так это выпуклость: в этом случае, если у вас есть два допустимых потока F и G, то для всех t в [0, 1] поток tF + (1-t)G допустим и имеет стоимость ( tF + (1-t)G) t стоимость(F) + (1-t) стоимость(G). Для вашей цели это в основном означает, что FixedCost в [1, X] равен 0, C1 C2, FixedCost в [X + 1, Y] равен (C1 - C2)X 0. Это выглядит примерно так:
6| .
5| .
4| .
3| .
2| .
1| .
0.----------
0 1 X
Вероятно, вам важно, чтобы FixedCost в [1, X] > 0, но это делает задачу NP-сложной. Сокращение от дерева Штейнера в графах состоит в том, чтобы сделать пропускную способность каждого ребра бесконечной и стоить вес, указанный задачей дерева Штейнера для первой единицы и 0 после этого. Сделайте один из k - 1 терминалов Штейнера источником с производительностью k - 1, а остальные стоки с производительностью 1. Запросите самый дешевый поток из k - 1 единиц.
person
redoubtable
schedule
10.07.2012