二项式反演与错排问题

Posted bhllx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二项式反演与错排问题相关的知识,希望对你有一定的参考价值。

二项式反演与错排问题

常见简单组合恒等式:

  1. \(C_n^m=C_n^n-m\)

  2. \(C_n^m=C_n^m-1+C_n-1^m-1\)

  3. \(\sum_i=0^nC_n^i=2^i\)

  4. \(\sum_i=0^n(-1)^i*C_n^i=[n=0]\)

3.4.证明:由二项式定理易证。

\(x=1,y=1\),可得3式

\(x=1,y=-1\), 可得4式

二项式反演:

假设存在两个函数f,g。满足:
\[ f_n=\sum_i=0^nC_n^i*g_i \]
那么考虑如何反求得\(g_n\)关于\(f_n\)的等式。
\[ g_n=\sum_i=0^n[n-i=0]*C_n^i*g_i\g_n=\sum_i=0^n\sum_j=0^n-i(-1)^j*C_n-i^j*C_n^i*g_i\g_n=\sum_i=0^n\sum_j=0^n-i(-1)^j*C_n^j*C_n-j^i*g_i\g_n=\sum_j=0^n(-1)^j*C_n^j\sum_i=0^n-jC_n-j^i*g_i\g_n=\sum_i=0^n(-1)^i*C_n^i*f_n-i=\sum_i=0^n(-1)^n-i*C_n^i*f_i \]
所以得到二项式反演的结论:
\[ f_n=\sum_i=0^nC_n^i*g_i\g_n=\sum_i=0^n(-1)^n-i*C_n^i*f_i\\]
形式上真的很优美!

下面就用二项式反演来解决一个经典的问题!

错排问题

问题描述:

\(n\)个人编号为\(1, ..., n\),问这\(n\)个人站成一排全都站错位置的方案数。

上述站错的定义是:第\(i\)个人没有站在位置\(i\)上。

方法1: 递推

\(f_n\)表示答案,假设现在考虑到了前\(i\)个人的方案,即\(f_i\)

考虑第\(i\)个人站位情况:

显然第\(i\)个人的不能站在位置\(i\),假设他站到了位置\(k\),显然\(k\in[1,i-1]\),那么继续考虑\(k\)的站位。

? ①、\(k\)站到了位置i,那么剩下的\(i-2\)个人仍然构成一个原问题,方案数为\(f_i-2\)

? ②、\(k\)没站到位置i,也即\(k\)不能站在位置\(i\),那么剩下的\(i-1\)个人仍然构成一个原问题,方案数为\(f_i-1\)

所以可以得到\(f\)的递推关系:
\[ f_1=0\ , \ f_2=1\\f_i=(i-1)*(f_i-1+f_i-2)\ \ i≥3 \]

方法2:二项式反演

\(f_n\)表示\(n\)个人随便站位的方案数,\(g_n\)表示\(n\)个人的都站错的方案数。

容易得到:
\[ f_n=n!\f_n=\sum_i=0^nC_n^i*g_i \]
直接二项式反演可以得到:
\[ g_n=\sum_i=0^n(-1)^n-i*C_n^i*f_i\\]
同样可以直接线性的递推出答案。

以上是关于二项式反演与错排问题的主要内容,如果未能解决你的问题,请参考以下文章

反演魔术---二项式反演

二项式反演及其应用

二项式反演及其证明

Re:从零开始的二项式反演

二项式反演公式证明

二项式反演(非详细)