二项式反演
引入
根据容斥原理
|A1∪A2∪⋯∪An|=∑1≤i≤n|Ai|−∑1≤i<j≤n|Ai∩Aj|+⋯+(−1)n−1×|A1∩A2∩⋯∩An|的另一种形式
|¯A1∩¯A2∩⋯∩¯An|=|S|−∑1≤i≤n|Ai|+∑1≤i<j≤n|Ai∩Aj|−⋯+(−1)n×|A1∩A2∩⋯∩An|由于集合的补集的补集就是它自己,那么
|A1∩A2∩⋯∩An|=|S|−∑1≤i≤n|¯Ai|+∑1≤i<j≤n|¯Ai∩¯Aj|−⋯+(−1)n×|¯A1∩¯A2∩⋯∩¯An|考虑一种特殊的情况:多个集合的交集大小只与集合的数目有关。
即 f(n) 为 n 个补集的交集大小,g(n) 表示 n 个集合(原)的大小,那么可以得到
f(n)=n∑i=0(−1)i(ni)g(i)g(n)=n∑i=0(−1)i(ni)f(i)由于这两个公式是等价的,所以我们得到了二项式反演的初步形式
f(n)=n∑i=0(−1)i(ni)g(i)⇔g(n)=n∑i=0(−1)i(ni)f(i)二项式反演
形式一
二项式反演的一种形式如下:
f(n)=n∑i=0(ni)g(i)⇔g(n)=n∑i=0(−1)n−i(ni)f(i)证明 令 h(n)=(−1)ng(n) ,代入 (0) 可知
f(n)=n∑i=0(ni)h(i)⇔h(n)(−1)n=n∑i=0(−1)i(ni)f(i)整理后即可得到 (6) 。◻
形式二(常见形式)
这个公式与形式一类似,不过更为常用
f(n)=m∑i=n(in)g(i)⇔g(n)=m∑i=n(−1)i−n(in)f(i)换一种不容易混淆的写法就是
fi=n∑j=i(ji)gj⇔gi=n∑j=i(−1)j−i(ji)fj证明 将左侧代入右侧
f(n)=m∑i=n(in)m∑j=i(−1)j−i(ji)f(j)=m∑i=nm∑j=i(−1)j−i(in)(ji)f(j)=m∑j=nf(j)j∑i=n(−1)j−i(in)(ji)=m∑j=n(jn)f(j)j∑i=n(j−nj−i)(−1)j−i=m∑j=n(jn)f(j)j−n∑t=0(j−nt)(−1)t1j−n−t=m∑j=n(jn)f(j)(1−1)j−n=m∑j=n(jn)f(j)[j=n]=(nn)f(n)=f(n)则有左右恒等。◻
组合意义
记 fi 为“钦定选 i 个”(然而常常会重复计算一些情况),并记 gi 为 “恰好选 i 个”
则对于任意 j≥i ,gj 在 fi 中被计算了 (ji) 次,故
fi=n∑j=i(ji)gj⇔gi=n∑j=i(−1)j−i(ji)fj其中 n 为数目的上界。
例题
还有 洛谷P10596 & BZOJ2839 集合计数 题解 ,不过这题的二项式反演解法是后来补的(
参考文献: