【问题标题】:Min-cost-flow to max-flow最小成本流到最大流
【发布时间】:2013-06-18 02:26:44
【问题描述】:

是否存在从最小成本流问题到最大流问题的简化?或相反亦然?我想使用最小成本流算法来解决最大流问题。

【问题讨论】:

  • 根据维基百科,用于解决最小成本流问题的连续最短路径和容量缩放方法是解决最大流问题的 Ford-Fulkerson 算法的推广。此外,成本缩放算法可以看作是 push-relabel 算法的推广。

标签: algorithm reduction


【解决方案1】:

对不起,我想我第一次误解了这个问题。是的,Minimum Cost 是最大流量的特例。最小成本不是最大流量,而是假设在通过每条边之后,流量是有成本的。因此,如果您将每条边的成本设置为零,则最小成本会降低到最大流量。

编辑:

因为最低成本问题需要一个预定义的所需流程才能开始发送。您将需要多次运行上述算法(以边缘为代价c(u, v) = 0)来搜索最大值。对于给定的值范围,binary search 可用于更有效地定位最大值

你的意思是Min Cut Max Flow? (编辑:我不认为你是这个意思,但这是证明最大流量的基础,如果你没有的话值得一看) 如果您放下图表并自己进行最小切割,我会更容易理解。

【讨论】:

  • 感谢您的回答。是的,我的意思是最小切割最大流量问题。所以我猜你的意思是:假设一个供应,并使所有成本为0。解决最小成本流问题。如果可行,则增加供应量,否则减少供应量并再次运行算法。我们需要像这样搜索供应值。我说的对吗?
  • 我同意,您将需要某种 for 循环。其他人建议二分查找en.wikipedia.org/wiki/Minimum-cost_flow_problem
【解决方案2】:

向每条边添加 -1 成本(每单位流量),然后使用您的最小成本算法。这将使流量最大化。

【讨论】:

  • 错误答案:您必须将成本设置为 0 而不是 -1。
  • 赞成,因为这是取消反对票的唯一方法。不小心点击了。
【解决方案3】:

接受的答案可能是实用的。证明 Max-Flow 是 Min-Cost-Flow 的一个特例,还有另一种可能性。我的解决方案采用O(m^3 n^2 log n) 中的最小平均循环取消算法的一次迭代(因为 c 不保守):

1. set c(e) = 0 for all edges in G
2. add edge (t,s) with inf capacity and c((t,s)) = -1
3. start MIN-MEAN-CYCLE-CANCELLING on modified graph G'

正确性:算法正在寻找负权重的残差圆。只要存在从 s 到 t 的增广路径,就存在负加权残差圆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-24
    • 2016-06-15
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多