第5 章 组合计数 5.1 内容提要 定理5.1(加法原理) 假定S1,S2,…,St 均为集合,第i 个集合Si 有ni 个元素。若 {S1,S2,…,St}为两两不交的集合(若i≠j,Si∩Sj =.),则可以从S1,S2,…,St 选择出 的元素总数为n1+n2+…+nt(即集合S1∪S2∪…∪St 含有n1+n2+…+nt 个元素)。 定理5.2(乘法原理) 如果一项工作需要t 步完成,第1步有n1 种不同的选择,第2步 有n2 种不同的选择,…,第t 步有nt 种不同的选择,那么完成这项工作所有可能的不同的 选择总数为n1×n2×…×nt。 排序 n 个不同元素x1,x2,…,xn 的一种排列为x1,x2,…,xn 的一个排序。 定理5.3 n 个元素的排列共有n!种。 排列 n 个(不同)元素x1,x2,…,xn 的r 排列是{x1,x2,…,xn}的r 元素子集上的排 列。n 个不同元素上的r 排列的个数记作P(n,r)。 定理5.4 n 个不同元素上的r 排列数目为P (n,r)=n(n-1)(n-2)…(n-r+1), r≤n。 组合 给定集合X = x1,x2,…,{ xn} 包含n 个元素,从X 中无序、不重复选取的r 个 元素称为X 的一个r 组合,X 的所有r 组合的个数记作C(n,r)。 定理5.5 n 个不同元素上的r 组合数为 C(n,r)=P(n,r) r! =n(n -1)…(n -r+1) r! = n! (n -r)!r! , r ≤n 定理5.6 令a1a2…ar 是{1,2,…,n}的一个r 组合。在字典排序中,第一个r 组合是 12…r。最后一个r 组合是(n-r+1)(n-r+2)…n。设a1a2…ar≠(n-r+1)(n-r+2)…n。 令k 是满足ak |Y|,则必存在x1,x2∈X ,x1≠x2,满足f(x1)=f(x2),X 相当于第一种形式中的鸽子,Y 相当于第一种形式中的鸽笼。鸽子x 飞入鸽笼f(x1)。由鸽笼原理的第一种形式,至少有 两只鸽子x1,x2 ∈X 飞入同一个鸽笼,即对某两个x1,x2 ∈X ,x1 ≠x2,满足f (x1)= f(x2)。 定理5.13 鸽笼原理(第三种形式) 设f 为有限集合X 到有限集合Y 上的函数,|X|= n,|Y|=m 。令k=én/m ù,则至少存在k 个元素a1,a2,…,ak ∈X ,满足f(a1)=f(a2)= …=f(ak)。 递推定义函数 为了定义以非负整数集合作为其定义域的函数,就要规定这个函数在 0处的值,并给出从较小的整数处的值来求出当前值的规则。这样的定义称为递推定义。 递推定义集合 递推定义可用来定义集合,先给出初始元素,然后给出从已知元素构造 其他元素的规则。以这种方式描述的集合是严格定义的。 常系数k 阶齐次线性递推关系 形为an =c1an-1+c2an-2+…+ckan-k ,ck ≠0的递推 关系称为常系数k 阶齐次线性递推关系。 特征方程与特征根 方程pk -c1pk-1-c2pk-2-…-ck-1p-ck =0称为k 阶线性齐 次递推关系an =c1an-1-c2an-2-…-ckan-k 的特征方程,其中p 是一个常数。方程的解 p 称为该递推关系的特征根。 定理5.14 令 an =c1an-1 +c2an-2 ① 为常系数二阶齐次线性关系。 (1)若S 和T 为式①的解,则U =bS+dT 也为式①的解。 (2)若r 为方程 t2 -c1t-c2 =0 ② 的一个根,则序列rn(n=0,1,…)为式①的一个解。 (3)若an 为式①定义的序列, a0 =C0, a1 =C1 ③ 且r1 和r2 为方程②的两个不相同的根,则存在常数b 和d,使得 an =brn1 +drn2 , n =0,1,… 成立。定理5.15(Master定理) 设a≥1,b>1为常数,f(n)为函数,T (n)为非负整数,且 T(n)=aT(n/b)+f(n),则有以下结果: 组合计数 第5章 1 19 (1)f(n)=O(nlogba-ε),ε>0,那么T(n)=Θ(nlogba)。 (2)f(n)=Θ(nlogba),那么T(n)=Θ(nlogbalogn)①。 (3)f(n)=Ω(nlogba+ε),ε>0,且对于某个常数c<1和所有的充分大的n 有af(n/b)≤ cf(n),那么T(n)=Θ(f(n))。 定理5.16 对输入规模为n 的二分法查找,在最坏情形下的时间复杂度为O(logn)。 生成函数 对于序列a0,a1,a2,…,多项式A(x)=a0+a1x+a2x2+… 称为序列a0, a1,a2,…的生成函数。 下面用B(x)=b0+b1x+b2x2+…表示序列b0,b1,b2,…的生成函数;C (x)=c0+ c1x+c2x2+…表示序列c0,c1,c2,…的生成函数。 性质5.1 如果bn =αan ,α 为常数,则B(x)=αA(x)。 性质5.2 如果cn =an +bn ,则C(x)=A(x)+B(x)。 性质5.3 如果cn =Σn i=0 aibn-i,则C(x)=A(x)·B(x)。 性质5.4 如果bn = 0, n