Couleur
Description
给定一个无向图 \(G\),保证该图可以划分成两个子图 \(A\) 和 \(B\),其中 \(A\) 是一个团,\(B\) 是一个独立集。求 \(G\) 最大团的数量和最大独立集的数量。
Solution
考虑先求出最大团的大小,之后才方便计数。对于图 \(G\),如果存在一个大小为 \(s\) 的团,那么必有度数第 \(s\) 大的点的度数大于等于 \(s-1\)。于是通过找到最大的符合的 \(s\),我们能确定出最大团的上界。下面证明最大团仅能取上界。假若最大团大小为 \(s_0\),满足 \(s_0<s\)。那么无论怎么选取这个最大团,都至少存在一个度数大于等于 \(s-1\) 的点不在这个最大团里,也即该点至多与该团的 \(s_0-1\) 个点有边,所以该点至少连了一个团以外的点。于是无论如何选取团 \(A\),都不能使剩下的点成为 \(B\),与题设矛盾。于是只能有 \(|A|=s\),\(|B|=n-s\)。
下面考虑计数最大团数目。首先我们已经确定了一个最大团 \(A\)。所以如果有新的最大团,一定包含且仅包含一个 \(B\) 中的点(由于 \(B\) 中的点不相连,只会连向 \(A\)),且该点的度数一定为 \(s-1\) (否则不是最大团)。所以最大团数目就是 \(B\) 中度数为 \(s-1\) 的点数加一。
下面考虑计数最大独立集数目。同样是先讨论最大独立集大小,首先,显然至少是 \(|B|\)。然后再考虑能不能加 \(A\) 里面的点。如果能加,也只能加一个,因为 \(A\) 中的点都相连。\(A\) 中的点度数至少是 \(s-1\)。如果存在度数为 \(s-1\) 的点,那么说明没有 \(B\) 中的点和它相连,最大独立集大小就是 \(|B|+1\),方案数为 \(A\) 中度数为 \(s-1\) 的点的个数。否则,说明每个 \(A\) 中的点都至少连了一个 \(B\) 中的点,那么最大独立集大小能且仅能为 \(|B|\)。接下来,如果存在度数为 \(s\) 的点,那么说明有且只有一个 \(B\) 中的点和它相连,用它替换掉与它相连的点,同样得到一个大小为 \(B\) 的独立集,此时方案数为 \(A\) 中度数为 \(s\) 的点的个数加一。否则,每个 \(A\) 中的点都至少与两个 \(B\) 中的点相连,此时替换会使独立集大小减小,于是最大独立集只能是 \(B\),方案数为 \(1\)。