29
1 排列与组合 潘海为 http://rciip.hrbeu.edu.cn

排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

  • Upload
    others

  • View
    24

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

1

排列与组合

潘海为

http://rciip.hrbeu.edu.cn

Page 2: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

2

组合恒等式及其意义

n 等式1

n 等式2

rnn

rn

112

221222

nnnn

nnnn

Page 3: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

3

组合恒等式及其意义

n 等式3

n 等式4

n 等式5

11

13

12

11

rr

rn

rn

rn

rn

rn

rlrn

rn

rl

ln

nnnnnn 2210

Page 4: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

4

组合恒等式及其意义

n 等式6

n 等式7

n 等式8

0110n

rm

rnm

rnm

rnm

kn

knn

kn 1

0110m

mn

mmn

mmn

mnm

Page 5: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

5

组合恒等式及其意义

n 等式9

n 等式10

11

kn

kkn

kn

lmnm

kln

kmm

k 0

Page 6: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

6

组合恒等式及其意义

n 例23 试用组合学论证法证明恒等式

1-1

1-1

11

2121

2121

tt

tt

nnnn

nnnn

nnnn

nnnn

Page 7: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

7

生成算法

n 生成算法也叫构造算法

n 生成算法完成的功能是将所有满足要求的排列或组合无重复、无遗漏地枚举出来

Page 8: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

8

生成算法

n 排列的构造算法主要有直接法、字典序法、序数法、逆序数法、邻位对换法等等

n 组合的构造算法主要有字典序法、二进制编码法等等

Page 9: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

9

字典序法

n n元自然数集合的全排列,按从左至右、从小

到大的顺序规定其排列的先后顺序

n 可以用一棵树来表示。

B

C

1

F2

L3

G3

M2

D

H1

N3

I3

O1

E

J1

P2

K2

Q1

2 3

Page 10: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

10

字典序法

n 举例 对集合{1,2,3},按字典序生成的全排列是

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

n 前序排列和后序排列应具有最长的共同前缀

Page 11: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

11

字典序法

n 求839647521的后序排列

q 19的最小排列为123456789

q 19的最大排列为987654321

q 从右向左扫描若都是增的,就没有下一个了;否则,

找出第一次出现下降的位置

Page 12: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

12

字典序法

n 求839647521的后序排列

q 找出比右边数字小的第一个数 839647521

q 在“4”的右边找出比“4”大的第一个数

839647521

q 将“4”和“5”对调,成为 839657421

q 再将“5”后面的序列翻转,成为 839651247

Page 13: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

13

n 从自然顺序123…n开始,按照字典顺序依次构造集

合{1, 2, …, n}的所有全排列,由一个排列构造下一个

排列的算法如下:

q 对 p1p2…pn 从右向左扫描,找出比右邻数字小的第1个数pi

q 对 p1p2…pn 从右向左扫描,找出比 pi 大的第一个数 pj

q 将 pi 和 pj 互换得 b1b2…bn

q 将 b1b2…bn 中的 bi+1 到 bn 部分的顺序逆转,得

b1b2…bn…bi+1

字典序法算法

Page 14: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

14

字典序法算法

Page 15: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

15

序数法

n 整数的表示形式

q 十进制表示形式

当 0≤ x < 10i 时,

1

09010

i

kk

kk aax 其中,

Page 16: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

16

1

1

! 1n

kk k

1

1

! 1 !n

kn k k

n 另一种表示

n!=((n-1)+1)(n-1)!=(n-1)(n-1)!+(n-1)!,同理,

(n-1)!=(n-2)(n-2)!+(n-2)!, …,

因此,n!= (n-1)(n-1)!+ (n-2)(n-2)!+…+2×2!+2!

序数法

Page 17: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

17

不难证明,从0到n!-1的任何数m可唯一的表示为

1 2 1( 1)! ( 2)! ... 1!n nm a n a n a

其中 0 , 1,..., 1.ia i i n

所以从0到n!-1的n!个整数与

(an-1,an-2,…a2,a1)一一对应。

另一方面,不难从m算出an-1,an-2,…a2,a1.

序数法

Page 18: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

18

过程如下:

1, 0 ! 1m m m n

1 2 1 12 , 0 1m m a a

2 3 2 23 , 0 2m m a a …………….

2 1 2 2( 1) , 0 2n n n nm n m a a n

