第七章 基本计数公式 第一节 加法法则与乘法法则 一、加法法则 1.事件 A 有 m 种产生方式,事件 B 有 n 种产生方式, 则“事件 A 或 B”有 m+n 种产生方式. 2.条件:事件 A 与 B 产生方式不重叠 3.应用:分类选取 4.推广:n1+n2+…+nk.

Download Report

Transcript 第七章 基本计数公式 第一节 加法法则与乘法法则 一、加法法则 1.事件 A 有 m 种产生方式,事件 B 有 n 种产生方式, 则“事件 A 或 B”有 m+n 种产生方式. 2.条件:事件 A 与 B 产生方式不重叠 3.应用:分类选取 4.推广:n1+n2+…+nk.

第七章 基本计数公式
第一节 加法法则与乘法法则
一、加法法则
1.事件 A 有 m 种产生方式,事件 B 有 n 种产生方式,
则“事件 A 或 B”有 m+n 种产生方式.
2.条件:事件 A 与 B 产生方式不重叠
3.应用:分类选取
4.推广:n1+n2+…+nk
二.乘法法则
1.事件 A 有 m 种产生方式,事件 B 有 n 种产生方式,
则“事件 A 与 B”有 mn 种产生方式.
2.条件:事件 A 与 B 的产生方式相互独立
3.应用:分步选取
4.推广:n1 n2 …nk
三.实例
例 1 设 A,B,C 是 3 个城市,从 A 到 B 有 3 条道路,从 B 到 C
有 2 条道路,从 A 直接到 C 有 4 条道路,问从 A 到 C 有
多少种不同的方式?
N=32+4 = 10
例 2 求 1400 的不同的正因子个数
1400=23 52 7
正因子为:2i 5j 7k,其中 0i3, 0j2, 0k1
N=(3+1)(2+1)(1+1)=24
第二节 排列组合
一.选取问题(组合计数模型 1)
设 n 元集合 S,从 S 中选取 r 个元素.
根据是否有序,是否允许重复可以将该问题分为四个子类型
不重复
重复
有序
集合排列 P(n,r)
多重集排列
无序
集合组合 C(n,r)
多重集组合
二.集合的排列与组合
1.从 n 元集 S 中有序、不重复选取的 r 个元素称为 S 的
一个 r 排列,S 的所有 r 排列的数目记作 P(n,r)
 n!
nr

P ( n, r )   ( n  r )!

n r
 0
2.环排列
P ( n, r )
S 的环排列数 =
r
3.从 n 元集 S 中无序、不重复选取的 r 个元素称为 S 的
一个 r 组合,S 的所有 r 组合的数目记作 C(n,r)
 P ( n, r )

n r
C ( n, r )   r!

n r
 0
4.C(n,r) = C(n,nr)
证明方法:
公式代入
组合证明(一一对应)
三.基本计数公式的应用
例1
从 1—300 中任取 3 个数使得其和能被 3 整除有多少
种方法?
A={1, 4, …,298}
B={2, 5, …,299}
C={3, 6, …, 300}
分类:
分别取自 A, B, C:
A, B, C 各取 1 个:
3
各 C(100,3)
C(100,1)3
N= C(100,3) + 100 = 1485100
例2
求 1000!的末尾有多少个 0?
1000!=1000 999 998 …  21
将上面的每个因子分解,若分解式中共有 i 个 5, j 个 2,
那么 min{i,j}就是 0 的个数.
1, …,1000 中有
500 个是 2 的倍数,j > 500;
200 个是 5 的倍数,
40 个是 25 的倍数(多加 40 个 5),
8 个是 125 的倍数(再多加 8 个 5),
1 个是 625 的倍数(再多加 1 个 5)
i = 200+40+8+1 = 249.
min{i,j}=249.
四.多重集排列与组合
多重集 S={n1a1, n2a2, …, nkak},
0 <ni +∞
1.多重集的排列
(1)全排列 r=n, n1 + n2 + … + nk = n
N
n!
n1 ! n2 ! ... nk !
证明:分步选取,先放 a1, 有 C(n,n1) 种方法;
再放 a2, 有 C(n-n1,n2)种方法,...,
放 ak,有 C(n-n1-n2-…-nk-1,nk) 种方法
N  C ( n, n1 )C ( n  n1 , n2 )...C ( n  n1  n2  ...  nk 1 , nk )

n!
n1 ! n2 ! ... nk !
(2)若 rni 时,每个位置都有 k 种选法,得 kr.
2.多重集 S={n1a1, n2a2, …, nkak}的组合数
N = C(k+r-1,r),
证明
当 r  ni
一个 r 组合为
{x1a1, x2a2, …, xkak},
其中 x1 + x2 + … + xk = r , xi 为非负整数
这个不定方程的非负整数解对应于下述排列
1…1 0 1…1 0 1…1 0 …… 0 1…1
x1 个
x2 个
x3 个
r 个 1,k-1 个 0 的全排列数为
N =
( r  k  1)!
 C ( k  r  1, r )
