组合数学学习小记

有关组合数学的小记,不喜勿喷

1.第一类斯特林数:表示将$ n$ 个不同元素构成(m)个圆排列的数目。

递推式:(s(n,m)=s(n-1,m-1)+s(n-1,m)*(n-1))

递推式证明如下:


我们考虑第(n)个元素放的位置。

(1)前(n-1)个元素构成了(m-1)个圆排列,第(n)个元素独自构成一个圆排列:(s(n-1,m-1))

(2)前(n-1)个元素构成了(m)个圆排列,第(n)个元素插入到任意元素的左边:((n-1)*S(n-1,m))

综上:(s(n,m)=s(n-1,m-1)+s(n-1,m)*(n-1))


对于第一类斯特林数我们有以下特点:

1.(s(n,n-2)=2*C(n,3)+3*C(n,4))

2.(s(n,n-1)=C(n,2))

3.(sum_{i=0}^{n}s(n,i)=n!)

2.第二类斯特林数:表示将(n)个不同的元素拆分成(m)个非空集合的方案数。

递推式:(S(n,m)=S(n-1,m-1)+m*S(n-1,m))


同理,我们还是考虑第(n)个元素的放置情况。

(1)前(n-1)个元素构成了(m-1)个集合,那么第(n)个元素单独构成一个集合:(S(n-1,m-1))

(2)前(n-1)个元素已经构成了(m)个集合,将第(n)个元素插入到任意一个集合:(m*S(n-1,m))

综上:(S(n,m)=S(n-1,m-1)+S(n-1,m)*m)


同时附上一个第二类斯特林数的容斥公式:(S(n,m)=frac{1}{m!}*sum_{i=0}^{m}{(-1)^i*C(m,i)*(m-i)^n})

第二类斯特林数的实际意义

(1)n个不同的球,放入m个有区别的盒子,不允许盒子为空,方案数:(m!*S(n,m))

(2)n个不同的球,放入m个无区别的盒子,允许盒子为空,方案数:(sum_{i=0}^{m}S(n,i))

PS:一个有趣的事实:(sum_{i=0}^{n}S(n,i)*s(i,m)=sum_{i=0}^{n}s(n,i)*S(i,m))

3.卡特兰数

卡特兰数的实际意义和证明方法过多,笔者不再阐述,下面直接给出通项公式和递推公式。

(Cat_n=C(2*n,n)-C(2*n,n-1)=frac{C(2*n,n)}{n+1}=Cat_{n-1}*frac{4n-2}{n-1})

常见意义:合法出栈方案数,二叉树方案数......

4.圆排列:表示从(n)个元素中选(m)个在圆周上构成不同的圆的方案数

通项公式:(frac{n!}{(n-m)!*m})

5.错位排列:(n)的相异的元素排成一排,第(i)个元素不在第(i)位上的方案数

通项公式:(D_n=(n-1)*(D_{n-1}+D_{n-2}))

证明如下:


我们假设第(n)个数排在第(k)位上,其中(kin[1,n-1])

(1).当第(k)个数排在第(n)位时,除了第(n)个数和第(k)个数以外还有(n-2)个数,其方案数为(D_{n-2})

(2).当第(k)个数不排在第(n)位时,将第(n)位重新想成新的“第(k_1)位”,这时的包括第(k)个数在内的剩下(n-1)个数的每一种错排,方案数为(D_{n-1})

由于,(kin[1,n-1]),所以(D_n=(n-1)*(D_{n-1}+D_{n-2}))


附上一个容斥的公式:(D_n=n!*sum_{i=2}^{n}{(-1)^i*frac{1}{i!}})

6.隔板法

(1).(n)个同样的小球分成(m)个不同的组别,每组不为空,方案数为:(C(n-1,m-1))

(2).(n)个同样的小球分成(m)个不同的组别,每组可以为空,方案数为:(C(n+m-1,m-1))

先写到这了,以后有东西再补。。。。。

原文地址:https://www.cnblogs.com/dsjkafdsaf/p/11644073.html