组合数学(实时更新)

1. 盒子放小球问题

nn个小球,mm个盒子。

1.1 n个小球有区别,m个盒子有区别

(1)允许空盒:每个球放到任意盒子里,总方案数mnm^n
(2)不允许空盒:需满足nm1n \geq m\geq 1m>nm>n时无解。其方案数及时看成m个盒子相同时的方案数,再乘以m!m!。答案即是S(n,m)m!S(n,m)*m!。S代表第二类斯特林数。

1.2 n个小球有区别,m个盒子无区别

(1)允许空盒:假设放了k个盒,mk1m\geq k\geq 1。那么答案就是k=1mS(n,k)\sum_{k=1}^{m}S(n,k)
(2)不允许有空盒:S(n,m)S(n,m)

1.3 n个小球无区别,m个盒子有区别

(1)允许空盒:nm1n\geq m\geq 1。“隔板法”。假设不允许有空盒,每一个盒里都先放一个小球,这样小球共有n+mn+m个,然后插板,插板的方案数为Cn+m1n1C^{n-1}_{n+m-1}
(2)不允许空盒:nm1n\geq m\geq 1。“隔板法”。方案数Cn1m1C^{m-1}_{n-1}

1.4 n个小球无区别,m个盒子无区别

(1)允许空盒:划分数问题。dp[i][j]dp[i][j]表示i个球,j个盒子的方案数。转移方程为
dp[i][j]=dp[ij][j]+dp[i][j1](ij)dp[i][j]=dp[i-j][j]+dp[i][j-1] (i\geq j)
dp[i][j]=dp[i][j1](i<j)dp[i][j]=dp[i][j-1] (i< j)
如果n<mn<m,答案为dp[n][n]dp[n][n],否则为dp[n][m]dp[n][m]
(2)不允许空盒:nm1n\geq m\geq 1。转成上情况的nmn-m个小球,mm个盒子。

2. 计数原理与计数公式

2.1 可重复的排列与组合

2.1.1 可重复的排列

从n个不同元素中取m个元素(同一元素可以重复取出),按照一定的顺序排成一列。排列的个数为nmn^m

2.1.2 可重复的组合

从n个不同元素中取m个元素(同一元素可以重复取出),并成一组。组合的个数为Cn+m1mC^{m}_{n+m-1}
【证明】
1,2,...,n1,2,...,n表示n个不同元素。从中取m个可以表示成:
{i1,i2,...,im}(1i1i2...imn)\{i_1,i_2,...,i_m\} (1\leq i_1\leq i_2 \leq ... \leq i_m \leq n)
jk=ik+(k1)j_k = i_k + (k-1),即:
j1=i1j2=i2+1j3=i3+2...jm=im+(m1)\begin{aligned}j_1 &= i_1\\ j_2 &= i_2+ 1\\ j_3 &= i_3 + 2\\ ...\\ j_m &=i_m+(m-1) \end{aligned}
可以得到组合
{j1,j2,...,jm}(1j1<j2<...<jmnm+1)\{j_1,j_2,...,j_m\} (1\leq j_1< j_2 < ... <j_m \leq n-m+1)
这样就相当于在n+m1n+m-1个元素中取mm个不相同的元素,作为一组。
因此即是Cn+m1mC_{n+m-1}^{m}

2.1.3 不全相异元素的全排列

n个元素中,分别有n1,n2,...,nkn_1,n_2,...,n_k个元素相同,且n1+n2+...+nk=nn_1+n_2+...+n_k=n,则称这n个元素的全排列为不全相异元素的全排列,个数为
n!n1!n2!...nk!\frac{n!}{n_1!n_2!...n_k!}

2.1.4 多组组合

