double counting 小记
前言: double counting 即算两次,可以对比两次结果得出一些有用的结论。
例1: 求证:
证明:
考虑计数问题:从 \(\{1,2,3,\dots n\}\) 中选取一个元素 \(a\) 和一个子集 \(A\),要求 \(a \in A\),求方案数。
先取 \(A\) 再取 \(a\),我们根据 \(A\) 的大小分类,显然结果就是等式左边的式子。
先取 \(a\) 再取 \(A\),有 \(n\) 种和 \(2^{n-1}\) 种选法,也就是等号右边。
所以两边是相等的。
例2: \(f_i\) 表示第 \(i\) 个斐波那契数,\(f_0=f_1=1\),求证:
证法1:
数学归纳法,显然 \(n=2\) 时成立。
假设对于所有 \(< k\) 的 \(n\) 都成立,则
得证。
证法2:
我们考虑有一行 \(n\) 个格子,要用 \(1 \times 1\) 和 \(1 \times 2\) 的卡片不重不漏覆盖,并且不能全都是 \(1 \times 1\),求方案数。
一方面,直接递推可以得到答案是 \(f_{n}-1\)。
另一方面,枚举第一个 \(1 \times 2\) 的位置可以得到答案是 \(\sum_{i=0}^{n-2}f_i\)。
于是证明了这个式子。
例3:(Cayley 公式)求证:对于 \(n\) 个点的无向完全图,生成树个数为 \(n^{n-2}\)。(生成树指无根树)
证明:
不妨设生成树个数为 \(S_n\)。
首先,我们考虑计数:有多少个 \(n-1\) 条边的有向边序列,满足形成一颗有根树(外向)。
第一种方法,我们先选一个无根树,然后再选一个根,这时所有边的方向显然确定,注意我们选的是序列,所以再乘上排列数即可。所有共有 \(S_n \times n \times (n-1)!\) 种,也就是 \(S_n \times n!\)。
第二种方法,我们考虑一条一条边加入。
假设当前已经形成了有 \(k\) 个树的森林,我们看下一条边有几种选择。
我们可以随意选择一个点作为出点,由于是外向树,所以入点必然是某个不是自己这棵树的根,所以共有 \(n(k-1)\) 种选法。
我们总共要选 \(n-1\) 次,所以就有 \(n(n-1) \times n(n-2) \times \dots \times 2n \times n\),也就是 \(n^{n-2} \times n!\) 种。
对比两个式子可以得到 \(S_n = n^{n-2}\),证明了 Cayley 公式。
例4: (范德蒙德恒等式)计算:
解答:
首先,我们有 \(\binom{n}{k}=\binom{n}{n - k}\)。
将每个平方项一边改变,就会得到:
考虑组合意义,从 \(1 \sim 2n\) 中选 \(n\) 个数。
一方面,我们分别枚举前 \(n\) 个数和后 \(n\) 个数的选法,显然就是上式。
另一方面,直接组合数就是 \(\binom{2n}{n}\)。
所以上式等于 \(\binom{2n}{n}\)。
这个等式就是范德蒙德恒等式,它有一个拓展形式:
证明和上面类似。
例5: 定义一个无向图 \(G = (V,E)\) 为无三角图(triangle-free graph),当前仅当不存在三互不相同的点 \(u,v,w\),使得 \((u,v),(v,w),(u,w)\) 都属于 \(E\)。(即没有长度为 \(3\) 的环)
求:\(n\) 个点的无三角图最多几条边?
解答:
答案是:\(\frac{n^2}{4}\)(假设 \(n\) 是偶数,奇数相差不大)
构造:显然二分图都是无三角图,所以构造二分图,两边各有一半的点即可。
我们要严格证明这个结论。
不妨设 \(d_u\) 表示 \(u\) 在 \(G\) 中的度数。
观察: \(\forall(x,y) \in E,d_x+d_y \le n\)。
证明很简单,如果存在一个点同时连了 \(x,y\) 就会形成三角。
根据这个观察,我们可以知道:
我们看左边的式子,如果以点为单位计数,则显然会等于 \(\sum_{v \in V}d_{v}^{2}\)。
由度数基本的性质,我们知道 \(\sum_{v\in V}d_v^2=2|E|\),所以会根据均值不等式,在所有值相等时平方和最小,也就是说:
结合两个不等式得到:
化简一下就是 \(|E| \le \frac{n^2}{4}\),得证。
例6: 求证:对于无向平面图 \(G=(V,E)\),存在 \(v \in V\),使得 \(d_v \le 5\)。
补充:其实对 \(4\) 也可行,这里只证明 \(5\)。
证明:
我们考虑反证法,假设所有度数均大于等于 \(6\)。
根据平面图欧拉公式,\(V+F=E+2\),\(F\) 是面的个数。
我们先考虑 \(V\) 和 \(E\) 的关系。
通过 doule counting 边的个数会得到:\(3V \le E\)。
在考虑 \(F\) 和 \(E\),我们发现,一个面至少三条边,一条边恰好两个面,可以得到:\(3F \le 2E\)。
两个不等式相加就可以得到 \(V+F \le E\),但这显然和欧拉公式矛盾,所以命题得证。
例7: 项链计数。
例8: Grid。