组合数学学习笔记

组合数学学习笔记

组合数学常用公式

基本公式

  1. 排列:

Anr=n!(nr)!

  1. 组合:

Cnr=n!r!(nr)!(nr)=n!r!(nr)!

  1. 二项式定理:

nN,(x+y)n=k=0n(nk)xkynk

  1. 广义二项式定理:

|x|<1,αR

(1+x)α=k=0(αk)xk

这里 (αk):=αk_k! 。当 |x|1 时,右侧幂级数不一定收敛。

组合公式

  1. 杨辉恒等式:

(nm)=(n1m)+(n1m1)

  1. 等效代换:

(nm)=(nnm)

  1. 连续应用1

(n+r+1r)=i=0r(n+ii)

  1. 组合意义:

(nm)(mr)=(nr)(nrmr)

  1. 4r=1 时的特例:

(nm)(m1)=(n1)(n1m1)m(nm)=n(n1m1)

  1. 组合意义:

(n+mr)=i=0r(ni)(mri)

  1. 性质5与二项式定理:

i=0ni(ni)=n2n1

常用数及其推论

第一类斯特林数

排成 k 个圆排列也就是 1n 排列的个数,满足 ipi 连边后,形成 k 个环的图。我们用 [nm] 来表示 n 个节点,m 个环的斯特林数。

考虑递推意义,有一下两种情况:

  1. 新加入的点自己成为一个新环,方案数为 [n1m1]

  2. 新加入的点加在了任意一个原有的环中的任意一个点的后续,方案数为 (n1)[n1m]

总递推式为 [nm]=[n1m1]+(n1)[n1m]

第二类斯特林数

n 个元素划分到 m 个集合的方案数,集合不能为空。我们用 {nm} 来表示 n 个元素,m 个集合的斯特林数。

依旧是考虑递推意义,有两种情况:

  1. 和第一类斯特林数一样,新加入的元素自己成为一个新集合,方案数为 {n1m1}

  2. 新元素加入任意一个已有集合,方案数为 m{n1m}

总递推式为 {nm}={n1m1}+m{n1m}

卡特兰数

卡特兰数是以下四类问题的通解:

  1. n 个数 1,2,3,,n 依次进栈,问有多少种不同的出栈序列。

  2. 求长为 2n 的合法括号序列的数量。

  3. 2n+1 个点,每个非叶子节点都恰好有两个儿子的有根、无标号、区分左右儿
    子的二叉树个数。

  4. 给定 (n+1)2 的网格图,问有多少种 (1,1)(n+1,n+1) 的路径使
    得其不越过对角线。

问题转化:

  1. 入栈为 +1,出栈为 1,过程中序列操作值保证大于等于 0

  2. 左括号 +1,右括号 1,同问题 1

  3. dfs 整棵树时,左儿子为左括号,右儿子为右括号,转化为问题2

  4. 向右走为左括号,向上走为右括号,转化为问题 2

这个问题的答案称作卡特兰(Catalan)数 Cn

我们通过问题4来求出卡特兰数的表达式:

若没有对角线的限制,方案数为 (2nn)

若接触了次对角线 y=x+1,则从其第一次接触的位置起关于这条对角线对称,终点变为 (n1,n+1),不合法路径与 (1,1)(n1,n+1) 的路径一一对应,所以 Cn=(2nn)(2nn1)=(2nn)n+1

posted @   mjsdnz  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示