二分图

用直觉来感知世界。

最小点覆盖

选择最少的点,将所有的边都覆盖到,这样就叫做最小点覆盖,正常的图的最小点覆盖我不会!但是二分图的最小点覆盖还是有结论的。

结论:

最小点覆盖 = 最大匹配数。

证明:

第一步:证明最小点覆盖 > = >= >= 最大匹配数。
证明:我们每条匹配边两边都有两条匹配点,而且每条匹配边两边的匹配点都不相同,是相互独立的,即点如果是匹配点,那么只属于一条匹配边。那么我们至少在每条匹配边两端上取一点才能将所有的匹配边覆盖掉,更何况还有非匹配边。

第二步:选择一种方法得出在这种方法下一定存在 最小点覆盖 == 最大匹配数
方法:首先找出得出来最大匹配数及其方案,然后在左部找出所有的未匹配点为起电,寻找增广路径,在寻找的过程中,标记所走过的点,当然这个过程是一定找不出一条完整的增广路的,我们的答案就是取左部未被标记的点,右部被标记的点,这些点就是答案。
1.左半部未被标记的点一定是匹配点,因为我们是从所有的未匹配点出发,所以未匹配点的点已经全部被标记了。
2.右半部被标记的点一定是匹配点,如果右边存在未匹配的点被标记,那么就说明存在一条完整的增广路径,这与假设相违背。
3. 匹配边的两边的点要么全都没有被标记,要么全都没有被标记。因为我们如果右半部的某个匹配点被选中,那么与之相匹配的点一定也会被选中(因为这是在寻找增广路),反之右半部的匹配点没有被选中,那么左半部与之相匹配的点也一定没有被选中,因为只有一个右半部的点(匹配点)点连接左半边的匹配点。

得出上边的结论之后,我们下边开始研究这种方法是否可行
首先看匹配点 – 匹配点是否全部被覆盖掉,由于我们选择的是左半部没有被标记的点,右半部选择的是没有被标记的点,又因为我们能够推出来上边的第三条,所以我们发现所有的匹配边一定是被标记的。
然后看未匹配点 – 匹配点,由于我们是从所有的未匹配点出发,这样的话我们边的两端的点一定都是被标记的,所以这样的边一定是被覆盖的。
接着是匹配点 – 非匹配点,这样的边的两端一定不会被标记,因为这样会形成一条增广路(但是这样的边不一定是不存在的,只是没有被标记)。
最后是 非匹配点 — 非匹配点,这样的边一定是不存在的,否则会形成不是最优解。

证明结束!

最大独立集

在一个图中选出最多的点,使得选出的点之间没有边,这个在正常的图中我不会,但是在二分图中有结论!

结论是总点数 - 最大匹配数量。

首先我们明确求得的点集中不存在任何边,我们的思路是在原图中删掉最小的点使得图中不存在任何边,删掉最小的点使得图中不存在任何的边,这个不就是最小点覆盖吗,所以这个答案就是总点数 -(最小点覆盖 = 最大匹配数量)。

顺便说一下,最大团和最大独立集是互补的关系,原图的最大团等于补图的最大独立集。

最小路径点覆盖

在一个有向无环图中,用最少的路径来覆盖所有的点,且每个点只能覆盖一次。

由于每个点只能覆盖一次,所以我们将每个点进行拆点,拆成出点和入点,那么原图中的边就全部转化成从左边连向右边的一条边,我们发现这是一个二分图,当左半边存在未匹配点的时候,说明这是某条路径的终点,我们要求得到最少的路径覆盖所有的点,那么就要求终点最少,也就是匹配点最多,所以答案就是图的总点数 - 匹配的点数 = 未匹配的点数。

如果想用二分图来解决最小路径点覆盖问题,必须是有向无环图,为什么?因为在下边的证明中用到了一个假设:假设每条路径都有一个终点。

最小路径重复点覆盖

结论很简单,首先将原图做一遍传递闭包,然后继续做楼上的做法就可以啦,证明也是很简单,主要是证明两种方法可以相互转化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值