1 1 1, 0 1n n nm a a n

1 2 2 1( , ,..., , )n na a a a m

序数法

Page 19: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

19

序数法

n 算法

q 序号m依次由0变到n!-1

n 由序号m算出中介数an-1an-2an-3…a1

n 由中介数an-1an-2an-3…a1 求出排列 pn pn-1 pn-2 pn-3… p1

q ai 指示排列 P 中数 i+1 所在位置右侧比 i+1 小的数的

个数

n 例24 已知a3a2a1=301,求出排列 p4p3p2p1

Page 20: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

20

由中介数求排列

_ _ _ _4 32 1

l a2=0,说明 3 的右边没有比它更小的,故3放在最右端,

l a1=1, 容易得出,2右边还有一个空格放1,于是得到了排列4213。

l a3=3, 知 4 放在空格的最左端,

过程如下

n 例24 已知a3a2a1=301,求出排列 p4p3p2p1

Page 21: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

21

换位法

n 给定[n-1]的一个排列п,将n 由最右端依次插入排列п ,即得到n个[n]的排列:

p1 p2…npn-1

np1 p2…pn-1

p1 p2…pn-1n

n 基于直接生成法: [n]的全排列可由[n-1]的全排列生成:

Page 22: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

22

换位法

n 例如 n=3 (1) 1 (2) 1 1(3) 1 2

1 2

2 12 1

1 2

2 1

33

3

33

3

22

Page 23: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

23

n 考虑{1,2…n}的一个排列,其上每一个整数都给

了一个方向,我们称整数 k 是可移的,如果它

的箭头所指的方向的邻点小于它本身。例如

2 6 3 1 5 4

n 其中6、3、5都是可移的。

n 显然1永远不可移。

n n除了以下两种情形外,它都是可移的: (1) n是第一个数,且其方向指向左侧;

(2) n是最后一个数,且其方向指向右侧;

换位法

Page 24: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

24

2、当存在可移的数时

(a) 找最大的可移数m

(b) 将m与其箭头所指的邻数互换位置

(c) 将所得排列中比m大的数p的方向调整,即改为

相反方向。

12......n

n 于是,我们可由 按如下算法产生所有排列

12......n

1、开始时:

换位法

Page 25: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

25

1 2 3 1 2 3 1 2 3 1 2 3 1 3 2 1 3 2 1 3 2 1 3 2 3 1 2 3 1 2 3 1 2 3 1 2

44

444

44

44

44

4

换位法

2、当存在可移的数时

(a) 找最大的可移数m

(b) 将m与其箭头所指的

邻数互换位置

(c) 将所得排列中比m大

的数p的方向调整,即

改为相反方向。

Page 26: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

26

3 2 1 3 2 1 3 2 1 3 2 1 2 3 1 2 3 1 2 3 1 2 3 1 2 1 3 2 1 3 2 1 3 2 1 3

44

444

44

44

44

4

换位法

2、当存在可移的数时

(a) 找最大的可移数m

(b) 将m与其箭头所指的

邻数互换位置

(c) 将所得排列中比m大

的数p的方向调整,即

改为相反方向。

Page 27: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

27

组合生成算法n 从{ 1, 2, 3, 4, 5, 6, 7 }中取3个元素的所有组合如下

q 123,124,125,126,127q 134,135,136,137q 145,146,147q 156,157q 167q 234,235,236,237q 245,246,247q 256,257q ……q 567

Page 28: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

28

n 从{1,2,…,n}中取r-组合表示为C1C2…Cr,令C1<C2

<…<Cr,其中有Ci≤(n-r+i), i=1,2,…,r

n 生成后序组合的规则

q 对C1C2…Cr从右到左扫描,找出第一个满足Ci<(n-r+i)的i

q CiCi+1

q CjCj-1+1 , j=i+1,i+2,…r

组合生成算法

Page 29: 排列与组合 - rciip.hrbeu.edu.cnrciip.hrbeu.edu.cn/_upload/article/files/ed/79/5e9e295945faa89109170b0... · 由中介数求排列 _4 _2 1_ _3 l a2=0,说明 3 的右边没有比它更小的,

• 29

总结

n 加法法则、乘法法则、减法法则、一一对应法则

n 排列,组合,可重排列,可重组合

n 二项式定理,多项式定理

n 若干组合等式

n 排列与组合的生成算法