这个项目选择问题对应的网络流量问题是什么?

What is the network flow problem that corresponds to this project selection problem?

本题是关于网络流在项目选择中的应用。项目 selection 问题是 select 哪一组项目可以实现收益最大化的问题。每个项目都有收入(正或负)。项目也有其他项目的先决条件。如果A中的每个项目的前提条件也在A中,则一组项目A是可行的。项目selection问题是选择收益最大的可行项目集。项目 selection 问题可以转化为网络流问题,并使用 Ford Fulkerson 算法求解。考虑以下一组项目:

姓名、收入、先决条件

A、6、D

B、9、D

C,-8

D, -12

E, 7, C D

我很困惑,因为 C 和 D 的收入是负数,我不确定如何将这个问题转化为网络流量问题。

更容易考虑将此问题简化为最大流的对偶问题,最小割,因为每个割都由节点的子集定义。给定来自(例如)Ford--Fulkerson 的最大流,我们可以通过从残差图中的源执行深度优先搜索来找到最小切割。

由于我们要选择项目的子集,网络中的大部分节点都对应一个项目,除了源节点和汇节点。选择的项目将是最小切割源端的项目。对于依赖于项目 v 的每个项目 u,我们添加一个从 u 到 v 的无限(或非常大的)容量弧,这样每个包含 u 但不包含 v 的 cut 都具有无限容量,将其排除在竞争之外。

现在我们进入您问题的核心:处理可能为正、负或零的收入(实际上是利润,但我会匹配您的术语)。鉴于我们正在处理最小削减,我们希望最小化负收益,因为这等同于最大化收益。对于收入为负的项目,我们通过添加一条容量等于从项目节点到水槽的负收入的弧来设置包含它们的成本。当且仅当项目节点位于源端时,即选择项目时,我们才支付此费用。对于收入为正的项目,我们添加一条从源到容量等于收入的项目节点的弧。在最小切割不再等于总收入的意义上,这会使 objective 产生偏差,但它们仅相差一个加法常数,并且该机制具有正确的效果,如果我们不选择项目,然后我们将其收入添加到最小切割。