小结一下和二分图匹配有关的知识

今天考了DAG的最大独立集,然后我精神AC挂机去了~~~

下午一觉醒来才发现我并不会求DAG最大独立集的方案数。。。。于是乎滚去翻书,发现我概念记得一塌糊涂QWQ

(这个是一个伏笔,因为DAG根本没有什么最大独立集)

1、König定理:最小覆盖=最大匹配

所谓最小覆盖是指用最少的点,覆盖所有的边

方案:再一次让左侧非匹配点去寻找增广路(一定会失败),沿途标记经过的点,输出左侧的非标记点,以及右侧标记点

方案正确性:左侧非匹配点一定被标记(它是起始点),右侧非匹配点一定没被标记(否则就会找到增广路了),我们不会输出他们。那么当右侧的匹配点被访问,它一定会连带匹配自己的那个左侧点一起被访问,反之两个都不会被访问到,所以要么输出左侧非标记点的时候把这条匹配边的左侧点输出,要么输出右侧标记点的时候把这条匹配边的右侧点输出

定理的正确性:显然匹配边一定被覆盖了,讨论一下非匹配边的两端是否总有1个被覆盖。在再一次找增广路的过程中,假如我们找到了这条边的左侧点并标记,那么它的右测点也将被尝试并标记,从而这两点延伸到两边四个点均被标记了,那么在最后这两条边都会选择右侧点,这条边的右侧点会覆盖它。反之如果没有标记,相似的会被左侧覆盖。

2、最大团=补图的最大独立集(易证)

最大团是指在给定的图中选1个最大的点集,这个点集中的点两两间都有边(也就是一个完全图)

最大独立集是指在给定的图中选1个最大的点集,这个点集中的点两两间都没有边(恰恰相反)

然而,对于一般图的最大独立集和最大团没有多项式时间内的方法。对于最大团,据了解模拟退火的解法效率较高,不过在此不再赘述。瞎正经什么啊不会就直说嘛

还是把注意力集中在二分图上。

二分图的最大独立集=n-最小覆盖

注意:二分图同一个集合的点相互之间均视为有边

证明:我们要选出最多的点,让它们相互没有边。也就是删掉最少的点,同时把它们连接的边删掉,要把所有的边删掉——这就是最小覆盖

方案:最小覆盖选出来的点就是要删掉的,保留下来的就是答案。

3、Dilworth定理:在DAG图中 最小链覆盖(也叫最小可相交路径覆盖)=最长反链

链是一个集合,集合里的两点u,v要么u可达v,要么v可达u(也就是图上的一条路径上所有点的集合)

反链也是一个集合,集合里的两点u,v,u不可达v,v也不可达u(经过多个点的路径也算到达

最小链覆盖是指用最少的链覆盖整个图,一个点可以经过多次,而最小不可相交覆盖一个点只能经过1次

最长反链就是反链里面最大的。

先处理求最小可/不可相交路径覆盖

做法:对于最小不可相交覆盖,把点拆成入点和出点,出点连向入点(假如图上两点有边的话),答案是n-最大匹配,对于最小可相交路径覆盖,在二分图匹配之间需要传递闭包。

正确性:一次成功的匹配,相当于这两个点可以在一条链被覆盖。点的入边和出边可以理解成有一条虚边(联想网络流的拆点)跑完以后,我们可以看出一个虚实结合的路径(建议画图),这个就是覆盖原图的一条链。而最小可相交路径覆盖需要传递闭包,是因为1个点在二分图上只能匹配和被匹配各1次。

方案:按照图中把路线弄出来就可以了。

接下来我们处理最长反链

证明:首先明显有最长反链<=最小链覆盖,因为每条链最多也只能选1个点。那我们只需要构造出一种方案使得最长反链=最小链覆盖就可以了。直接看方案

方案:找到每一条链的终点,也就是出点(默认为左侧)中的非匹配点,作为一种备选方案。我们处理出每个点下一步能到达那些点,假如备选方案里的点在这个点集里,那么让这个点往前跳直到找到一个点使得它不在这个点集,并且更新。全部处理完了以后,作为一种新的备选方案,再次验证是否有两点可以互相到达。

正确性:反证法:我们往前跳假如找不到不在下一步会到达的点组成的点集里,说明这个点所属的路径上的所有点都可以被某其他路径上的终点到达。对于这条路径的起点也是如此,那么到达这个起点的另一个终点就可以把两条链连接起来,使得路径覆盖数少1,和路径覆盖数是最小的矛盾。

猜你喜欢

转载自www.cnblogs.com/AKCqhzdy/p/9923616.html