【学习笔记】二项式定理 二项式反演 证明与应用

前置知识:

1.排列组合
2.多步容斥
(记一下可能会用到的公式平时也很常用的

\[\begin{aligned} &\dbinom{n}{m}\times \dbinom{m}{s}=\dbinom{n}{s}\times \dbinom{n-s}{n-m}\\ &\dbinom{m}{m-1}+\dbinom{m}{m}=\dbinom{m+1}{m} \end{aligned} \]

前置知识

二项式定理:

公式

\((a+b)^n=\sum^{n}_{i=0}\limits \dbinom{n}{i}a^ib^{n-i}\)

证明:

\(n=1\) 时代入显然成立

\(n=m\) 时该式子成立在证明 \(n=m+1\) 时该式子成立就可以推得该式子成立。

\(n=m\) 代入得到

\[(a+b)^m=\sum^{m}_{i=0}\limits \dbinom{m}{i} a^ib^{m-i} \]

那么就有了(以下所有注释都是对上一行的解释)

\[\begin{aligned} (a+b)^{m+1}=(a+b)(a+b)^{m}&=a(a+b)^m+b(a+b)^m\\ &=a\sum^{m}_{i=0}\dbinom{m}{i} a^ib^{m-i}+b\sum^{m}_{j=0}\dbinom{m}{j} a^ib^{m-j}\\ &=\sum^{m}_{i=0}\dbinom{m}{i} a^{i+1}b^{m-i}+\sum^{m}_{j=0}\dbinom{m}{j}a^{j}b^{m-j+1}\\ &=a^{m+1}+\sum^{m-1}_{i=0}\dbinom{m}{i}a^{i+1}b^{m-i}+b^{m+1}+\sum^{m}_{j=1}\dbinom{m}{j}a^{j}b^{m-j+1} \end{aligned} \]

//\(i=m,\dbinom{m}{m} a^{m+1}b^0 = a^{m+1},j=0,\dbinom{m}{0}a^0 b^{m+1}=b^{m+1}\)

\[=a^{m+1}+\sum^{m}_{j=1}\dbinom{m}{j-1}a^{j}b^{m-j+1}+b^{m+1}+\sum^{m}_{j=1}\dbinom{m}{j}a^{j}b^{m-j+1} \]

//用 \(j\)表示 \(i\)

\[\begin{aligned} &=a^{m+1}+\sum^{m}_{j=1}\left[\ \binom{m}{j-1}+\binom{m}{j}\ \right]a^jb^{m-j+1}+b^{m+1}\\ &=a^{m+1}+\sum^{m}_{j=1}\left[\ \binom{m+1}{j}\ \right]a^jb^{m-j+1}+b^{m+1} \end{aligned} \]

//证明 \(\dbinom{m}{j-1}+\dbinom{m}{j}=\dbinom{m+1}{j}\)

//\(\dbinom{m}{j-1}+\dbinom{m}{j}=\dfrac{m!}{(j-1)!(m-j+1)!}+\dfrac{m!}{j!(m-j)!}\)

//\(=\dfrac{(m-j+1)m!+m!j}{(j)!(m-j+1)!}\)

//\(=\dfrac{(m+1)m!}{(j)!(m-j+1)!}\)

//\(=\dbinom{m+1}{j}\)

\[\begin{aligned} &=\sum^{m+1}_{j=0}\left[\ \binom{m+1}{j}\ \right]a^jb^{m-j+1} \end{aligned} \]

//

\(j=0,\dbinom{m+1}{0}a^0b^{m+1}=b^{m+1},j=m+1,\dbinom{m+1}{m+1}a^{m+1}b^0=a^{m+1}\)

显然证明得到二项式定理成立

然后我们再来推二项式反演:


二项式反演

基本形式(形式0):

公式

\[\begin{aligned} &f_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i}g_i\\ &\Updownarrow\\ &g_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i}f_i\\ \end{aligned} \]

证明形式0:

前置知识:多步容斥

多步容斥一般形式:

\[\begin{aligned} &\large|A_1 \cup A_2 \cup A_3 \cup …\cup A_n|\\ &=\sum^{n}_{i=1} |A_i|-\sum^{n}_{i=1,j=1} |A_i \cap A_j|+…+(-1)^{n-1}\times |A_1 \cap A_2 \cap … \cap A_n| \end{aligned} \]

我们设\(A_i^c\)表示\(A_i\)的补集,将多步容斥一般形式变形,可得:

\[\begin{aligned} &\large|A_i^c \cap A_2^c \cap … \cap A_n^c|=\\ &|S|-\sum^n_{i=1} |A_i| +\sum^n_{i=1,j=1} |A_i \cap A_j|-…+(-1)^n=times |A_1 \cap A_2 \cap … \cap A_n| \end{aligned} \]

由于补集的补集就是原集,所以又有了

\[\begin{aligned} &\large|A_i \cap A_2 \cap … \cap A_n|=\\ &|S|-\sum^n_{i=1} |A_i^c| +\sum^n_{i=1,j=1} |A_i^c \cap A_j^c|-…+(-1)^n\times |A_1^c \cap A_2^c \cap … \cap A_n^c| \end{aligned} \]

