四个基本计数原理
加法原理
描述_1: 设集合S被划分成两两不相交的部分 S1,S2,...,Sn 则 S的对象数目可以通过确定它的每一个部分对象的数目相加得到
|S|=|S1|+|S2|+......+|Sn|描述_2: 如果有p种方法能够从一堆中选出一个物体,又有q种方法从另一堆中选择出一个物体,那么从两堆中选出一个物体有p+q种方法;
乘法原理
描述_1: 令S是对象有序对(a, b) 的集合, 其中第一个对象a来自大小为 p的一个集合, 而对于对象 a的每个选择,对象 b有q种选择。 于是 S的大小是 p∗q
|S|=p∗q描述_2: 如果第一项任务是p个结果, 而不论第一项的结果如何,第二项任务都有q个结果,那么这两项任务连续执行就有 p∗q 个结果
减法原理
- 补集合
除法原理
- 描述:S 是一个有限集合, 把它划分成 k个部分,使得每一个部分包含的对象数目相同。于是,此划分中的部分数目
k=|S|在一个部分中的对象数目
排列
P(n,r)=n∗(n−1)∗......∗(n−r+1)
- 线性排列
- 循环排列(除法原理):n个元素集合的循环 r排列数目是
P(n,r)r=n!r∗(n−r)!
组合(子集)
(nr)=P(n,r)r!=n!r!(n−r)!
(nr)=(nn−r)
- (nk)=(n−1k)+(n−1k−1)
多重集合的排列
- 设S是多重集合, 它有 k种不同类型的对象,且每一种类型的有限重复数分别为
n1,n2,......,nk
, 设 S的大小为
n=n1+......+nk
, 则S的排列数是
n!n1!....nk!
多重集合的组合
- 设S有k种类型的对象的多重集合,每种元素均具有无限的重复数,那么 S的 r组合的个数等于
(r+k−1r)=(r+k−1k−1)
鸽巢原理
简单形式
- 如果要把n+1 个物体放入 n个盒子, 那么至少有一个盒子包含两个或者更多的物体
加强版
- 设
q1,....,qn
是正整数, 如果将:
q1+q2+......+qn−n+1
个物体放入 n个盒子, 那么或者第一个盒子至少含有 q1 个物体, 或者第二个盒子至少含有 q2 个物体,……, 或者 第n个盒子至少有 qn 个物体
Ramsey定理
- 如果 m>=2 及 n>=2 是两个整数,则存在正整数p,使得: Kp−>Km,Kn
- ramsey数 r(m, n) 使 Kp−>Km,Kn 成立的最小整数p
生成排列组合
- n! 2πn−−−√(ne)n
二项式系数
容斥原理
集合S中不具有性质 P1,P2,......,Pm 的对象个数由下面的交错表达式给出:
|A1¯¯¯¯∩A2¯¯¯¯∩......∩Am¯¯¯¯¯|=|S|−∑|Ai|+∑|Ai∩Aj|−∑|Ai∩Aj∩Ak|+......+(−1)m|Ai∩......∩Am|推论
集合S中至少具有性质 P1,P2,......,Pm 之一的对象个数由下式给出:
|A1∪A2∪......∪Am|=∑|Ai|−∑|Ai∩Aj|+∑|Ai∩Aj∩Ak|−.......+(−1)m+1|A1∩A2∩....∩Am|
递推关系和生成函数
生成函数
- g(x)=h0+h1+......+hmxm
指数生成函数
- 数列
h0,h1,......,hn,......
的指数生成函数定义是
g(e)(x)=∑∞n=0hnxnn!=h0+h1x+h2x22!+......+hnxnn!+......
线性其次递推方程
非其次递推方程
特殊的计数序列
catalan数
catalan序列是: C0,C1,......,Cn,......
其中 Cn=1n+1(2nn)由n个 +1 和 n个 -1 构成的 2n项序列
a1,a2,...,a2n
其部分和总满足: a1+a2+......+ak>=0
序列个数等于第n个catanlan数
Cn=1n+1(2nn)
差分序列和Stirling数
- 计数差分表第0条对角线
- S(p,k)=c(p,k)k! …………… (0<=k<=p) …….第二类Stirling数
- stirling数的递推: s(p,k)=s(p−1,k−1)+ks(p−1,k)
第二类Stirling数是把p个元素集合划分到k个不可区分的盒子且没有空盒子的划分数
第一类stirling数
s(p,k)=(p−1)s(p−1,k)- 第一类stirling数 s(p,k) 计数是把p个对象排成 k个非空循环排列的方法数。