【发布时间】:2012-07-10 10:43:44
【问题描述】:
最小成本最大流量算法可以使用什么样的成本函数?
是否有可能具有类似于以下的成本函数:
- 如果边上的流量在 [1, X] 之间,则成本 = FixedCost + C1 + 流量 * cost_per_flow[C1]
- 如果边上的流量在 [X + 1, Y] 之间,则成本 = FixedCost + C2 + 流量 * cost_per_flow[C2]
- 等
这会以任何方式改变算法吗?
【问题讨论】:
最小成本最大流量算法可以使用什么样的成本函数?
是否有可能具有类似于以下的成本函数:
这会以任何方式改变算法吗?
【问题讨论】:
您可以将固定成本相加,然后将其从等式中删除。然后,您将每条边分成 2 条边,每条边都有适当计算的成本。
【讨论】:
最小成本最大流算法只是特定类型线性程序的求解器。
使线性规划有效求解的是凸性:在这种情况下,如果您有两个可行的流 F 和 G,那么对于 [0, 1] 中的所有 t,流 tF + (1-t)G 是可行的并且有成本(tF + (1-t)G) ≤ t 成本(F) + (1-t) 成本(G)。对于您的目标,这基本上意味着 [1, X] 中的 FixedCost 为 0,C1 ≤ C2, [X + 1, Y] 中的 FixedCost 为 (C1 - C2)X ≤ 0. 看起来像这样:
6| .
5| .
4| .
3| .
2| .
1| .
0.----------
0 1 X
[1, X] > 0 中的 FixedCost 可能对您很重要,但这会使问题成为 NP-hard。图中的 Steiner 树的一个缩减是使每条边的容量无限,并花费由 Steiner 树问题为第一个单元指定的权重,然后为 0。将 k - 1 个 Steiner 终端中的一个设为容量为 k - 1 的源,其他容量为 1 的接收器。请求最便宜的 k - 1 单位流量。
【讨论】: