最小割的一些思考

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ห้องสมุดไป่ตู้
例题
• 例题:poj 1966 给出一个由n个点,m条边组成的无向图。 求最少去掉多少点才能使得图中存在两点,它们之间不连 通。 依次枚举源点和汇点,按照如上方式构图,求出最大流。 枚举源汇点得到的最大流最小的值既是这个图的最小点割 集。

• •
例题:poj 1815 给出一个无向图,和图中的两个点s,t。 求至少去掉几个点后才能使得s和t不连通,并按照字典序 输出这些点。 • 从小到大(因为要按照字典序输出)依次枚举图中除了s,t 之外的点,把这个点删去后对这个图做最大流,如果流量 减少则说明这个点必然属于一个独立轨,那么就记录这个 点,不再还原,并枚举下一个点,否则还原这个点。枚举 完成后按顺序输出所有记录到的点即可。
算法描述
• 算法描述:在原图的基础上增 加源点s和汇点t,将原图中的 每条有向边替换为容量为正无 穷的有向边,s向图中的所有正 权点连接有向边,容量为这个 点的权值。图中的所有负权点 向汇点t连边,容量为这个点权 值的绝对值。对构造出的网络 图求最小割,用所有正权的总 和减去最小割即为最大权值。 从s开始进行dfs能访问到的点 属于最大权闭合图。(以上页 图为例,转化为网络流图后的 效果如右图) • 具体描述及证明证明详见 Amber论文《最小割模型在信 息学竞赛中的应用》
最大权闭合图
• 定义:在一个有向图中, 有边(u,v),如果选择了u, 必须选择v,这样选出的 图叫做闭合图。某些点 有权值,则选出的权值 最大的闭合图,叫做最 大权闭合图。 • 右图中的闭合图有空 集,{5},{2,5},{4,5},{2,4,5}, {3,4,5},{1,2,3,4,5},{1,2,4 ,5}。最大权闭合图为 {3,4,5}。权值之和为4。
一些割的性质
• 1.割[S,T],流量只能从S流向T,不能从T流向S! (在最 大流后找割dfs时其实就满足这个性质,假设T中一个点v 流向S中的一个点u,那么u到v有负流量,则u到v的残留 网络严格大于0。 ) • 2.最大流后,割边一定满流。减小某一割边后,网络流减 小。 • 3.如下图,从s沿着残余流量dfs,得到点集S;同理沿着t 反向dfs,得到点集T;剩下的是M。分界线cut1和cut2是 其中一割,边自然为割边。然而在M中还存有割边(一定 存有!!否则M就没用了!)
网络流的一些思考
基本概念
• • • • 二分图 网络流:肯定是有向的带流量(容量)的图 最大流 最小割:
二分图
• • • • 二分图的概念 二分图的判断 二分图的匹配(匈牙利算法)(最大流) 二分图的应用
• 二分图绝大多数可以用网络流来写,不过 有例外。 • noi2009那道题
网络流
• • • • 流量很重要 dfs的回溯很厉害 最小费用最大流 spfa来判断是否有增广路。 两个ppt
二分图的一些概念
• 在一个无向图 G = (V , E ) 中,有如下定义。 • 点覆盖集(vertex covering set,VCS)是无向图 G 的一个点集,使 得该图中所有边都至少有一个端点在该集合内。形式化的定义是点覆 盖集为V ' ∈V ,满足对于 ∀(u, v) ∈ E ,都有u ∈V ' 或 v ∈V ' 成立, 即 u ∈V ' , v ∈V ' 至少一个成立。形象地说是若干个点“覆盖”住 了与它们邻接的边,这些边恰好组成了原边集。 • 点独立集(vertex independent set,VIS)是无向图 G 的一个点集, 使得任两个在该集合中 的点在原图中都不相邻。或者说是导出子图为 零图(没有边)的点集。形式化的定义是点独立集为V ' ∈V ,满足 对于 ∀u, v ∈V ' ,都有 (u, v) ∉ E 成立。点独立集还有一种等价的定 义: 点独立集为V ' ∈V ,满足对于 ∀(u, v) ∈ E ,都有 u ∈V ' 与 v ∈V ' 不同时成立。 • 最小点覆盖集(minimum vertex covering set,MinVCS)是在无向 图 G 中,点数最少的点 覆盖集。 • 最大点独立集(maximum vertex independent set,MaxVIS)是在无 向图 G 中,点数最多的 点独立集。 • 以上两个问题都是经典的NPC问题,但在二分图中都可以用最大匹配 模型来快速解决。 • 论文第30页。

