最大权闭合子图
作者:互联网
闭合图
我们给出闭合图的定义:对于有向图中的点,其相邻的节点全部属于这个有向图,那么这个图就被称为闭合图。
也就是说这个图的终点一定是出度为0的。
最大权闭合子图
就是对于一个有向图,每个点有一个权值,权值属于实数,现在考虑选择一个闭合子图使得这个子图中的点的权值和最大。
我们尚且思考一下,不难发现我们选择一个点,那么这个点的后继节点我们全部需要选择,即它可以到达的点我们全部需要选择进来。
这样不免会选择到权值为负的边,那么我们怎么操作?
我们可以考虑网络流的做法。先考虑建立超级源点和超级汇点。
对于所有权值为正的点,我们从 \(S\) 向其建立一条容量为点权的边,然后对于所有点权为负的点,我们由其向 \(T\) 连一条容量为其点权绝对值的边。
我们之后按照原图建边,容量为无限。最终的答案就是所有正点权之和减去最大流。
这是为什么?我们考虑证明这个结论。
我们令 \(S\) 放出的流量为最多可以获得的权值(虽然最后不一定可以取到), \(T\) 收到的流量为我们失去的价值。
我们考虑特殊的情况,如果选择了这个点以及其后继,总价值是负的,但是我们不选择就更优,但是由于我们对于正点权的点设立了最大可以流的容量,所以最后答案是大于等于 \(0\) 的,这个符合我们的最优决策。
我们再考虑增广的过程,我们选择一个点(显然我们选择正点权的点)反应在网络流上就是对于其进行增广,我们暂且排除上面的特殊情况,我们考虑一整个后继都可以选择,于是把所有的可以到达的负权点全部刷掉,之后我们选择其他的点增广,即使我们选择了后继重复的点,也因为我们已经把其后继的负权点全部刷掉,不会再次减少价值。
因此我们可以知道这样构造是正确的。
Q.E.D.
标签:最大,子图,闭合,后继,选择,权值,我们 来源: https://www.cnblogs.com/cbdsopa/p/15930948.html