组合数学入门

组合数学入门


卡特兰数

以下摘自OI-wiki

  1. 一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果他从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?
  2. 在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?
  3. 对角线不相交的情况下,将一个凸多边形区域分成三角形区域的方法数?
  4. n个结点可构造多少个不同的二叉树?
  5. ...

通 项 公 式 \textbf通项公式 H ( n ) = ( 2 n n ) − ( 2 n n + 1 ) = ( 2 n n ) ∗ 1 n + 1 = 1 n + 1 ∑ i = 0 n ( n i ) 2 H(n)=\left(\begin{matrix}2n \\ n\end{matrix}\right)-\left(\begin{matrix}2n \\ n+1\end{matrix}\right)=\left(\begin{matrix}2n \\ n\end{matrix}\right)*\frac{1}{n+1}=\frac{1}{n+1}\sum_{i=0}^n\left(\begin{matrix}n \\ i \end{matrix}\right)^2 H(n)=(2nn)(2nn+1)=(2nn)n+11=n+11i=0n(ni)2

递 推 式 递推式 H ( n ) = H ( n − 1 ) ∗ 4 ∗ n − 2 n + 1 H(n)=H(n-1)*\frac{4*n-2}{n+1} H(n)=H(n1)n+14n2

定 义 式 \textbf定义式 $H(n)=\sum_{i=1}^{n} H(i-1)*H(n-i)\quad n>2\H(n)=1\quad n=0,1 $


斯特林数

第一类斯特林数

定义:记为 S 1 ( n , k ) S_1(n,k) S1(n,k),计算将n个元素排成k个非空圆排列的方案数。

递推式: S 1 ( n , k ) = ( n − 1 ) S 1 ( n − 1 , k ) + S 1 ( n − 1 , k − 1 ) S ! ( 0 , 0 ) = 1 , S 1 ( n , 0 ) = 0 S_{1}(n,k)=(n-1)S_{1}(n-1,k)+S_{1}(n-1,k-1) \quad S_!(0,0)=1,S_1(n,0)=0 S1(n,k)=(n1)S1(n1,k)+S1(n1,k1)S!(0,0)=1,S1(n,0)=0

公式: ∑ k = 0 n S 1 ( n , k ) = n ! ( 可 以 理 解 为 所 有 置 换 个 数 为 总 排 列 数 ) \sum_{k=0}^{n}S_{1}(n,k)=n!(可以理解为所有置换个数为总排列数) k=0nS1(n,k)=n!()

第二类斯特林数

定义:记为 S 2 ( n , k ) S_2(n,k) S2(n,k),表示将n个元素划分为k个非空子集的方案数。

递推式: S 2 ( n , k ) = k S 2 ( n − 1 , k ) + S 2 ( n − 1 , k − 1 ) S 2 ( n , 0 ) = 0 , S 2 ( n , 1 ) = 1 n > 0 S_{2}(n,k)=kS_{2}(n-1,k)+S_{2}(n-1,k-1) \quad S_2(n,0)=0,S_2(n,1)=1 \quad n>0 S2(n,k)=kS2(n1,k)+S2(n1,k1)S2(n,0)=0,S2(n,1)=1n>0

通项公式: m ! S 2 ( n , m ) = ∑ k = 0 m ( − 1 ) k C ( m , k ) ( m − k ) n m!S_{2}(n,m)=\sum_{k=0}^{m}(-1)^kC(m,k)(m-k)^n m!S2(n,m)=k=0m(1)kC(m,k)(mk)n

注意到通项公式为卷积形式,可以用NTT,nlogn时间内处理斯特林数。(待补)

还有一些较为复杂,一般与多项式联系,待学。


贝尔数

定义:记为 B n B_n Bn,表示1~n划分为不同非空集合的方案数

递推式 B n + 1 = ∑ k = 0 n ( n k ) B k B_{n+1}=\sum_{k=0}^{n}\binom{n}{k}B_k Bn+1=k=0n(kn)Bk

另外注意到贝尔数其实是第二类斯特林数的和。

贝尔三角形

用以下方法建构一个三角矩阵:

(1) 第一行第一项是1

(2) 对于n>1,第n行第一项等同第n-1行最后一项。

(3) 对于m,n>1,第n行第m项等于它左边和左上方的两个数之和。( a n , m = a n , m − 1 + a n − 1 , m − 1 a_{n,m}=a_{n,m-1}+a_{n-1,m-1} an,m=an,m1+an1,m1
每行的首项是贝尔数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值