一些割的性质
• 退化一下:如下图所示,S和T 有相邻部分边集E1,S和M重合 边集相邻部分边集E2,M和T相 邻边集部分E3,那么直接升高 E1中某条边的容量,会使整体 容量直接增高!反之:而如果 增大S和M相邻的割边或者M和 T相邻的割边,网络流不直接增 大,因为M中还存有割边限制 。
• 继续退化:如果M==空集, cut1和cut2重合(变为cut), 则网络中割唯一。可以通过 if ( |S|+|T|==总点数) 来判断
网络流关键割边 • 定义:关键割边就是增加某条边的容量,可 以使得网络的最大流增加。 • 算法描述:首先对这个网络图跑一遍 dinic(最大流),得到残余网络。再分别 从s和t对残余网络进行dfs。对于一条边(a,b) 如果从s可以到达a并且从t可以到达b则该边 为关键割边。 • 注意,满流的边不一定是关键割边。具体 反例见胡波涛论文第8页。
怎样求割 • 求完最大流后,在残留网络中从source开 始dfs,被染色的为S,未被染色的为T,则 边集[S,T]为割。
• /f?kz=793195439 • 雷了!
固定模型的最小割问题构图方法及举例
常见类型 • 网络流关键割边 • 最大权闭合图 • 无向图点连通度(无向图最小点割集) • 二分图的最小点权覆盖集算法 • 二分图的最大点权独立集算法

