do_while_true

一言(ヒトコト)

最小割求最大权闭合子图

现在是几几年,怎么还在学网络流。

最小割求最大权闭合子图

定义

有一个有向图,每一个点都有一个权值(可以为正或负或 \(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\) 的所有后继正节点都被选中了。

最优性

根据前面的讨论,任意一个合法的割都对应着唯一一个选点方案;任意一个合法的选点方案都对应着唯一一个割。

这样任意一个割和选点方案都组成了一个双射。由于一个选点方案的权值 \(=\) 正权和 \(-\) 割的大小。

所以最大权闭合子图的权值 \(=\) 正权和 \(-\) 最小割。

posted @ 2021-12-20 18:30  do_while_true  阅读(107)  评论(2编辑  收藏  举报