最小割求最大权闭合子图

最小割求最大权闭合子图

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

最小割求最大权闭合子图

定义

有一个有向图,每一个点都有一个权值(可以为正或负或 0),选择一个权值和最大的子图,使得每个点的后继都在子图里面,这个子图就叫最大权闭合子图。

转化成最小割问题

建立超级源点 s 和汇点 t.

s 向每个正权点连边,流量为权值的绝对值。这条边存在代表该点所选子图中。

每个负权点向 t 连边,流量为权值的绝对值。这条边存在代表该点不在所选子图中。

原图边的流量均为 + (不能被割掉)。

求该网络的最小割,即可求出最大权闭合子图包含哪些点。

最大权闭合子图的权值 = 正权和 最小割。

合法性

st 不连通时,选出的子图不满足条件。假设有一条增广路,sijt,则 i 被选中,j 没有被选中,不符合限制。

st 连通时,选出的子图满足条件。对于任意一个 si

  • i 的后继负节点到 t 的边被割掉了,它们被选中了;

  • 由于已经割掉了 i 的所有后继负节点,i 的后继正节点一定无法走到 t,割掉它们与 s 的边是不优的,最小割不会把它们割掉,所以 i 的所有后继正节点都被选中了。

最优性

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

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

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

posted @   do_while_true  阅读(113)  评论(2编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?

This blog has running: 1845 days 1 hours 33 minutes 20 seconds

点击右上角即可分享
微信分享提示