捉迷藏

这里主要是对蓝书上做法的补充

首先看到这道题目,我们假设已经知道要选哪些点了,那我们在原图\(G\)上每选一个点,与这个点有关的路径上的所有点都要被打上标记,打上标记的点就不能再选了,所以我们选的点就是每次都没有标记的点

像这种“与一点有关的所有路径的所有点”,可以通过传递闭包后转化为“与一点走一条边有关的所有点”来简化,这就是为啥后面的分析是基于\(G^{'}\)

然后蓝书上\(path\)的具体构造方案其实就是上一页证明里面的构造方案(二分图中的匹配边都选上)

我们是怎么想到最开始选终点的?我们考虑传递闭包之后的图,一般长成这个样子

我们选择点,似乎是往终点选择更好,所以我们最开始先选上所有终点

然后我们让所有终点向前(注意是向前,不是向后)走一条边(注意这个边都是指\(G^{'}\)的边,而不是\(G\)的),就有了蓝书的第三步

然后蓝书说的\(e\)所在的路径\(pe\)指的是\(path\)中的一条路径\(pe\);由于\(path\)是不相交的,所以对于\(E∩next(E)\)的每个节点的\(pe\)都是没有重复的点的

然后蓝书说的反证就是如果找不到\(e^{'}\),那么\(E\)中的某一点就可以到达\(pe\)的起点,然后就可以把这两条路径给接起来,让\(path\)减少

注意\(next(E)\)在以上过程中是一直不变的,即就是最开始选的所有终点走一条边所求出来的\(next(E)\)

然后最后我们证明一下最终的点集是符合题意的

首先,在最终的点集中,对于没有更换的点(即最开始就选出来的终点),他们走一步显然是不能互相到达的,而且也不能到达某一个\(e^{'}\)(任意一个\(e^{'}\)都不在\(next(E)\)中,而现在由于最开始选出来的终点变少了,如果现在让这些终点走一条边形成一个集合\(next^{'}(E)\),那么这肯定是\(next(E)\)的子集,所以\(e^{'}\)也不会是\(next^{'}(E)\)中的某一个元素)

然后对于某一个\(e^{'}\),如果他能到达某一个没有更换的点,那么他肯定能到达\(next(E)\)中的某一个点,这就矛盾了。如果某一个\(e^{'}\)可以到达另一个\(e^{'}\),那么前者一定能到达后者在其\(pe\)上的终点,也就能到达\(next(E)\),也矛盾了

所以最终的点集是符合题意的

posted @ 2024-02-13 15:10  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报