闭合图

我们给出闭合图的定义:对于有向图中的点,其相邻的节点全部属于这个有向图,那么这个图就被称为闭合图。

也就是说这个图的终点一定是出度为0的。

最大权闭合子图

就是对于一个有向图,每个点有一个权值,权值属于实数,现在考虑选择一个闭合子图使得这个子图中的点的权值和最大。

我们尚且思考一下,不难发现我们选择一个点,那么这个点的后继节点我们全部需要选择,即它可以到达的点我们全部需要选择进来。

这样不免会选择到权值为负的边,那么我们怎么操作?

我们可以考虑网络流的做法。先考虑建立超级源点和超级汇点。

对于所有权值为正的点,我们从 $S$ 向其建立一条容量为点权的边,然后对于所有点权为负的点,我们由其向 $T$ 连一条容量为其点权绝对值的边。

我们之后按照原图建边,容量为无限。最终的答案就是所有正点权之和减去最大流。

这是为什么?我们考虑证明这个结论。

我们令 $S$ 放出的流量为最多可以获得的权值(虽然最后不一定可以取到), $T$ 收到的流量为我们失去的价值。

我们考虑特殊的情况,如果选择了这个点以及其后继,总价值是负的,但是我们不选择就更优,但是由于我们对于正点权的点设立了最大可以流的容量,所以最后答案是大于等于 $0$ 的,这个符合我们的最优决策。

我们再考虑增广的过程,我们选择一个点(显然我们选择正点权的点)反应在网络流上就是对于其进行增广,我们暂且排除上面的特殊情况,我们考虑一整个后继都可以选择,于是把所有的可以到达的负权点全部刷掉,之后我们选择其他的点增广,即使我们选择了后继重复的点,也因为我们已经把其后继的负权点全部刷掉,不会再次减少价值。

因此我们可以知道这样构造是正确的。

Q.E.D.