r !( k  1)!
xk 个
3. 实例
例5
r 个相同的球放到 n 个不同的盒子里,每个盒子球数不
限,求放球方法数.
解: 设盒子的球数依次记为 x1, x2, …, xn, 则满足
31 + x2 + … + xn = r, x1,x2,…,xn 为非负整数
N = C(n+r-1, r)
例4
排列 26 个字母,使得 a 与 b 之间恰有 7 个字母,求方
法数.
解: 固定 a 和 b 中间选 7 个字母,有 2 P(24,7)种方法,
将它看作大字母与其余 17 个全排列有 18!种,共
N = 2 P(24,7) 18!
例 5 (1)10 个男孩,5 个女孩站成一排,若没有女孩相邻,有
多少种方法?
(2) 如果站成一个圆圈,有多少种方法?
解:
(1)
P(10,10) P(11,5)
1
(2)
P(10,10) P(10,5)
10
例 6 把 2n 个人分成 n 组,每组 2 人,有多少分法?
解:相当于 2n 不同的球放到 n 个相同的盒子,每个盒子 2 个,
放法为
N
( 2n)!
( 2! ) n n!

( 2n)!
2 n n!
例7
9 本不同的书,其中 4 本红皮,5 本白皮,
(1) 9 本书的排列方式数有多少?
(2) 若白皮书必须放在一起,那么有多少方法?
(3) 若白皮书必须放在一起,红皮书也必须放在一起,
那么有多少方法?
(4) 若把皮和红皮书必须相间,有多少方法?
解:
(1)9!
(2)5!5!
(3)5!4!2!
(4)5!4!
第三节 二项式定理与组合恒等式
一、二项式定理
设 n 是正整数,对一切 x 和 y
 n  k n k
( x  y )     x y
k  0 k 
n
n
说明:
证明使用归纳法
常用形式
 n k
(1  x )     x
k  0 k 
n
n
二、组合恒等式
 递推式
 n  n 

1.    
k n k
 n  n  n  1

2.    
 k  k  k  1
 n   n  1  n  1
  

3.    
k
k
k

1
  
 

证明方法:公式代入、组合分析
应用:1 式用于化简,
2 式用于求和时消去变系数,
3 式用于求和时拆项(两项之和或者差)
,然后合并

变下项求和----简单和、交错和、变系数和
简单和、交错和
 n n
4.     2
k  0 k 
n
k  n
5.  ( 1)    0
k 0
k
n
证明方法:二项式定理、组合分析
应用:求和
变系数和
 n
6.  k    n2 n1
k 0  k 
n
2 n
7.  k    n( n  1)2 n 2
k 0  k 
n
证明方法:
二项式定理 + 微商
已知恒等式(2 式)消去变系数
应用:求和
二项式定理 + 微商
n  n
 n k
(1  x )     x  1     x k
k  0 k 
k 1 k 
n  n
n 1
n(1  x )
  k   x k 1
微商
k 1  k 
n
n
n2
n 1
 n
  k  
k 1  k 
n  n
  k  
k 0  k 
n
令x  1
已知恒等式代入
n  n  1
 k  k    k k  k  1  消 去 变 系 数
k  0   k 1


2 n
n
n
2
n
 n  1
 n  1
  n  [( k  1)  1]
 常 量 外 提
  kn
k 1  k  1 
k 1
 k  1
n
n  n  1
 n  1
  n  

 n  ( k  1)
k 1
 k  1
k 1 k  1 
n
 n  1
  n2 n1
 n  k 
k 0  k 
n 1
变限
 n( n  1)2 n 2  n2 n1  n( n  1)2 n 2
 变上项求和
 l   n  1
, n, k  N
8.     
l  0 k   k  1 
n
证明方法:组合分析
S={a1,a2,…,an+1}的 k+1 子集数
含 a 1:
不含 a1,含 a2:
 n
 
k
 n  1


k


…
不含 a1,a2,…,an, 含 an+1
应用:求和
 0
 
k
 积
 n  r   n  n  k 

9.      
 r  k   k  r  k 
证明方法:组合分析.
n 元集中选取 r 个元素,然后在这 r 个元素
中再选 k 个元素. 不同的 r 元子集可能选出
n k
 .
相同的 k 子集,其重复度为 
r k
{a,b,c,d,e}  {a,b,c,d}  {b,c,d}
{b,c,d,e}  {b,c,d}
应用:将变下限 r 变成常数 k,求和时提到和号外面.

积和
 m  n   m  n 
  

10.   
k  0 k  r  k   r 
r  m  n   m  n 

