• 最大权闭合子图模型


    最大权闭合子图模型

    写了几道这类题,觉得很有意思,有必要总结一下


    什么是闭合子图?

    对于一个有向无环图,它的一个闭合子图满足对于其中的任意一个点,从它出发能够到达的所有点都和它在同一个闭合子图中

    比如下面这个图

    它的所有闭合子图集合为:
    (emptyset,{3},{5},{4,5},{3,4,5},{2,3,4,5},{1,2,3,4,5})

    其实就是走不到集合外的点,“闭合”的子图
    ——GoldenPotato

    什么是最大权闭合子图?

    对于一个点带正/负权的有向无环图,其最大权闭合子图在所有的闭合子图中,点权和最大

    怎样用到题目中?

    建立超级源点(s)和超级汇点(t),从(s)向所有点权为正的点连边,边权为点权;从所有点权为负的点向(t)连边,边权为点权的相反数;原图中原本就存在的边之边权设为正无穷

    那么最大权闭合子图的权值等于所有正权点之和减去最小割

    证明:

    以下引自https://www.cnblogs.com/TreeDream/p/5942354.html
    字母比较多,请注意辨别和理解

    首先我们要证明两个引理:
    1.最小割一定是简单割
    简单割指得是:割((S,T))中每一条割边都与(s)或者(t)关联,这样的割叫做简单割。
    因为在图中将所有与(s)相连的点放入割集就可以得到一个割,且这个割不为正无穷。而最小割一定小于等于这个割,所以最小割一定不包含无穷大的边。因此最小割一定一个简单割。
    2.简单割一定和一个闭合子图对应
    闭合子图(V)和源点(s)构成(S)集,其余点和汇点(t)构成(T)集。
    首先证明闭合子图是简单割:若闭合子图对应的割((S,T))不是简单割,则存在一条边((u,v),u∈S,v∈T),且c(u,v)=(∞)。说明(u)的后续节点(v)不在(S)中,产生矛盾。
    接着证明简单割是闭合子图:对于(V)中任意一个点(u)(u∈S)(u)的任意一条出边(c(u,v)=∞),不会在简单割的割边集中,因此(v)不属于(T)(v∈S)。所以(V)的所有点均在(S)中,因此(S-s)是闭合子图。
    由上面两个引理可以知道,最小割也对应了一个闭合子图,接下来证明最小割就是最大权的闭合子图。
    首先有割的容量(C(S,T)=T)中所有正权点的权值之和(+S)中所有负权点的权值绝对值之和。
    闭合子图的权值(W=S)中所有正权点的权值之和(-S)中所有负权点的权值绝对值之和。
    则有(C(S,T)+W=T)中所有正权点的权值之和(+S)中所有正权点的权值之和=所有正权点的权值之和。
    所以(W=)所有正权点的权值之和(-C(S,T))
    由于所有正权点的权值之和是一个定值,那么割的容量越小,(W)也就越大。因此当(C(S,T))取最小割时,(W)也就达到了最大权。

    形象理解

    emmmm这个证明似乎有点看不懂

    我们可以用 「Luogu2762」太空飞行计划问题煮个梨子

    W教授YY他可以白嫖所有实验的收益(正权点权值之和)

    但是他很快意识到他是要交钱的(选择某些正权点时必须也要选择负权点)

    于是他画了个图来算花费(网络流图)

    他必须舍弃一些实验的收益(割掉源与这个实验的连边)

    或者保留这个实验并且吃掉所需仪器的而收费(割掉所需仪器与汇的连边)

    他希望舍弃的收益和仪器的花费最少(最小割)

    最终所有的收益减去这些舍弃的收益和仪器的花费即是W教授能赚到的最多钱

    求方案

    最大权可以通过跑最大流求得,那……如何求最大权闭合子图的点集呢?

    证明中提到(S-s)是一个闭合子图,那么我们只需要跑完最小割之后,找到所有仍与(s)相连的点即可

    即最后一次增广(失败)找到阻塞流时,所有被分层了的点

    例题

    「BZOJ1497」[NOI2006]最大获利

    「BZOJ1565」[NOI2009]植物大战僵尸

    「Luogu2762」太空飞行计划问题

  • 相关阅读:
    Python下划线简介
    OneHot编码
    搜狗新闻原始数据处理
    2. mirth connect探索------------ cs模式客户端登录
    System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效。
    python学习历程-安装篇(一)
    Python学习笔记(一)
    使用dva 搭建ant design mobile项目
    [error] OpenEvent("Global gx_stop_25184") failed (2: The system cannot find the file specified)
    nginx 上部署 react 项目
  • 原文地址:https://www.cnblogs.com/lizbaka/p/10304238.html
Copyright © 2020-2023  润新知