【问题标题】:Modification to Maximum Flow Algorithm修改最大流量算法
【发布时间】:2014-02-11 15:58:54
【问题描述】:

我试图解决一个关于maximum-flow problem 的问题。我有一个源和两个接收器。我需要在这个网络中找到一个最大流量。这部分是一般的最大流量。但是,在这个特殊版本的最大流量问题中,两个目标都必须获得相同的流量。

有没有人可以帮助我,我该怎么做?

【问题讨论】:

  • -1 的原因是什么?
  • 你说的是流体分析还是计算机网络消息?
  • 我会从与你做一般最大流量相同的方式开始,除了在每一步,找到两条增强路径,一条从源到每个目标。然后向两条路径添加足够的流量,以使两个目标仍然获得相同数量的流量(这对于非边不相交图来说有点复杂)。我不确定这样做实际上会导致两个目标的最大可能值。
  • 问题“不清楚”怎么办?恕我直言,问什么很明显。实际上是一个有趣的问题。

标签: algorithm max-flow network-flow


【解决方案1】:

s 成为您的源顶点,t1t2 成为两个汇点。

您可以使用以下算法:

  1. 使用具有两个接收器的常规最大流,例如通过具有无限容量的边将t1t2 连接到超级接收器。您现在拥有最大 excess(t1) + excess(t2) 的解决方案,但它可能不平衡。

  2. 如果excess(t1) == excess(t2),你就完成了。否则,w.l.o.g.让excess(t1) > excess(t2)

  3. 在步骤 1 的残差网络中使用源 t1 和接收器 t2 运行另一轮 max-flow。限制从 t1 流出的流到 c = floor((excess(t1) - excess(t2)) / 2),例如通过引入一个 super -source S 通过具有给定容量c 的边连接到t1。现在,excess(t2) 是您可以发送到两个接收器的最大流量。

  4. 如果您需要重建每条边的流量值,请执行另一轮最大流量以将 excess(t1) - excess(t2) 剩余的流量单位传输回源。

复杂性是您的最大流算法的复杂性。

如果您已经知道如何用下限容量求解最大流量,您还可以对解进行二分搜索,从而得到复杂度 O(log W * f) 其中W 是解值,f 是最大流量复杂性。

【讨论】:

  • 很抱歉,不清楚如何将超级源添加到 t1 将流量单位转移到 t2。据我了解,t1 仍将是一个接收器,并且无法将流“从”t1 转移到任何其他节点。如果我误解了,再次抱歉。
  • @AbhishekBansal 将 t1 视为普通节点,将 t2 视为接收器并继续从新源到 t2 进行最大流量
  • 致作者:你能更明确地解释一下第 4 步吗?
  • @KudayarPirimbaev t1 将其所有边作为传入边(因为它是接收器)。怎么算正常节点?
  • @AbhishekBansal 我认为假设图形是双向的,在你的情况下,我猜,你需要将所有边的方向反转到 t1,除了来自新源的边,试试这样,我我不确定
猜你喜欢
  • 1970-01-01
  • 2012-07-02
  • 2020-11-24
  • 1970-01-01
  • 2020-03-26
  • 2016-07-19
  • 1970-01-01
  • 2020-04-08
  • 2014-04-11
相关资源
最近更新 更多