11.      
k  0 k  k   m 
r
证明方法:
组合分析、二项式定理
11 式是 10 式的特例
应用:求和
组合恒等式小结
证明方法
1. 已知恒等式带入
2. 二项式定理
3. 幂级数的微商、积分
4. 归纳法
5. 组合分析
求和方法:
1. Pascal 公式---式 3
2. 级数求和
3. 观察和的结果,然后使用归纳法证明
4.
利用已知的公式
三、非降路径问题
1.基本模型
(0,0)到(m,n)的非降路径数:C(m+n,m)
(a,b)到(m,n)的非降路径数:
等于 (0,0)到(m-a,n-b)的非降路径数
(a,b)经过(c,d)到(m,n)的非降路径数:乘法法则
2.限制条件的非降路径数:
从(0,0)到(n,n)不接触对角线的非降路径数
= 下方从(0,0)到(n,n)不接触对角线非降路径数的 2 倍
下方从(0,0)到(n,n)不接触对角线非降路径数
= 从(1,0)到(n,n-1)不接触对角线非降路径数
从(1,0)到(n,n-1)的不接触对角线的非降路径数
= 从(1,0)到(n,n-1)的非降路径数
 从(0,1)到(n,n-1)的非降路径数
 2n  2   2n  2  2  2n  2 
  
  

N  2
 n  1   n  n  n  1 
3.应用
例 1 证明集合恒等式---积和形式或求和形式
 m  n   m  n 
  k  r  k    r 
k  0 
 

r
证:
m
(0,0)到(m-k,k)路径数   ,
k
 n 

(m-k,k)到(x,y)路径数 
r  k
 x  (m  k )  y  k  n
 y  r, x  m  n  r

yk  r k
例 2 集合{1,2,…,n}上的函数
f:{1,2,…,n}{1,2,…,n}
单调递增函数个数
=(1,1)到(n+1,n)的
非降路径数
 2n  1 

 n 
= 
 2n  1 

 n 
单调函数个数:2 
A={1,2,…,m},B={1,2,…,n},A 到 B 单调函数个数是
 m  n  1
 ,
m


从(1,1)到(m+1,n)的非降路径数 2
严格单调递增函数个数 C(n,m),严格单调递减函数个数 C(n,m)
函数计数
A={1,2,…,m}, B={1,2,…,n}
f:AB
函数
单射
满射
双射
单调
计数 P(n,m)
m 
  n!
n
 n
  n!  n!
 n
 P ( n, n )
 m  n  1

2
m


放球
排列
非降路径
模型
排列
严格单调
C(n,m)
选取
例 3 将 1,2,…,n 按照顺序输入栈,有多少个不同的输出序列?
分析:将进栈、出栈分别记作 x,y,
出栈序列是 n 个 x,n 个 y 的排列,
排列中任何前缀的 x 个数不少于 y 的个数,
等于从(0,0)到(n,n)的不穿过对角线的非降路径数
实例:1,2,3,4,5
x,x,x,y,y,x,y,y,x,y
 进,进,进,出,出,进,出,出,进,出
 3,2,4,1,5
从(0,0)到(n,n)的穿过对角线的非降路径
 从(-1,1)到(n,n)的非降路径
从(0,0)到(n,n)的非降路径总数为 C(2n,n)条,
从(-1,1)到(n,n)的非降路径数为 C(2n,n-1)条,
 2n   2n  ( 2n)!
( 2n)!
1  2n 
 
 
N     


 n   n  1  n! n! ( n  1)!( n  1)! n  1  n 
第四节 多项式定理
一、设 n 为正整数,xi 为实数,i=1,2,…,t.
 x1  x2  ... xt n
n
 n1 n2

 x1 x 2 ...x t nt



满 足n1  ...n t  n  n1 n2 ...nt 
的非负整数解
证明:选 n1 个因式贡献 x1,
从 n-n1 个因式选 n2 个因式贡献 x2,
…
从 n-n1-n2-…-nt-1 个因式中选 nt 个因式贡献 xt.
 n  n  n1   n  n1  ...  nt 1 

 
...
nt
 n1  n2  

n


n!


 
n1 ! n2 !...nt !  n1n2 ...nt 
推论 1 不同的项数为方程 n1  n2  ... nt  n 的解个数
C(n+t-1,n)
n

 n

  t ,在多项式公式中令 xi=1.
推论 2  
 n1n2 ...nt 
二、多项式系数
1. 组合意义:
n




多项式系数 
 n1n2 ... nt 
多重集的全排列数
n 个不同的球放到 t 个不同的盒子使得第一个盒子
含 n1 个球,第二个盒子含 n2 个球,…,第 t 个盒
子含 nt 个球的方案数
2. 恒等式

n

 n

  n n ... n   t
t
 1 2

n


n!

 
 n1n2 ... nt  n1 ! n2 !...nt !
n
n1

 


  

 n1 n2 ... nt   n1  1 n2 ... nt 

