【问题标题】:Maximum Flow Reduction with Cross Dependencies交叉依赖的最大流量减少
【发布时间】:2014-04-15 23:16:59
【问题描述】:

我有 n 个工作是使用旧系统完成的。如果我将它们更改为新系统,我将获得该工作的双重收益。一些工作对 (i,j) 具有依赖关系。改变工作但不改变其依赖对的成本 xij。作业 1 无法在新系统下运行。更改为新系统的理想工作组是什么(当然不包括工作 1)以最大化收益。

这是一个用我自己的话改写的算法问题。它应该减少到某种形式的最大流量或循环。由于成本取决于将其他作业更改为新系统(我似乎无法将静态值与最大流量图设置相关联并且有一个可行的解决方案),因此我在提出一种方法时遇到了极大的麻烦。我已经考虑了一段时间,但仍在努力寻找一个体面的方法。任何有关如何考虑解决此问题的建议将不胜感激!

【问题讨论】:

  • 当一个你知道可以用一个完全单模线性程序解决的问题谈到事物属于两组之一时,想想削减。
  • @DavidEisenstat:完全简单的经验法则
  • 感谢您的建议。绝对有帮助!让我想到了削减而不是流动,然后通过数学技巧,混合的正负最大化可以变成唯一的正最小化。

标签: algorithm max-flow


【解决方案1】:

让我们分配 b1 = −∞

经过简单的归约,你所描述的正是最大阻塞-切问题,例如在"The Pseudoflow Algorithm: A New Algorithm for the Maximum-Flow Problem", Hochbaum 2008中定义的:

给定一个有向图 G = (V, A),所有 i ∈ V 的节点权重为正或负 wi,非负弧权重 cij 对于所有 (i,j) ∈ A。 [...] 找到节点 S ⊆ V 的子集 这样

是最大的。

他们继续在最大阻塞切割问题和最小切割问题之间建立联系。为此,定义 V' = V ∪ { s,t } 和 A' = A ∪ { (s,i) | wi > 0 } { (j,t) | wj }。然后他们定义弧容量 csi = wi if wi > 0cjt = -wj 如果 wj。然后我们有

对于 S ⊆ V,{s} ∪ S 是 Gst = (V', A') 中最小割的源集当且仅当 (S, V \ S)是图 G 中的最大分块割。

通过使用max-flow min-cut theorem,可以使用最大流量算法轻松解决后一个问题。事实上,您可以使用作业 1 作为源,因为它保证是源集的一部分(在旧机器上运行的作业)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 2013-11-22
    • 2017-07-13
    • 1970-01-01
    • 2015-11-29
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多