例题:zoj 2532 有n个城市,m个中继站,一个总站--0点。有L条有 向线路连接这些点,每条线路都有各自的容量。现在所有的城市要向 总站发送信号。求增加哪条边的容量可以使得总信号流量增加。 • 同上面那道题基本相同,在加边时注意增加一个标号即可。 • • 例题:zoj 2587 给出一个网络图和源汇点,判断这个图的最小割是 否唯一。 • 之前做到的题目都是求最小割的大小是多少,这里最小割的唯一性 的该如何判断呢。其实这个问题的解决思路和求网络流的关键割边很 相似,都是在dinic后再分别从源汇点对这个残余网络进行dfs。如果 无法访问到所有的点则说明该图的最小割并不唯一。 • (我的想法是,如果一个点无法被遍历到,那么他肯定是被夹在两个 (或多个)满流的边之间,导致dfs无法到达该点,那么对于这两条满流 的边,把任何一个放在割中都可构成最小割,所以推出最小割不唯一)
最小割
• 胡伯涛的论文 • 以下内容只是对论文的理解。
最小割的概念
• 1.到底什么是割:原始点集为V,选出一些点集S 使得s∈S,T=V-S,t∈T,则S到T的边为S到T割, 记做[S,T]。 • 2.什么是最小割:图中所有的割中,边权值和最 小的割为最小割! • 3.割的容量容量和流量计算的区别:割[S,T]的容 量为∑(边(u,v)的容量和),其中u∈S,∈T。也就是 说割的容量不计算反向的边!!而流量为正向的 和反向的代数和。 • 4.最大流-最小割定理:最大流的值为最小割的容 量!(反证法) • 例题:巡逻。
二分图的最小点权覆盖集算法
• 定义:无向二分图G=(V,E)。X,Y分别是这个二分图的两个点集,每 一个顶点i都有一个权值vi。选出顶点集合V的一个子集V1使得E中的 每一条边都和V1中的点相连(至少有一个端点属于V1),并且使得V1 中所有点的权值之和最小。 • 算法描述:增设源汇点s和t。由s向所有X集合中的点连边,容量为 这个点的权值vi。Y集合中的点向t点连边,容量为这个点的权值vi。 如果原二分图中u和v之间存在边,则连接u->v容量为正无穷(用来保 证这条边不在割中)。对这个图求出最大流的值,既是最小点权覆盖 的值。
具体做法
无向图点连通度(无向图最小点割集) • 定义:一个具有N个点的图G中,在去掉任 意k-1个顶点后(1<=k<=N),所得的子图仍 然连通,去掉K个顶点后不连通,则称G是 K连通图,K称作图G的连通度,记作K (G)。
思路
• 独立轨:A,B是图G(有向无向均可)的两 个顶点,我们称为从A到B的两两无公共内顶 的轨为独立轨,其最大的条数记作p(A,B)。 • 在右图中有一个具有7个定点的连通图,从 顶点1到顶点3有3条独立轨,即p(1,3)=3; • 1—2—3 , 1—7—3 , 1—6—5—4—3 • 如果分别从这3条独立轨中,每条轨抽出一 个内点,在G图中删掉,则图不连通。若连 通图G的两两不相邻顶点间的最大独立轨数 最小的P(A,B)值即为K(G)。 • 若G为完全图(两两点可达),则K(G) =n-1,即完全把某个点的所有边删掉后才不 连通。 • 既然独立轨是只能经过一次的边,那么可以 构造网络流模型,其中每条边的容量为1, 就可以限制只经过一次。
例题 • poj 3204 一个由n个点,m条边构成的有向 图,每条边都有一定的流量。现在求存在 多少条边,在增加这些边的流量后从0点到 n-1的总流量会增加。 • usaco4.4.2 • /mengyun1993/blog/ite m/c30d193c9a85932870cf6cda.html • usaco 5.4.5 • 拆点
算法
• • • • • • • • • • 构建网络流模型: 若G为无向图: (1)原G图中的每个顶点V变成N网中的两个顶点V`和V``,顶点V`至V``有一条 弧容量为1; (2)原图G中的每条边e=UV,在N网中有两条弧e`=U``V`,e``=V``U`与之对 应,e`与e``容量均为无穷; (3)以A``为源点,B`为汇点,求最大流。 若G为有向图 (1)原G图中的每个顶点V变成N网中的两个顶点V`和V``,顶点V`至V``有一条 容量为1的弧; (2)原G图中的每条弧e=UV变成一条有向轨U`U``V`V``,其中轨上的弧U``V` 的容量为无穷; (3)以A``为源点,B`为汇点求最大流。 上面的模型只是求出了以A为源点B为汇点的最大流max_flow,等价于在G中 只要去掉max_flow个点就会使得A与B不连通。而图的连通度是要求去掉最少 的点使得整个图不连通,做法是固定一个点为源点,枚举与源点不相邻的点 为汇点,求最大流。在所有的枚举结果中最小的max_flow 值就是要求的 K(G).注意如果某次枚举的汇点求出 的最大流为无穷则说明此此枚举的源点 与汇点是强连通的。如果所有的枚举结果都为无穷,则说明整个图G是强连 通的,需要去掉n-1个点才能破坏其连通性。
题目
• noi06 profit • noi09 pvz
最大密度子图 Finding a Maximum Density Subgraph
• 定义一个无向图 G = (V , E ) 的密度 (density) D 为该图的边数 |E| 与该图 的点数 |V|的比值 • |E| D = |V | • 。 • 给出一个无向图 G = (V , E ) ,其具 有最大密度的子图 G ‘ = (V ’, E ‘) 称 为最大密度子图(maximum density subgraph),即最大化 | E '| • D ' = |V '| 。
• 给出了一幅 个点的图,其中在虚线内的点 与边组成最大密度子图,红边组成子图的 边集,密度为5/4
poj3155 • 给定N个点M条边,从中选取一些点,如果 选取的点之间有边相连,则这条边也被选 择;要求 边/点 最大的一种方案 。
• 最典型的最大密度子图。
分析 • 当求解性问题做不好,能不能转换为判定 性问题。 • 最原始的思路就是转换为二分。 • 论文从第20页到第21页,转换成了最大权 闭合图。 • 然后下面又逆向思维,更高级。 • 这个下周我再点一下。
相关文档
最新文档