最小割求最大权闭合子图
现在是几几年,怎么还在学网络流。
最小割求最大权闭合子图
定义
有一个有向图,每一个点都有一个权值(可以为正或负或 \(0\)),选择一个权值和最大的子图,使得每个点的后继都在子图里面,这个子图就叫最大权闭合子图。
转化成最小割问题
建立超级源点 \(s\) 和汇点 \(t\).
\(s\) 向每个正权点连边,流量为权值的绝对值。这条边存在代表该点在所选子图中。
每个负权点向 \(t\) 连边,流量为权值的绝对值。这条边存在代表该点不在所选子图中。
原图边的流量均为 \(+\infty\) (不能被割掉)。
求该网络的最小割,即可求出最大权闭合子图包含哪些点。
最大权闭合子图的权值 \(=\) 正权和 \(-\) 最小割。
合法性
当 \(s\) 和 \(t\) 不连通时,选出的子图不满足条件。假设有一条增广路,\(s\to i\),\(j\to t\),则 \(i\) 被选中,\(j\) 没有被选中,不符合限制。
当 \(s\) 和 \(t\) 连通时,选出的子图满足条件。对于任意一个 \(s\to i\):
-
\(i\) 的后继负节点到 \(t\) 的边被割掉了,它们被选中了;
-
由于已经割掉了 \(i\) 的所有后继负节点,\(i\) 的后继正节点一定无法走到 \(t\),割掉它们与 \(s\) 的边是不优的,最小割不会把它们割掉,所以 \(i\) 的所有后继正节点都被选中了。
最优性
根据前面的讨论,任意一个合法的割都对应着唯一一个选点方案;任意一个合法的选点方案都对应着唯一一个割。
这样任意一个割和选点方案都组成了一个双射。由于一个选点方案的权值 \(=\) 正权和 \(-\) 割的大小。
所以最大权闭合子图的权值 \(=\) 正权和 \(-\) 最小割。