那么我们\(f_n\)表示n个补集的交际大小,\(g_n\)表示n个原集的大小,两个公式分别可以写成:

\[\begin{aligned} &f_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i} g_i\\ &g_n=\sum^{n}_{i=0}(-1)^i\dbinom{n}{i}f_i \end{aligned} \]

两公式是相互推导的关系,所以这就是二项式反演的形式0


常见形式(形式1):

公式

\[\begin{aligned} &f_n=\sum^{n}_{i=0}\dbinom{n}{i}g_i\\ &\Updownarrow\\ &g_n=\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_i \end{aligned} \]

当然它还有一个更常用的变形:

\[\begin{aligned} &f_k=\sum\limits_{i=k}^n\dbinom{i}{k}g_i\\ &\Updownarrow\\ &g_k=\sum\limits_{i=k}^n(-1)^{i-k}\dbinom{i}{k}f_i\\ \end{aligned} \]

证明形式1:

已知

\[f_n=\sum^{n}_{i=0}\dbinom{n}{i}g_i \]

我们使\(g_i\)\(g_j\),\(n\)就是\(i\)

那么

\[\begin{aligned} &\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_i=\\ &\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}\sum^{i}_{j=0}\dbinom{i}{j}g_j\\ &=\sum^{n}_{i=0}\sum^{i}_{j=0}(-1)^{n-i}\dbinom{n}{i}\dbinom{i}{j}g_j\\ &=\sum^{n}_{i=0}\sum^{i}_{j=0}(-1)^{n-i}\dbinom{n}{j}\dbinom{n-j}{i-j}g_j\\ \end{aligned} \]

//\(\dbinom{n}{m}\times \dbinom{m}{s}=\dbinom{n}{s}\times \dbinom{n-s}{n-m}\)

//再将 \(n\)\(i\) 该替换的替换

\[\begin{aligned} =\sum^{n}_{j=0}\sum^{n}_{i=j}(-1)^{n-i}\dbinom{n}{j}\dbinom{n-j}{i-j}g_j \end{aligned} \]

//我们把j放在前面

//对于两个大 sigma \(\sum^{n}_{i=0}\sum^{i}_{j=0}\) 来说,他代表 \(i \in [0,n],i>=j\) 的情况。

//其实和 \(j \in [0,n],i>=j\) 的所有情况。

//呃呃其实到这里的时候我也是有点懵,建议在这里琢磨琢磨。

//其实 \(i\)\(j\)的范围都没变对吧。

对于 \(j=n\)\(\large\sum^{n}_{i=j}\limits (-1)^{n-i}\binom{n}{j}\binom{n-j}{i-j}g_j\) 的值是 \(g_n\)

对于 \(j!=n\) 时,考虑 \(g_j\) 的系数。

我们先固定一个 \(j\),那么 \(\dbinom{n}{j}\) 作为一个常数,删去

\[\sum^{n}_{i=j}(-1)^{n-i}\dbinom{n-j}{i-j} \]

然后 \(n-j\) 也是常数,设 \(m=n-j\)

并将 \(i\) 向左平移,使得范围 \(\in [j,n]\)变为$ \in[0,m]$ ,或者理解成 \(i\) 代表 \(i-j\)

那么系数就是:

\[\sum^{m}_{i=0}(-1)^{m-i}\dbinom{m}{i} \]

刚刚我们推导的二项式定理:

\[(a+b)^n=\sum^{n}_{i=0}\dbinom{n}{i}a^ib^{n-i} \]

我们让 \(a=1,b=-1,n=m\)

就有了:

\[0=\sum^{m}_{i=0}\dbinom{m}{i}(-1)^{m-i} \]

\(g_j\) 的系数就等于 \(0\) 啊!

那么仅 \(j=n\)\(g_j\) 系数和为 \(1\)

那么对于:

\[\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_i=\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}\sum^{i}_{j=0}\dbinom{i}{j}g_j \]

右边系数为 \(1\)
有了:

\[\sum^{n}_{i=0}(-1)^{n-i}\dbinom{n}{i}f_j=g_n \]

证毕。

(所以我们还是容斥+感性理解吧?)

应用:恰好与最多,恰好与至少之间的转换。


例题:

BZOJ 4403 集合计数
对于这道题,我们通过二项式反演公式:

\[\begin{aligned} &f_k=\sum\limits_{i=k}^n\dbinom{i}{k}g_i\\ &\Updownarrow\\ &g_k=\sum\limits_{i=k}^n(-1)^{i-k}\dbinom{i}{k}f_i\\ \end{aligned} \]

显然有

\[\begin{aligned} f_i=\sum_{j=1}^{n}(-1)^{j-i}\dbinom{j}{i}f_j \end{aligned} \]

嗯。

如果有错误请直接指出。

累了,听说这个还能用容斥写。

所有 \(\LaTeX\) 公式纯手打。

炸了体谅一下orz

upd:2023/9/22 21:43 修复部分 \(\LaTeX\) 问题。

posted @ 2023-06-15 09:40  Sonnety  阅读(202)  评论(8编辑  收藏  举报