如果说,生命的脚步终|

Sonnety

园龄:2年粉丝:80关注:96

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

前置知识:

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

(nm)×(ms)=(ns)×(nsnm)(mm1)+(mm)=(m+1m)

前置知识

二项式定理:

公式

(a+b)n=i=0n(ni)aibni

证明:

n=1 时代入显然成立

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

n=m 代入得到

(a+b)m=i=0m(mi)aibmi

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

(a+b)m+1=(a+b)(a+b)m=a(a+b)m+b(a+b)m=ai=0m(mi)aibmi+bj=0m(mj)aibmj=i=0m(mi)ai+1bmi+j=0m(mj)ajbmj+1=am+1+i=0m1(mi)ai+1bmi+bm+1+j=1m(mj)ajbmj+1

//i=m,(mm)am+1b0=am+1,j=0,(m0)a0bm+1=bm+1

=am+1+j=1m(mj1)ajbmj+1+bm+1+j=1m(mj)ajbmj+1

//用 j表示 i

=am+1+j=1m[ (mj1)+(mj) ]ajbmj+1+bm+1=am+1+j=1m[ (m+1j) ]ajbmj+1+bm+1

//证明 (mj1)+(mj)=(m+1j)

//(mj1)+(mj)=m!(j1)!(mj+1)!+m!j!(mj)!

//=(mj+1)m!+m!j(j)!(mj+1)!

//=(m+1)m!(j)!(mj+1)!

//=(m+1j)

=j=0m+1[ (m+1j) ]ajbmj+1

//

j=0,(m+10)a0bm+1=bm+1,j=m+1,(m+1m+1)am+1b0=am+1

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

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


二项式反演

基本形式(形式0):

公式

fn=i=0n(1)i(ni)gign=i=0n(1)i(ni)fi

证明形式0:

前置知识:多步容斥

多步容斥一般形式:

|A1A2A3An|=i=1n|Ai|i=1,j=1n|AiAj|++(1)n1×|A1A2An|

我们设Aic表示Ai的补集,将多步容斥一般形式变形,可得:

|AicA2cAnc|=|S|i=1n|Ai|+i=1,j=1n|AiAj|+(1)n=times|A1A2An|

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

|AiA2An|=|S|i=1n|Aic|+i=1,j=1n|AicAjc|+(1)n×|A1cA2cAnc|

那么我们fn表示n个补集的交际大小,gn表示n个原集的大小,两个公式分别可以写成:

fn=i=0n(1)i(ni)gign=i=0n(1)i(ni)fi

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


常见形式(形式1):

公式

fn=i=0n(ni)gign=i=0n(1)ni(ni)fi

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

fk=i=kn(ik)gigk=i=kn(1)ik(ik)fi

证明形式1:

已知

fn=i=0n(ni)gi

我们使gigj,n就是i

那么

i=0n(1)ni(ni)fi=i=0n(1)ni(ni)j=0i(ij)gj=i=0nj=0i(1)ni(ni)(ij)gj=i=0nj=0i(1)ni(nj)(njij)gj

//(nm)×(ms)=(ns)×(nsnm)

//再将 ni 该替换的替换

=j=0ni=jn(1)ni(nj)(njij)gj

//我们把j放在前面

//对于两个大 sigma i=0nj=0i 来说,他代表 i[0,n],i>=j 的情况。

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

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

//其实 ij的范围都没变对吧。

对于 j=ni=jn(1)ni(nj)(njij)gj 的值是 gn

对于 j!=n 时,考虑 gj 的系数。

我们先固定一个 j,那么 (nj) 作为一个常数,删去

i=jn(1)ni(njij)

然后 nj 也是常数,设 m=nj

并将 i 向左平移,使得范围 [j,n]变为[0,m] ,或者理解成 i 代表 ij

那么系数就是:

i=0m(1)mi(mi)

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

(a+b)n=i=0n(ni)aibni

我们让 a=1,b=1,n=m

就有了:

0=i=0m(mi)(1)mi

gj 的系数就等于 0 啊!

那么仅 j=ngj 系数和为 1

那么对于:

i=0n(1)ni(ni)fi=i=0n(1)ni(ni)j=0i(ij)gj

右边系数为 1
有了:

i=0n(1)ni(ni)fj=gn

证毕。

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

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


例题:

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

fk=i=kn(ik)gigk=i=kn(1)ik(ik)fi

显然有

fi=j=1n(1)ji(ji)fj

嗯。

如果有错误请直接指出。

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

所有 LATEX 公式纯手打。

炸了体谅一下orz

upd:2023/9/22 21:43 修复部分 LATEX 问题。

posted @   Sonnety  阅读(313)  评论(8编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起