n个相异的元素分为k(kn)k(k\leq n)个按照一定顺序排列的组,其中第ii组有nin_i个元素(i=1,2,...,k)(n1+n2+...+nk=n)(i=1,2,...,k)(n_1+n_2+...+n_k=n)。不同的分组方法为
n!n1!n2!...nk!\frac{n!}{n_1!n_2!...n_k!}
【例】
n(n6)n(n\geq 6)个选手中选3对选手参加双打,问共有多少种选法。
答案为(注意不考虑组的顺序
Cn66!2!2!2!3!\frac{C_{n}^{6}*\frac{6!}{2!*2!*2!}}{3!}

2.2 相异元素的圆排列和项链数

2.2.1 圆排列

n个元素不分首尾排成一圈,成为n个相异元素的圆排列。排列的种数为(n1)!(n-1)!

2.2.2 项链数

将n粒不相同的珠子,穿成一副项链,得到的不同的项链数。
由于项链顺时针和逆时针都是相同的,所以个数即是圆排列的一半。
{1,n=1n=212(n1)!,n3\left\{ \begin{aligned} &1,n = 1或n=2\\ &\frac{1}{2}*(n-1)!,n\geq3 \end{aligned} \right.

2.3 错排问题

错排递推式。
D(n)D(n)代表nn个数的错排公式,则
D(n)=(n1)[D(n1)+D(n2)]D(n) = (n-1)*[D(n-1)+D(n-2)]
错排公式
D(n)=n!(111!+12!13!+...+(1)nn!)D(n) = n!(1-\frac{1}{1!}+\frac{1}{2!}-\frac{1}{3!}+...+\frac{(-1)^n}{n!})

2.4 组合数常用公式

Cn2=n(n1)2Cn3=n(n1)(n2)6Cnm=Cn1m1+Cn1mmCnm=nCn1m1Cn0+Cn1+...+Cnn=2n1Cn1+2Cn2+...+nCnn=n2n112Cn1+22Cn2+...+n2Cnn=n(n+1)2n2Cn11Cn22+Cn33+...+(1)n1Cnnn=1+12+13+...+1n(Cn0)2+(Cn1)2+(Cn2)2+...+(Cnn)2=C2nn\begin{aligned} &C_{n}^{2} = \frac{n*(n-1)}{2}\\ &\\ &C_{n}^{3}=\frac{n*(n-1)(n-2)}{6}\\ &\\ &C_{n}^{m}=C_{n-1}^{m-1}+C_{n-1}^{m}\\ &\\ &m*C_{n}^{m} = n*C_{n-1}^{m-1}\\ &\\ &C_n^0+C_n^1+...+C_n^n =2^n\\ &\\ &1C_n^1+2C_n^2+...+nC_n^n=n2^{n-1}\\ &\\ &1^2C_n^1+2^2C_n^2+...+n^2C_n^n=n(n+1)2^{n-2}\\ &\\ &\frac{C_n^1}{1}-\frac{C_n^2}{2}+\frac{C_n^3}{3}+...+(-1)^{n-1}\frac{C_n^n}{n}=1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{n}\\ &\\ &(C_n^0)^2+(C_n^1)^2+(C_n^2)^2+...+(C_n^n)^2=C_{2n}^n\\ \end{aligned}
范德蒙恒等式:
i=0kCniCmki=Cn+mk\sum_{i=0}^{k}C_n^iC_m^{k-i}=C_{n+m}^k

经验式(link https://www.cnblogs.com/qrsikno/p/10170523.html):
i=0nCniri=(r+1)n广i=0niCni=n2n1i=0nCik=Cn+1k+1i=0kCn+ii=Cn+k+1k\begin{aligned} &\sum_{i=0}^{n}C_n^i*r^i=(r+1)^n(广义二项式定理)\\ &\\ &\sum_{i=0}^{n}i*C_n^i=n*2^{n-1}\\&\\ &\sum_{i=0}^{n}C_i^k=C_{n+1}^{k+1}\\&\\ &\sum_{i=0}^{k}C_{n+i}^i=C_{n+k+1}^{k}\\ \end{aligned}

3. 抽屉原理与平均值原理

3.1 抽屉原理

3.1.1 第一抽屉原理

如果将m个物件放入n个抽屉内,那么必有一个抽屉内至少有[m1n]+1[\frac{m-1}{n}]+1个物件。
【推广】
如果将m1+m2+...+mn+1m_1+m_2+...+m_n+1个物件放入n个抽屉内,那么或者第一个抽屉内至少有m1+1m_1+1个物件,或者第二个抽屉内至少有m2+1m_2+1个物件……或者第n个抽屉内至少有mn+1m_n+1个物件。

3.1.2 第二抽屉原理

如果将m个物件放入n个抽屉内,那么必有一个抽屉内至多有[mn][\frac{m}{n}]个物件。
【推广】
如果将m1+m2+...+mn1m_1+m_2+...+m_n-1个物件放入n个抽屉内,那么或者第一个抽屉内至多有m11m_1-1个物件,或者第二个抽屉内至多有m21m_2-1个物件……或者第n个抽屉内至多有mn1m_n-1个物件。

3.2 平均值原理

(1)设a1,a2,...,ana_1,a_2,...,a_n是实数,A=1n(a1+a2+...+an)A =\frac{1}{n}(a_1+a_2+...+a_n),则a1,a2,...,ana_1,a_2,...,a_n中必有一个数不小于A,也有一个数不大于A。
(2)设a1,a2,...,ana_1,a_2,...,a_n是实数,G=1na1a2...annG =\frac{1}{n}\sqrt[n]{a_1a_2...a_n},则a1,a2,...,ana_1,a_2,...,a_n中必有一个数不小于G,也有一个数不大于G。

4. 生成函数

生成函数的定义:
实数序列 a0,a1,...,ak,...a_0,a_1,...,a_k,...的生成函数是无穷级数
G(x)=a0+a2x+...+akxk+...=k=0akxkG(x)=a_0+a_2x+...+a_kx^k+...=\sum_{k=0}^{\infty}a_kx^k
ak{a_k}的普通生成函数。
广义二项式系数:
(uk)={u(u1)(u2)...(uk+1)/k!,k>01,k=0\dbinom{u}{k}=\left \{ \begin{aligned}&u(u-1)(u-2)...(u-k+1)/k!,&k>0\\ &1,&k=0 \end{aligned}\right.
【例】
(1/23)=(1/2)(1/21)(1/22)3!=(1/2)(1/2)(3/2)6=1/16\begin{aligned}\dbinom{1/2}{3}&=\frac{(1/2)(1/2-1)(1/2-2)}{3!}\\ &=\frac{(1/2)(-1/2)(-3/2)}{6}\\ &=1/16 \end{aligned}
xx是实数,x<1|x|<1uu是实数,那么
(1+x)u=k=0(uk)xk(1+x)^u=\sum_{k=0}^{\infty}\dbinom{u}{k}x^k

4.1 常用生成函数

1xn+11x=k=0nxk11ax=k=0akxk1(1x)2=k=0(k+1)xk1(1x)n=k=0Cn+k1kxk1(1+x)n=k=0Cn+k1k(1)kxk\begin{aligned} &\frac{1-x^{n+1}}{1-x}=\sum_{k=0}^{n}x^k\\ &\\ &\frac{1}{1-ax}=\sum_{k=0}^{\infty}a^kx^k\\ &\\ &\frac{1}{(1-x)^2}=\sum_{k=0}^{\infty}(k+1)x^k\\ &\\ &\frac{1}{(1-x)^n}=\sum_{k=0}^{\infty}C_{n+k-1}^{k}x^k\\ &\\ &\frac{1}{(1+x)^n}=\sum_{k=0}^{\infty}C_{n+k-1}^{k}(-1)^kx^k\\ \end{aligned}

4.2 计数问题

5. 特殊计数序列

5.1 Catalan数列

前几项:1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,......1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, ......c[0]=1,c[1]=1,c[2]=2...c[0]=1,c[1]=1,c[2]=2...

1f[n]=i=0n1f[i]f[ni1]2f[n]=4n2n+1f[n1]1f[n]=C2nnn+12f[n]=C2nnC2nn1\begin{aligned} &递推式1:f[n]=\sum_{i=0}^{n-1}f[i]*f[n-i-1]\\ &\\ &递推式2:f[n]=\frac{4n-2}{n+1}f[n-1]\\ &\\ &组合式1:f[n]=\frac{C_{2n}^{n}}{n+1}\\ &\\ &组合式2:f[n] = C_{2n}^{n}-C_{2n}^{n-1} \end{aligned}

应用:

  1. 二叉树计数1:已知二叉树有nn个节点,能够构成CnC_{n}种不同的二叉树。(二叉搜索树)
  2. 二叉树计数2:已知二叉树的叶子nn个,能够构成Cn1C_{n-1}种不同的二叉树。(二叉搜索树)
  3. 括号匹配数:一个合法的表达式由()包围,()可以嵌套和连接,给出nn对括号,可以组成的合法表达式的个数为CnC_{n}
  4. 划分问题:将一个凸n+2n+2多边形区域分成三角形区域的方法数为CnC_{n}
  5. 出栈问题1:一个栈的进栈序列为1,2,3,..n1,2,3,..n,不同的出栈序列有CnC_{n}种。
  6. 出栈问题2:有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少种方法使得只要有10元的人买票,售票处就有5元的钞票找零。5元的相当于入栈,10元的相当于出栈,转化成上问题。
  7. 路径问题:在nnn*n的方格地图中,从一个角到另外一个角,不跨越对角线的路径数有CnC_{n}种。
  8. 握手问题:2n2n个人均匀坐在一个圆桌边上,某个时刻所有人同时与另一个人握手,要求手之间不能交叉,共有CnC_{n}种握手方法。

5.2 Fibonacci数列

通项公式:Fn=15[(1+52)n(152)n]F_n=\frac{1}{\sqrt{5}}[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]
递推式:
Fn=Fn1+Fn2F_n=F_{n-1}+F_{n-2}
性质:
F1+F1+F2+F3+...+Fn=Fn+21F1+2F2+3F3+...+nFn=nFn+2Fn+3+2F1+F3+F5+...+F2n1=F2nF2+F4+F6+...+F2n=F2n+11F12+F22+F32+...+Fn2=FnFn+1Fn1Fn+1Fn2=(1)n\begin{aligned}&F_1+F_1+F_2+F_3+...+F_n=F_{n+2}-1\\ &\\ &F_1+2F_2+3F_3+...+nF_n=nF_{n+2}-F_{n+3}+2\\ &\\ &F_1+F_3+F_5+...+F_{2n-1}=F_{2n}\\ &\\ &F_2+F_4+F_6+...+F_{2n}=F_{2n+1}-1\\ &\\ &F_1^2+F_2^2+F_3^2+...+F_n^2=F_nF_{n+1}\\ &\\ &F_{n-1}F_{n+1}-F_n^2=(-1)^n \end{aligned}

定理:
FnFm+Fm1Fn1=Fm+n1FmFn+1+Fm1Fn=Fm+nm=nF2n1=Fn2+Fn12F2n=(Fn1+Fn+1)Fn=(2Fn1+Fn)FnFnFmnmn3Fibonacci\begin{aligned} &F_nF_m+F_{m-1}F_{n-1}=F_{m+n-1}\\ &\\ &F_mF_{n+1}+F_{m-1}F_n=F_{m+n}\\ &\\ &m=n时,\\ &F_{2n-1}=F_n^2+F_{n-1}^2\\ &\\ &F_{2n}=(F_{n-1}+F_{n+1})F_n=(2F_{n-1}+F_n)F_n\\ &\\ &F_n整除F_m当且仅当n整除m,其中n\geq3\\ &\\ &任意连续三个Fibonacci数两两互素。 \end{aligned}

5.3 Lucas数列

定义:
Ln={2,n=11,n=2Ln1+Ln2,n3L_n= \left\{\begin{aligned}&2,&n=1\\ &1,&n=2\\ &L_{n-1}+L_{n-2},&n\geq3 \end{aligned} \right.
通项公式:
Ln=(1+52)n+(152)nL_n=(\frac{1+\sqrt{5}}{2})^n+(\frac{1-\sqrt{5}}{2})^n
与Fibonacci数的关系:
F2n=LnFnLn=Fn1+Fn+1Fn=Ln1+Ln+15Ln2=5Fn2+4(1)n\begin{aligned} &F_{2n}=L_nF_n\\ &\\ &L_n=F_{n-1}+F_{n+1}\\ &\\ &F_n=\frac{L_{n-1}+L_{n+1}}{5}\\ &\\ &L_n^2=5F_n^2+4(-1)^n \end{aligned}

5.4 Stirling数

5.4.1 第一类Stirling数

S1(n,m)S1(n,m)表示的是将nn个不同元素构成mm个圆排列的数目。
递推式:
S1(n,m)=(n1)S1(n1,m)+S1(n1,m1)(n>1,m>1)S1(n,m)=(n-1)*S1(n-1,m)+S1(n-1,m-1)(n>1,m>1)

边界条件:
S1(0,0)=1,S1(n,0)=0S1(n,n)=1\begin{aligned} &S1(0,0)=1,S1(n,0) = 0\\ &S1(n,n) = 1 \end{aligned}
性质:
k=0nS1(n,k)=n!\sum_{k=0}^{n}S1(n,k)=n!
【例】nn个仓库, 2n2n把钥匙,nn 位官员。如果把nn位官员分成mm个不同的部,部中的官员数量与管理的仓库数量一致。有多少种方案使得所有同部的官员可以打开所有本部管理的仓库,而无法打开其他管理的仓库。(nn把钥匙放到仓库,nn把钥匙分给官员)
方案数即为S1(n,m)n!S1(n,m)n!
前面的是放到仓库里的方案数,后面说官员的分配方案。

5.4.2 第二类Stirling数

S2(n,m)S2(n,m)表示的是把nn个不同元素划分到mm个集合的方案数。
递推式:
S2(n,m)=mS2(n1,m)+S2(n1,m1)(1mn1)S2(n,m)=m*S2(n-1,m)+S2(n-1,m-1)(1\leq m\leq n-1)
边界条件:
S2(n,0)=0,S2(n,1)=1S2(n,n)=1\begin{aligned} &S2(n,0)=0,S2(n,1)=1\\ &S2(n,n)=1 \end{aligned}

5.5 Bernoulli数

6. Polya计数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章