【问题标题】:Ford-Fulkerson algorithm with "weighted" edges具有“加权”边缘的 Ford-Fulkerson 算法
【发布时间】:2013-05-21 15:56:26
【问题描述】:

Ford-Fulkerson 是否有任何变体在边缘上增加了额外的“重量”维度?

也就是说,我的意思是某些边缘比其他边缘更理想,尽管存在所有可能性,但它会优先考虑理想边缘而不是不太理想的边缘。

【问题讨论】:

  • 我不明白这里的重点。 Ford-Fulkerson 计算最大流量。您可以将网络视为一系列不同直径的管道。有多少水流过管道? FF 回答了这个问题。除了直径,没有任何管道比任何其他管道“更理想”。
  • 我问的原因是我正在使用这个算法来做典型的作业分配问题。但是,我想加入培训的可能性,而不是在没有人接受过该职位培训的情况下将工作留空。
  • 如果您将工作与人员匹配,那么您正在解决分配问题,这是由匈牙利算法解决的。
  • 谢谢 Tyler,我实际上最终使用找到的匈牙利算法实现了它community.topcoder.com/…

标签: php algorithm logic


【解决方案1】:

我知道添加权重有两种常见的概括。

最低成本流

假设您对每条边都有一个权重,并且想要计算满足约束且成本最低的流。 (成本 = 重量总和 * 沿相关边流动的单位)

这个问题叫做minimum cost flow

可以在 networkx 中找到名为 min-cost-flow 的实现。

这是一个很好的 topcoder tutorial 原始双方法。

我最喜欢的算法实际上是富尔克森本人在 1961 年发明的,称为out of kilter algorithm

最大流量最小成本

假设您确实想要最大流量,但想选择权重最小的流量。

这与第一种解释不同,因为最小成本流可能不会给出最大可能流。例如,假设我们有一条单边 start->end,其约束条件是流在 0 到 1 的范围内,权重为 1。

min-cost-flow 的流量为 0,而 max-flow-min-cost 的流量为 1。

可以在名为 max_flow_min_cost 的 networkx 中找到一个实现。

【讨论】:

  • 非常感谢!最大流量最小成本是我的问题的解决方案。 Tyler 对匈牙利算法的建议也很有效。
猜你喜欢
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 2013-05-24
相关资源
最近更新 更多