具有自定义成本函数的最小成本最大流算法

时间:2012-07-10 10:43:45

标签: algorithm graph flow

最低成本最大流算法可以使用哪种成本函数?

是否可以使用类似于以下的成本函数:

  • 如果边缘上的流量介于[1,X]之间,则成本=固定成本+ C1 +流量*成本_per_flow [C1]
  • 如果边缘上的流量介于[X + 1,Y]之间,则成本=固定成本+ C2 +流量*成本_per_flow [C2]

这会以任何方式改变算法吗?

2 个答案:

答案 0 :(得分:1)

最小成本最大流算法只是特定类型线性程序的求解器。

使线性程序有效解决的是凸性:在这种情况下,如果你有两个可行的流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]>中的FixedCost很重要。 0,但这使问题NP难。图中Steiner树的减少是为了使每个边的容量无限,并且为第一个单元的Steiner树问题指定的权重和之后的0。使其中一个k - 1 Steiner终端成为容量为k - 1的源,而其他终端容量为1,请求最便宜的k - 1单位流量。

答案 1 :(得分:0)

您可以累计固定成本,并将其从等式中删除。然后,将每条边分成两条边,每条边都有适当的计算成本。