【笔记】二分图、网络流相关

二分图

这里的证明都是大概只有我能看懂的不严密证明…

二分图的可行边与必须边

建新图。
对于边 <u,v> ,若是匹配边,则v向u连边;若是非匹配边,则u向v连边。
源汇点同理:若 <s,u> 是匹配边,则u向s连边,否则s向u连边。若 <u,e> 是匹配边,则e向u连边,否则u向e连边。

然后求scc,若边 <u,v> 是匹配边且在同一个scc中,则是可行边;若是匹配边但不在同一个scc中则是必须边。

最小点覆盖=最大匹配

概念:二分图中选最少得点,使其覆盖所有的边。

可以贪心地去选点,使点出现在最大匹配上。

最小边覆盖=顶点数-最小点覆盖

概念:二分图中选最少的边,使其覆盖所有点。

首先可以贪心地选最大匹配上的边,因为这样可以一条边覆盖两个点。剩下的点只能由其他边一条边覆盖一个点了。

设最大匹配数为m,选的其他边的数量是a,满足2m+a=n,答案是m+a=n-m,即最小边覆盖=顶点数-最小点覆盖。

最大独立集=顶点数-最小点覆盖

概念:二分图中找一个最大点集,使得两点之间没有边。

去掉最少的点,剩下最多的点,使它们互相没有边。去掉的是点覆盖。

最小路径覆盖=原图顶点数-拆点后最大匹配

概念:有向无环图中选出不相交路径覆盖所有点,求不相交路径最小值。

拆点:把每个点拆成入点和出点,然后对于边 <u,v> ,加边 <u,v>

可以发现有向无环图中的一条边对应二分图中一条匹配边
有向无环图中的每条边的出点(from)对应于二分图的对应边匹配边左部点
每条路径最后一个点没有对应。

所以最小路径覆盖=路径最后一个点最最少=最少未匹配点=原图顶点数-拆点后最大匹配

网络流

最小割的可行边与必须边

首先不管是可行边还是必须边都要是满流边,因为最小割。

必须边:容量增大后最小割值增大。
必须边求法:跑完最小割后在残量网络上从源点dfs,汇点反向dfs,枚举起点被源点搜到、终点被汇点搜到的满流边就是答案。
另一种求法是tarjan。鏼大爷Orz。

可行边好像只能tarjan?

tarjan求可行边、必须边(前提条件是满流):
必须边:要求 sccnum[u]==sccnum[s] && sccnum[v]==sccnum[e] 。tarjan缩点后,若满足这个条件,那么扩大 <u,v> 的流量必能使最大流增大,所以是必须边。
可行边:要求 sccnum[u]!=sccnum[v] ,因为缩点后剩下的边只有满流边,任一割都满足这个条件,而这些边有可能会出现某一个最小割中,所以是可行边。

最大流

以S-T流表示方案,根据题意把方案列上,要能在图中找到所有题目要求信息的体现。

最小割

codevs1907方格取数3:二分图最大点权独立集=总边权-最小割。
相邻两格连INF边:防割。每次割的边表示不选,还可以保证冲突的点只选一个,保证是独立集。相当于去掉了最小点权覆盖集。

【bzoj1565】[NOI2009]植物大战僵尸:最大权闭合图=总正点权-最小割
源点向所有正点权为x的点建流量为x的边,负点权x的点向汇点建流量为-x的边,原图边容量INF。
证明略,详见胡伯涛论文。其中最大权闭合图在S集。

【poj2125】Destroying The Graph:二分图最小点权覆盖集=最小割
S连左部,容量为点权。右部连T,容量为点权。原边为INF。然后最小割。

最大点权独立集模型:对于一条边,要么只选u,要么只选v,要么都不选。

最小点权覆盖集模型:对于一条边,要么只选u,要么只选v,要么都选。

若有类似【最少的代价把集合分成两份】,可以考虑最小割。

费用流

在最大流表示所有方案的基础上,费用流是从所有方案中择优选取。

bzoj1834网络扩容:
题目要求最少扩建费用。在残量网络上建边,只要原图存在的边(不管现在流量是不是0)都建流量为INF,费用为 wi 的边,表示对这个边的扩建程度。还需要增加一个源点限制流量。

【COGS743】最长k可重区间集问题:最大权不相交路径

带上下界

主要是怎么建…

你可能感兴趣的:(===图论===,===专题===,学习笔记,二分图,网络流)