写这篇博客有两个原因,一是由于网上对这些结论的解释和证明太模糊,有些甚至是错的(有的人没分清楚最小路径覆盖和最小边覆盖,用错误的证明来推出结论)。二也是为了纪念人生头一次区域赛没拿奖吧(少做的一道题就是一道结论模板题)。
闲话少说,现在开始吧。
最小顶点覆盖(könig定理)
结论:二分图的最小顶点覆盖=最大匹配数
首先我们来证明选最大匹配数个点能否把所有的边都覆盖。
设V为我们选点的集合。首先这是一个二分图,那么在最大匹配后,我们先把右边的所有已经匹配了的点选进V中,那么匹配的边肯定已经覆盖了。我们再看那些在左边没有被匹配的点,由于是最大匹配,那些左边没有被匹配的点肯定不会连向一个右边没被匹配的点,换句话说,左边所有的没被匹配的点全部都会连向一个被匹配的点。所以这些边都会连的点都在V中,也就把所有的边都覆盖了。
现在来证明是最小。
根据上述的方法推理,易得到如果我们少加一些点进去,就不可能把所有边覆盖。(读者可以自行思考一下。)
最小路径覆盖
结论:DAG最小路径覆盖=图顶点-建图后的最大匹配
- 最小不相交路径覆盖
建图方式:把一个的点V拆点成Vx和Vy,如果A连向B,那么就建一条Ax连向By的边。
图中有多少条路径,可以以一种方法得到,就是计算出度为0的点的个数。如果知道这个就很容易得出这个结论了。
- 最小相交路径覆盖
做法首先跑floyd,求出原图的传递闭包,然后用上述方法做即可。证明略。
最小边覆盖
结论:最小边覆盖=图顶点-最大匹配
首先一开始,假如一条边都不选的话,要覆盖所有的点就必须每个点都选一次,也就是n次,然后每选一条边就会减少1个,所以结论显而易见。
最大独立集
结论:最大独立集=图顶点-最大匹配=最小边覆盖
二分图的独立数等于顶点数减去最大匹配数,很显然的把最大匹配两端的点都从顶点集中去掉这个时候剩余的点是独立集,这是|V|-2*|M|,同时必然可以从每条匹配边的两端取一个点加入独立集并且保持其独立集性质。