ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

构图之美——谈最小割解最大权闭合子图

2019-10-20 23:03:07  阅读:348  来源: 互联网

标签:之美 子图 闭合 最小 建图 割解 集合 值点


本篇旨在为正在学习网络流的同志们介绍用最小割解最大权闭合子图的题型,同时表达我对构图之美的崇拜。我将尝试解答以下问题:

一.什么问题可以抽象成最大权闭合子图?

二.最大权闭合子图的题怎样建图?

三.为什么这样建可以用最小割解?(建图之美)

 

但限于水平,我无法解答类似以下问题。。。

一。怎么想出来要这样建图?

二。怎么想到往网络流,特别的,最小割的方向靠拢?

三。………………

另外全篇没有图。我更喜欢强调感性理解,感性理解的意思就是,为什么这样看上去是对的?衡量标准是,如果你能不动用草稿纸推导公式,光靠平时走路去吃饭的路上在心里一想就能明白,那你就是感性上理解了。我觉得这可能是茫茫题解中比较珍稀的。

 

预备知识

一.学会了最大流。理解了最小割。知道最大流同等于最小割

二.看过网络流24题之太空飞行计划问题题面。这是此类的模板题。

三.   知道闭合子图是什么,最大权闭合子图是在求什么

 

 正文:

什么问题可以抽象成最大权闭合子图?

这种套路的题有如下特征(以飞行计划为例):

  1. 有两种点,一种遍历到会获得正权值的收益(选择做实验,获得经费收益),另一种遍历到要承担负权值的亏损(选择器材,需要花费)
  2. 题目要求获得最大收益,然而你不能只选择正权值的点,或者说,正权值的点能被遍历仅当部分负权值的点已被遍历,这是个捆绑的过程(你总不能不买器材就裸奔实验)

 

 

为什么最大权闭合子图可以用最小割解?

 

这要归功于他巧妙的建图方式(orz)

  1. 我们把正权值点与S相连,负权值点与T相连,相连的容量分别为点权的绝对值。我们规定与S相连且流量未满的点属于一个集合,叫他集合S;与T相连且流量未满的点属于另一个集合,叫他集合T
  2. 在初始状态,对于S集合和T集合的点,如果他们之间有联系(比如在飞行计划中,做实验就要先买相应的仪器),连一条容量INF的边。

 

下面重点说明这样建图的精妙之处

我们设sum表示所有正权值点权的和,对于最理想的情况,当然是直接选择所有的正权值点,避开所有负权值点(白做实验拿经费,还不用掏钱买装置)。此时,我们选中了所有的正权值点,也就是S集合中的所有元素,而对于其他元素(即与T相连的元素)不予考虑。因此,S集合就是我们要找的解。此时,ST集合隔了一条楚河汉界,民至老死而不相往来。这就是一个闭合子图。总的来说,我们要找的解就是楚国与S集合相连的闭合子图。(这个转化很巧妙,觉厉但不明的请往下看)

 

 

但是对于实际情况,我们不但要舍弃一些实验,还要购进一些实验装置。因此两个集合中的点是有关系的,但是这样就不满足我们的条件,构不成闭合子图了(请回顾下闭合子图的定义),因此我们只能将不满足条件的S集合的点去掉,叫你私通。我们的目标是:在保证形成闭合子图的条件下,即ST集合完全分隔的条件下,使去掉的S集合的点权值尽量小。(先不用考虑T集合的点)

 

这时我们的思维可以直接跳到网络流中的最小割。最小割是在满足残余网络不连通的情况下去掉最少的边,与我们的去点操作不谋而合,但是还是有区别的——一个是去点,一个是割边。怎么实现大一统?我们回顾一下前面的建图方式:我们要去掉点,包括S和T集合的点,相当于把他们与S或T连接的边割掉了(注意非ST集合的其他点相互连接的边不可割,因为容量无穷大)。在跑完最大流剩下的残余网络中,幸存的边不足以使S和T联通,所以联盟里的人跑不到部落里面去,部落里的人到不了联盟里面来,闭合子图也就形成了。而最终留在S集合中的点(他们与S相连的边没有被割掉)就是最终答案。

 

那T集合的点怎么处理?我们这样想:要求最小割就要跑最大流,最大流是把源点S的流量尽可能运送到T,这个过程中他会经过S集合的点,如果S与这个点连接的边的流量已满,相当于割边,这个点就被舍弃掉了(不能从中获得收益了);另一方面,他还会不可避免的经过T集合的点,如果这个点与T连接的边的流量已满,相当于割边,这个点反而是被选择的,而且是为了贯通S和T非选不可的。(因此必须要在上面花费)。为什么同样是满流,却会出现一种点表示舍弃一种点表示选择的情况呢?答案在下面。

 

最后,如何输出最大收益

设实际收益为ans,则sum-ans={舍弃了一些实验而没有获得的收益和被迫购买了装置的花费},设为deltaW

从数的角度来看,对于同一个数据,sum是不变的,为了让ans最大化,我们的目标是:争取只舍弃那些总收益尽量小的实验,同时只购买总花费尽量小的装置,并使舍弃的收益与花费的代价总和最小化。这种最优决策问题我们交由最小割来解决。回顾上一个段落(为什么的问题那里),最小割就是在做两件事:把一些属于S集合的点选中(意味着剔除),把一些属于T集合的点选中(意味着考虑),因此求解deltaW的过程从抽象来看就是求解最小割的过程(怎么抽象就是前面的内容)。因此mincut=maxflow=deltaW。

 

 

于是我们得出最终结论:求解这类问题,先统计出所有可以获得收益的正权值点的权值总和ans,然后建图算出maxflow,最后输出ans-maxflow。

 

 

但是我觉得结论不是重点,学会了解决这类题也不是重点,重点是,感受这种构图之美。感受这种非凡的构图方式,感受他是如何将一个平衡收益花费的最优化问题转化成了图,又巧妙的转化成网络流的问题。通过这种抽象,就能将实际问题压缩成理想模型,然后用算法实现。但是如果没有这个抽象,你们不觉得这完全是两码事吗?抽象通过探求本质,将两件表象完全不同的事物类比。不学算法数学,未能知其妙也,世界也就因此少了一个维度的精彩了。

 

标签:之美,子图,闭合,最小,建图,割解,集合,值点
来源: https://www.cnblogs.com/reshuffle/p/11710728.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有