全排列
例子: n n n 个数取 m m m 个数有序排放
通项公式: A n m ( P n m ) = n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ ⋅ ⋅ ⋅ ∗ ( n − m + 1 ) = n ! ( n − m ) ! A_n^m(P_n^m)=n*(n-1)*(n-2)*···*(n-m+1)= \frac{n!}{(n-m)!} Anm(Pnm)=n∗(n−1)∗(n−2)∗⋅⋅⋅∗(n−m+1)=(n−m)!n!
组合数
例子: n n n 个数取 m m m 个数,杨辉三角
递推公式: C i 0 = 1 , C i j = C i − 1 j + C i − 1 j − 1 C_i^0=1,\space C_i^j=C_{i-1}^j+C_{i-1}^{j-1} Ci0=1, Cij=Ci−1j+Ci−1j−1
通项公式: C n m = n ! m ! ( n − m ) ! C_n^m=\frac{n!}{m!(n-m)!} Cnm=m!(n−m)!n!
组合数是全排列去掉顺序,所以也有 C n m = A n m m ! C_n^m=\frac{A_n^m}{m!} Cnm=m!Anm
性质: C n m = C n n − m , C n 0 + C n 1 + C n 2 + ⋅ ⋅ ⋅ + C n n = 2 n C_n^m=C_n^{n-m},\space C_n^0+C_n^1+C_n^2+···+C_n^n=2^n Cnm=Cnn−m, Cn0+Cn1+Cn2+⋅⋅⋅+Cnn=2n
杨辉三角
最简单的杨辉三角与组合数的递推公式相同
组合数的性质在杨辉三角中体现为对称以及第 i i i 行所有数的和为 2 i − 1 2^{i-1} 2i−1
不同的是杨辉三角可以带有系数 ( a , b ) (a,b) (a,b),即将杨辉三角第二行赋值为 a a a 和 b b b
而杨辉三角的第 i i i 行就是 ( a , b ) (a,b) (a,b) 的 i − 1 i-1 i−1 次方
我们可以通过这种方法求 ( a x + b ) i − 1 (ax+b)^{i-1} (ax+b)i−1 展开后每一项前的系数
p.s.我记得这玩意好像也可以用矩阵快速幂求,但是我不会,而且可能也没啥用,就不拓展了
递推公式为第 i i i 行第 j j j 个数 x i , j = a ∗ x i − 1 , j + b ∗ x i − 1 , j − 1 x_{i,j}=a*x_{i-1,j}+b*x_{i-1,j-1} xi,j=a∗xi−1,j+b∗xi−1,j−1
卡特兰数
例子:括号匹配,走楼梯,出栈顺序,二叉树计数
小数据:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796
递推公式: h 0 = h 1 = 1 , h n = ∑ i = 0 n − 1 h i ∗ h n − i − 1 = h n − 1 ∗ ( 4 n − 2 ) n + 1 h_0=h_1=1,\space h_n=\sum_{i=0}^{n-1}h_i*h_{n-i-1}=\frac{h_{n-1}*(4n-2)}{n+1} h0=h1=1, hn=∑i=0n−1hi∗hn−i−1=n+1hn−1∗(4n−2)
通项公式: h n = C 2 n n − C 2 n n − 1 = C 2 n n n + 1 h_n=C_{2n}^n-C_{2n}^{n-1}=\frac{C_{2n}^{n}}{n + 1} hn=C2nn−C2nn−1=n+1C2nn
对于通项公式的拓展(以走楼梯为例):
走楼梯问题可以抽象的认为是从 ( 0 , 0 ) (0,0) (0,0) 走到 ( n , n ) (n,n) (n,n) 并且不超过直线 y = x y=x y=x(只能向右或向上走)
如图为从
(
0
,
0
)
(0,0)
(0,0) 走到
(
8
,
8
)
(8,8)
(8,8) 并且不超过直线
y
=
x
y=x
y=x 的一种走法
而有时我们需要求的并不是从
(
0
,
0
)
(0,0)
(0,0) 走到
(
n
,
n
)
(n,n)
(n,n),假定我们需要求的是从
(
x
a
,
y
a
)
(x_a,y_a)
(xa,ya) 走到
(
x
b
,
y
b
)
(x_b,y_b)
(xb,yb)
再具体的,我们假定从
(
3
,
0
)
(3,0)
(3,0) 走到
(
6
,
5
)
(6,5)
(6,5)
接下来以这个例子来解释做法,考虑容斥原理
如果不考虑不超过 y = x y=x y=x,那么从 ( 3 , 0 ) (3,0) (3,0) 走到 ( 6 , 5 ) (6,5) (6,5) 总共有 C 6 − 3 + 5 − 0 6 − 3 C_{6-3+5-0}^{6-3} C6−3+5−06−3 种
不超过
y
=
x
y=x
y=x 等价于不经过
y
=
x
+
1
y=x+1
y=x+1,我们将点
(
6
,
5
)
(6,5)
(6,5) 对称过去得到点
(
4
,
7
)
(4,7)
(4,7)
从
(
3
,
0
)
(3,0)
(3,0) 走到
(
4
,
7
)
(4,7)
(4,7) 的方案数与从
(
3
,
0
)
(3,0)
(3,0) 走到
(
6
,
5
)
(6,5)
(6,5) 的不合法的方案是相等
解释如图,从
(
3
,
0
)
(3,0)
(3,0) 走到
(
4
,
7
)
(4,7)
(4,7) 的路线超出
y
=
x
+
1
y=x+1
y=x+1 的部分对称回去即可走到
(
6
,
5
)
(6,5)
(6,5)
从
(
3
,
0
)
(3,0)
(3,0) 走到
(
4
,
7
)
(4,7)
(4,7) 总共有
C
4
−
3
+
7
−
0
4
−
3
C_{4-3+7-0}^{4-3}
C4−3+7−04−3 种
因此从 ( 3 , 0 ) (3,0) (3,0) 走到 ( 6 , 5 ) (6,5) (6,5) 的合法的方案即为 C 6 − 3 + 5 − 0 6 − 3 − C 4 − 3 + 7 − 0 4 − 3 C_{6-3+5-0}^{6-3}-C_{4-3+7-0}^{4-3} C6−3+5−06−3−C4−3+7−04−3
( x b , y b ) (x_b,y_b) (xb,yb) 关于 y = x + 1 y=x+1 y=x+1 对称即为 ( y b − 1 , x b + 1 ) (y_b-1,x_b+1) (yb−1,xb+1),不合法方案数 C y b − 1 − x a + x b + 1 − y a y b − 1 − x a = C x b − x a + y b − y a y b − x a − 1 C_{y_b-1-x_a+x_b+1-y_a}^{y_b-1-x_a}=C_{x_b-x_a+y_b-y_a}^{y_b-x_a-1} Cyb−1−xa+xb+1−yayb−1−xa=Cxb−xa+yb−yayb−xa−1
由此可以推导得出,从 ( x a , y a ) (x_a,y_a) (xa,ya) 走到 ( x b , y b ) (x_b,y_b) (xb,yb) 的方案数为 C x b − x a + y b − y a x b − x a − C x b − x a + y b − y a y b − x a − 1 C_{x_b-x_a+y_b-y_a}^{x_b-x_a}-C_{x_b-x_a+y_b-y_a}^{y_b-x_a-1} Cxb−xa+yb−yaxb−xa−Cxb−xa+yb−yayb−xa−1
例题:登山
Q:如果出现 y b − 1 < x a y_b-1<x_a yb−1<xa 的情况怎么办?(可以证明不存在 x b + 1 < y a x_b+1<y_a xb+1<ya 的情况)
A:可以发现这种情况不存在不合法方案,所以方案数即为 C x b − x a + y b − y a x b − x a C_{x_b-x_a+y_b-y_a}^{x_b-x_a} Cxb−xa+yb−yaxb−xa
第一类斯特林数
定义:用 S 1 n , m S1_{n,m} S1n,m 表示将 n n n 个不同元素构成 m m m 个圆排列的数目
递推公式及证明:
边界情况,显然 S 1 0 , 0 = 1 , S 1 n , 0 = 0 S1_{0,0}=1,S1_{n,0}=0 S10,0=1,S1n,0=0
容易发现 S 1 n , m S1_{n,m} S1n,m 可以从两个状态转移过来
一个是 S 1 n − 1 , m − 1 S1_{n-1,m-1} S1n−1,m−1,这种情况下第 n n n 个元素单独构成第 m m m 个圆,产生 S 1 n − 1 , m − 1 S1_{n-1,m-1} S1n−1,m−1 的贡献
另一个是 S 1 n − 1 , m S1_{n-1,m} S1n−1,m,这种情况下第 n n n 个元素可以放在前 n − 1 n-1 n−1 个元素的任意一个的前面,产生 S 1 n − 1 , m ∗ ( n − 1 ) S1_{n-1,m}*(n-1) S1n−1,m∗(n−1) 的贡献
性质:
S 1 n , 1 = ( n − 1 ) ! , S 1 n , 2 = ( n − 1 ) ! ∗ ∑ i = 1 n − 1 1 i S1_{n,1}=(n-1)!,\space S1_{n,2}=(n-1)!*\sum_{i=1}^{n-1}\frac{1}{i} S1n,1=(n−1)!, S1n,2=(n−1)!∗∑i=1n−1i1
S 1 n , n = 1 , S 1 n , n − 1 = C n 2 , S 1 n , n − 2 = 2 ∗ C n 3 + 3 ∗ C n 4 S1_{n,n}=1,\space S1_{n,n-1}=C_n^2, \space S1_{n,n-2}=2*C_n^3+3*C_n^4 S1n,n=1, S1n,n−1=Cn2, S1n,n−2=2∗Cn3+3∗Cn4
∑ i = 0 n S 1 n , i = n ! \sum_{i=0}^nS1_{n,i}=n! ∑i=0nS1n,i=n!
第二类斯特林数
定义:用 S 2 n , m S2_{n,m} S2n,m 表示把 n n n 个不同的元素划分到 m m m 个集合的方案数(集合不能为空)
很容易联想到放球模型,描述为:将 n n n 个不同的小球放入 m m m 个相同的盒子中,盒子不能为空,有几种方案
证明过程与第一类类似,不再赘述
递推公式: S 2 0 , 0 = 1 , S 2 n , 0 = 0 , S 2 n , m = S 2 n − 1 , m − 1 + S 2 n − 1 , m ∗ m S2_{0,0}=1,S2_{n,0}=0,S2_{n,m}=S2_{n-1,m-1}+S2_{n-1,m}*m S20,0=1,S2n,0=0,S2n,m=S2n−1,m−1+S2n−1,m∗m
通项公式: S 2 n , m = 1 m ! ∑ i = 0 m ( − 1 ) i ∗ C m i ∗ ( m − i ) n S2_{n,m}=\frac{1}{m!}\sum_{i=0}^m(-1)^i*C_m^i*(m-i)^n S2n,m=m!1∑i=0m(−1)i∗Cmi∗(m−i)n
性质:
S 2 n , 1 = 1 , S 2 n , 2 = 2 n − 1 − 1 , S 2 n , 3 = 3 n − 1 + 1 2 − 2 n − 1 S2_{n,1}=1,\space S2_{n,2}=2^{n-1}-1,\space S2_{n,3}=\frac{3^{n-1}+1}{2}-2^{n-1} S2n,1=1, S2n,2=2n−1−1, S2n,3=23n−1+1−2n−1
S 2 n , n = 1 , S 2 n , n − 1 = C n 2 , S 2 n , n − 2 = C n 3 + 3 ∗ C n 4 , S 2 n , n − 3 = C n 4 + 10 ∗ C n 5 + 15 ∗ C n 6 S2_{n,n}=1,\space S2_{n,n-1}=C_n^2, \space S2_{n,n-2}=C_n^3+3*C_n^4,\space S2_{n,n-3}=C_n^4 +10*C_n^5+15*C_n^6 S2n,n=1, S2n,n−1=Cn2, S2n,n−2=Cn3+3∗Cn4, S2n,n−3=Cn4+10∗Cn5+15∗Cn6
∑ i = 0 n S 2 n , i = B n \sum_{i=0}^nS2_{n,i}=B_n ∑i=0nS2n,i=Bn( B n B_n Bn 为倍尔数,下面会简单介绍)
两类斯特林数之间的递推式和实际含义很类似,他们之间存在一个没啥用的 互为转置的转化关系:
∑ k = 0 n S 1 ( n , k ) S 2 ( k , m ) = ∑ k = 0 n S 2 ( n , k ) S 1 ( k , m ) \sum_{k=0}^nS1(n,k)S2(k,m)=\sum_{k=0}^nS2(n,k)S1(k,m) ∑k=0nS1(n,k)S2(k,m)=∑k=0nS2(n,k)S1(k,m)
倍尔数(贝尔数)
听说倍尔数与诗词有着奇妙的联系,应用倍尔数可以算出诗词的各种押韵方式
扯远了,回归正题
定义:用 B n B_n Bn 表示将 n n n 个不同元素划分成若干个不相交集合的方案数
小数据:1, 1, 2, 5, 15, 52, 203, 877, 4140
规律:如图为倍尔三角形
我们可以发现第一竖列和右边斜行都是倍尔数
它有两条规律:每排的最后一个数都是下一排的第一个数;其他任何一个数等于它左边相邻数加左边相邻数上面的一个数
放球模型
根据小球是否相同,盒子是否相同,盒子能否为空三个条件可分为八类模型
待完善···