n1
n1




  ...  

 
 n1 n2  1... nt 
 n1n2 ... nt  1 
小结
一、基本计数
计数法则:加法法则、乘法法则
计数模型:
选取问题:有序不重复、有序可重复(部分公式)
无序不重复、无序可重复(部分公式)
非降路径问题:基本公式
有限制条件的情况
方程的非负整数解问题
放球问题
处理方法:分类处理、分步处理、一一对应思想
二、组合恒等式
基本公式、证明方法、应用
三、求和技术
基本和式、求和方法、应用
四、计数符号
组合数或二项式系数 C(m,n)
排列数
P(m,n)
多项式系数
n




 n1n2 ...nt 
定义、基本公式、恒等式、对应的组合计数问题
命题:k 个连续正整数乘积可以被 k!整除(书上例 13)
例 1 设 p 为素数,p2, 证明当 C(2p,p)被 p 除时余数是 2.
2
证
2
 2 p  p  p
 p
         ...   
 p   0  1
 p
2
由命题:k!| p(p-1)…(p-k+1)
因此 k!| (p-1)(p-2)…(p-k+1),p 为素数,0<k<p,
 p
p |   , 0<k<p
k
2
2
 p  p
C(2p,p)被 p 除的余数为       2
 0   p
例 2 证明 Fermat 小定理
p
p 为素数,则 p|(n n)
p
p




  1, 则 p| 
 .
证 (1)证明 
 k1k2 ... kn 
 k1k2 ... kn 
p



 =1 当且仅当存在 kj=p, 其他 ki=0, ij.
 k1k2 ... kn 
p


p!

 
是整数,且不等于 1
 k1k2 ... kn  k1 ! k2 !...kn !
而 k1 ! k2 !...kn ! 中不含 p,从而 k1 ! k2 !...kn ! 整除(p-1)!.
(2)证明 Fermat 小定理
( x1  x 2  ...  x n ) p
p

 k1 k2
 x1 x 2 ...x n kn
  
 k i  p  k1 k 2 ... k n 
p


 ,
n   
 ki  p  k1k2 ... kn 
p
p
p





  1, 则 p| 

 k1k2 ... kn 
 k1k2 ... kn 
p
右边恰有 n 项的值等于 1,其余各项之和为 n -n
p
p 整除其余的每一项,因此 p|(n -n)
例 3 Ipv4 协议网址
32 位地址
网络标识+主机标识
A 类:最大网络; B 类:中等网络; C:最小网络;
D:多路广播; E:备用
限制条件:1111111 在 A 类中的 netid 部分无效
hostid 部分不允许全 0 或全 1
A 0
netid (7位)
B 1
0
netid (14位)
C 1
1
0
D 1
1
1 0
E 1
1
1 1
hosted
(24位)
hostid(16位)
netid (21位)
hostid(8位)
(28位)
0
(27位)
A 类:netid 2 1, hosted 2 2,地址数:12716777214=21307061778
14
16
B 类:netid 2 , hosted 2 2,地址数:1638465534=1073709056
21
8
C 类:netid 2 , hosted 2 2, 地址数:2097152254=532676608
|A|+|B|+|C|=3737091842
Ipv6 改为 128 位
7
24
例 4 二分搜索算法平均复杂度的分析
输入:L[1..n], x
输出:如果 x 在 L 中,输出 x 的下标 j,
否则输出 j=0
算法 二分法搜索
1. k1; mn;
2. while km do
3.
j  (k+m)/2;
4.
if x=L(j) then return;
5.
if x<L(j) then mj-1;
6.
7. j0;
else k  j+1;
平均情况:假设 x 处在 L 每个位置和空隙的概率一样
令 n=2k-1,
St 是算法做 t 次比较的输入个数, 1tk. 则
-
S1=1=20, S2=2=21, S3=22, S4=23, ... , St=2t 1, t<k.
-
Sk=2k 1+n+1, (n+1 个空隙)
k-1
其中 2
为 x 在表中做 k 次比较的输入个数.
1
A( n) 
(1S1  2 S 2  ...  kSk )
2n  1
k
k
k
k
t 1
t 1
k 1
t 1
t 1
 t 2 t  1   t ( 2 t  2 t  1 )   t 2 t   t 2 t 1
k
  t2 
t 1
t
k
 ( t  1)2   t 2 
t 0
k
t
t 1
k
t
k 1
 t2 
t 0
 k 2 k  ( 2  1)  ( k  1)2  1
1
A( n) 
(1 S1  2 S 2  ...  kSk )
2n  1
k
1

[ t 2 t 1  k ( n  1)]
2n  1 t 1
1

[(k  1)2 k  1  k ( n  1)]
2n  1
k 1 k
1
1

  k   l ogn 
2
2
2
2
t
k 1
t
2

t 0