课程主页:

https://cs170.org/

https://inst.eecs.berkeley.edu/~cs170/fa18/

课程视频:

https://www.bilibili.com/video/BV1wK411g7ck

参考资料:

吴彧文(atyuwen)Algorithms.Exercises.solution

这次回顾Section 9。

1. Maximal Matching

假设maximal匹配的边集合为

maximum匹配的边集合为

任取$e=(u,v)\in E^1$,或者$e\in E^2$,或者$e\not \in E^2$,对于第二种情形,$E^2$中必然存在一条边包含$u$或$v$,这是因为如果该条件不满足,则$E^2$中可以添加$e$,这就与maximum匹配的定义矛盾。

因此$E^1$中的每一条边或者和$E^2$中一条边对应,或者和$E^2$中两条边对应,假设这两种情形的数量分别为$x,y$,那么计算顶点的数量

所以

2. Bipartite Vertex Cover

图片来自于吴彧文(atyuwen)Algorithms.Exercises.solution 7.23,该解答参考了大佬的做法。

假设二部图的两步分别为$U,V$,现在增加顶点$S,T$,其中$S$和$U$中每条边都相连,$T$和$V$中每条边都相连。

假设顶点覆盖为$C$,定义

由于$C=L\cup R$,并且$C$为顶点覆盖,所以$M,N$之间必然不存在边,考虑割$(L\cup N\cup T,S\cup M\cup R)$,根据上图可知,割为

  • $L\to R$的边

从而顶点覆盖正好对应了一个分割;反之,构造满足上述条件的图,即$M,N$之间不存在边,然后求出割$(S\cup M\cup R, L\cup N\cup T)$,那么$L\cup R$必然为顶点覆盖,从而分割也对应了一个顶点覆盖。

因此两者一一对应,求最小顶点覆盖的问题可以转化为求最小割的问题。

3. Reducing Vertex Cover to Set Cover

对于图$G=(V,E)$,构造$U=V$,以及子集$S_i$,其中子集的构造如下:

  • 对于$v\in V$,定义集合$S_v$:
    • $S_v =\{v\}\cup \{u | (v,u)\in E\}$

那么最小顶点覆盖对应于$U,S_i$的集合覆盖。