二项式反演
如果有(g_{i} = sum_{j = 1}^{i} inom{i}{j}f_{j} Longleftrightarrow f_{i} = sum_{j = 1}^{i}(-1)^{i - j} inom{i}{j}g_{j})
证明:
先将1式带入2式,得到
$$f_{i} = sum_{j = 1}^{i}(-1)^{i - j} inom{i}{j}sum_{k = 1}^{j} inom{j}{k}f_{k}$$
证明等式成立相当于证明对于等式右边而言,所有(f_{k})的系数为([i == k])
则(f_{k})的系数为(sum_{j = k}^{i} (-1)^{i - j} inom{i}{j} inom{j}{k})
化简:$$sum_{j = k}^{i}(-1)^{i - j} frac{i!}{j!(i - j)!} frac{j!}{k!(j - k)!}$$
消去(j!),提出(frac{i!}{k!}),
$$(sum_{j = k}^{i}(-1)^{i - j} frac{1}{(i - j)!(j - k)!}) frac{i!}{k!}$$
乘((i - k)!),除((i - k)!),
$$(sum_{j = k}^{i}(-1)^{i - j} frac{(i - k)!}{(i - j)!(j - k)!}) frac{i!}{k!(i - k)!}$$
$$(sum_{j = k}^{i}(-1)^{i - j} inom{i - k}{j - k}) inom{i}{k}$$
---> 证:$$sum_{j = k}^{i}(-1)^{i - j} inom{i - k}{j - k} = [i == k]$$
如果成立,则:当(i == k)时,(inom{i}{k} = 1),所以系数为1;当(i != k)时,前一个式子为0,所以系数为0.
证明:
当(i - k)为奇数时,相当于有(i - k + 1)个数相加(分别对应取0个,取1个...取i - k个),一共偶数个,其中第一项与最后一项异号,第二项与倒数第2项异号。。。根据组合数的对称性,和为0。
当(i - k)为偶数时,相当于证:
(inom{i}{0} - inom{i}{1} + inom{i}{2} - ... -inom{i}{i - 1} + inom{i}{i} = 0)
二项式定理证明:
$$0^{n} = (1 - 1)^{n} = sum_{k = 0}^{n} inom{n}{k}x^{n - k}y^{k} = 0$$
其中(x = 1, y = -1).
则(x^{n - k})恒为1,(y^{k} = +1, -1, +1, -1 ....)
因此原式成立
组合数证明(杨辉三角)
原式 = (inom{i - 1}{0} - (inom{i - 1}{0} + inom{i - 1}{1})......)
因此最后每一项都被抵消了,所以原式 = 0;
二项式反演还有另一种形式:
$$g_{i} = sum_{j = 1}^{i}(-1)^{j} inom{i}{j} f_{j} Longleftrightarrow f_{i} = sum_{j = 1}^{i}(-1)^{j} inom{i}{j}g_{j}$$
这种性质可以用容斥来理解(非证明)。
因为可以把(f_{j})看做是满足某个性质的一个由i个集合组成的小集合,并且每个这样的小集合都是相等的。因此(inom{i}{j})就等于这样的集合个数,而((-1)^{j})是容斥系数,因为进行了容斥,所以(g_{i})可以看做是不满足某个性质的一个由i个集合组成的小集合,因此用(g_{i})求(f)数组时,也是一样的容斥方式。
应用:
错排问题:设(f_{i})表示恰好有(i)个数不在原位的方案数,(g_{i} = i!)
那么有
$$g_{n} = sum_{i = 0}^{n} inom{n}{i} f_{i}$$
根据二项式反演得:
$$f_{n} = sum_{i = 0}^{n}(-1)^{n - i} inom{n}{i}g_{i}$$
$$f_{n} = sum_{i = 0}^{n}(-1)^{n - i} inom{n}{i}i!$$
$$f_{n} = sum_{i = 0}^{n}(-1)^{n - i} frac{n!}{(n - i)!}$$
改成枚举(n - i)
$$= n!sum_{i = 0}^{n} frac{(-1)^{i}}{i!}$$
注意:这里只能保证反演后的式子满足最初的式子,但因为只用到了原来的那个式子,并不一定可以满足所有可以满足第一个式子的(f_{i})的含义。如用(f_{i})表示恰好(i)个数在原位的方案数,那么式子还是一样的,但现在反演后的式子与这个(f_{i})的定义相违背。
球的染色问题:n个球,k种颜色,求满足相邻颜色不同,每种颜色至少出现一次的方案数。
如果忽略每种颜色至少出现一次的限制的话,方案数就为(k(k - 1)^{n - 1}),相当于依次安排颜色,对于任意一个非第一个的球,都需要保证与上一个球的颜色不同,因此方案数为(k - 1),第一个球因为没有限制,所以方案数为(k)
设(f_{i})表示恰好使用i种颜色的方案数。(g_{k})表示n个球,用了k种颜色,不强制每种颜色必须出现的方案数。那么问题就是要求(f_{n})
因为不强制每种颜色必须出现的方案数就是出现i(0, 1, 2, 3, 4...)种颜色的方案数之和。所以:
$$g_{k} = k(k - 1)^{n - 1} = sum_{i = 0}^{k} inom{k}{i} f_{i}$$
反演后:
$$f_{k} = sum_{i = 0}^{k} inom{k}{i} g_{i}$$
$$f_{k} = sum_{i = 0}^{k} inom{k}{i} i(i - 1)^{n - 1}$$