让
a_1, ..., a_n
个演员。每个演员的成本为c_1, ..., c_n
。此外,我们有投资者,b_1,..., b_m
这样每个投资者都愿意为我们的电影投入q_j
钱。如果所有他喜欢的演员都参与我们的电影,那么投资者就会在我们的电影中投入资金。 当然,我们可能有多个投资者。找到参与者/投资者的子集以最大化我们的利润(即投资总和减去工资总额)
基本上,解决方案是将一些顶点s
连接到具有权重q_i
边缘的每个投资者。接下来,我们将每位投资者与重量级infinity
的优势演员联系起来。最后,我们将每个actor连接到具有权重t
边缘的某个顶点c_i
。
然后,我们寻找最大流量。
我的问题是:
(S,T)
,然后我们有:picked_investors = S ∩ investors
和picked_actors = S ∩ actors
。你能解释一下吗?答案 0 :(得分:2)
此算法基于最大流量 - 最小切割对偶性。让我们分析一下这个图表中的mincut是什么样的。
我们可以很容易地看到有限的解决方案是可能的:考虑在一侧具有{s}
而在另一侧具有其他节点的切割。显然,这个切割的值是q_i
的总和,它是有限的。
现在让我们看一下此图中切割的含义。如果投资者与削减中的s
处于同一侧,则意味着他/她将投资他/她的钱。如果演员与剪辑中的s
位于同一侧,则意味着他也将参与该电影。处于剪辑的另一边意味着不参与电影(对演员和投资者而言)。
关键部分如下:任何不满足声明中给出的限制的削减将具有无限的价值,因为投资者将有一个优势,即跨越削减的行为者。正如我们之前看到的,存在一个有限的解决方案,因此mincut将满足限制。
现在,我们最大限度地减少了什么?忽略无限边缘,如果我们为电影选择该演员,则会将一个演员边缘添加到该值中,如果我们不为电影选择该投资者,则会添加投资者优势。我们希望最大限度地发挥效益,这与最大限度地减少我们失去的东西相同。