Algorithm 与此项目选择问题相对应的网络流问题是什么?

Algorithm 与此项目选择问题相对应的网络流问题是什么?,algorithm,network-flow,Algorithm,Network Flow,这个问题是关于网络流在项目选择中的应用。项目选择问题是选择哪一组项目以实现收入最大化的问题。每个项目都有收入(正或负)。项目也有其他项目的先决条件。如果A中的每个项目的前提条件也在A中,则一组项目A是可行的。项目选择问题是选择一组具有最大收益的可行项目。项目选择问题可以转化为网络流问题,并使用Ford-Fulkerson算法进行求解。考虑下面的一组项目: 名称、收入、先决条件 A、 6,D B、 9,D C、 -8 D、 -12 E、 7,C D 我在这里感到困惑,因为C和D的收入为负,我不知道

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

名称、收入、先决条件

A、 6,D

B、 9,D

C、 -8

D、 -12

E、 7,C D


我在这里感到困惑,因为C和D的收入为负,我不知道如何将此问题简化为网络流问题。

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

由于我们希望选择项目的子集,因此网络中的大多数节点都对应于一个项目,但源节点和接收节点除外。选择的项目将是min cut源端的项目。对于依赖于项目v的每个项目u,我们从u到v添加一个无限(或非常大)容量弧,这样每个包含u但不包含v的切割都具有无限容量,从而使其不存在争用


现在我们进入你问题的核心:处理可能是正的、负的或零的收入(利润,真的,但我会匹配你的术语)。考虑到我们正在进行最小削减,我们希望最小化负收入,因为这相当于最大化收入。对于具有负收入的项目,我们通过将容量等于减去项目节点到接收器的负收入的弧添加到接收器,来设置包含这些项目的成本。当且仅当项目节点位于源端(即选择项目)时,我们才会支付此费用。对于具有正收益的项目,我们将从源添加一个弧到项目节点,其容量等于收益。这会使目标产生偏差,即最小削减不再等于总收入,但它们之间的差异只是一个相加常数,而机制的正确效果是,如果我们不选择项目,那么我们将其收入添加到最小削减中。

a、B、B的情况如何,D的收入是-6而不是-12?在您描述的网络中,可能的最大流量之一是源a-D-Sink,容量为6,将B节点分配给它,而在这种情况下,最大的项目收入实际上是a、B、D,o总收入为9。此外,我不同意“最小化负收入,因为它相当于最大化收入”。这根本不是事实。例如,如果你有一个负收入较大的项目,其中许多项目的总收入大于该项目的负收入,你仍然会将其包括在内,即使它对你的负收入总额产生了奇迹,@Shamis仍然有剩余能力,所以它在最小切割的源端,如果F--F返回最大流,它就被选中。至于你的第二个评论,它在数学上确实正确,因为x |->(-x)是一个反单调函数。