第四章生成排列组合

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

t偶?
No
找最后1 的位置j 改变末位的值 改j+1位的值
No
K=100…0?
yes
Stop
例4
Байду номын сангаас
生成3阶格雷码。 000 001 011 010
t=0, 改末位
t=1, 改前位
t=2, 改末位 t=1, 改前位
110 111 101 100
t=2, 改末位 t=3, 改前位 t=2, 改末位 停 止
23 1 4 234 1 243 1 423 1 42 1 3 24 1 3 2 1 43 2 1 34
§4.2
排列中的逆序(反序) 反自然顺序排列的数对 (31),(32),(52),(54) 唯一没有逆序的排列 排在j前>j的整数个数,记 a j
唯一确定了一个排列。
例1. S={ 1,2,3,4,5,6,7,8 },
给定逆序:5,3,4,0,2,1,1,0,求排列。 解:
8: 7: 6: 5: 4: 3: 2: 1:
b7 1
b6 b5 b4 b3 b2 b1
1 2 0 4 3 5
8 87 867 8657 48657 486537 4862537 48625137
定理4.4.1 (r –组合的字典序)
S {1,2 ,...,n}, 设a1a2 ...ar 是S的一个r - 组合 ,
满足 1 a1 a2 ... ar n,
且不等于 (n r 1)(n r 2)...(n 1)n.
令k是使ak n 且ak 1不出现在组合 a1a2 ...ar中的最大整数。
Even 算法:
1 2 n
求最大活动m
交换m和箭指数
交换p>m的方向
1 234 1 243 1 423 4 1 23 4 1 32 1 432 1 342 1 324
3 1 24 3 1 42 34 1 2 43 1 2 432 1 342 1 324 1 32 1 4
2.逐次生成排列的实例 1
1 2
添加2
添加3
2 1
添加3
1 2 2 1 1 2 3 1 3 2 3 1 2 3 2 1 2 3 1 2 1 3
如此插入,可得到所有123的排列。
求出所有1234的排列: 1 2 3 4 1 2 4 3 1 4 2 3 4 1 2 3 4 1 3 2 1 4 3 2 1 3 4 2 1 3 2 4 3 1 2 4 3 1 4 2 3 4 1 2 43 1 2 4 3 2 1 3 4 2 1 3 2 4 1 3 2 1 4 2 3 1 4 2 3 4 1 2 4 3 1 4 2 3 1 4 2 1 3 2 4 1 3 2 1 4 3 2 1 3 4
给定逆序:5,3,4,0,2,1,1,0,求排列。 解:1 2 3 4 5 6 7 8
b1 5 b2 3
1 2 3 4 5 6 7 8
b5 2 4
b6 1 4
b7 1 4
1 2 2 1 1 3
2 5 1 3 6 2 5 1 3 6 2 5 1 3 7
b3 4
b4 0
4
2
1 3
100 101 110 111
x2 x2 , x0 x2 , x1 x2 , x1 , x0
例2.
S {x6 , x5 ,, x1 , x0}
1010001
{x6 , x4 , x0 }
0110101
{x5 , x4 , x2 , x0}
29,108号组合 29=0011101 108=1101100 它的前一个组合是 1101100 1 1101011
其前元素是 a1 ...ar- 2,第r 1元素 ar -1
1 a1a2 ...ar 后面有C n a 个r 组合,
r
其前元素是 a1 ...ar- 1,第r元素 ar
r r 1 2 1 所以,序号为 Cr C C ... C C n n a n a n a n a
bn-k 0 n k 放在已排好数字之前 bn-k 1 n k 放在已排好数字第二位 bn-k 2 n k 放在已排好数字第三位 bn-k k n k 放在已排好数字之后
0 b1 n 1
b1 0 1 放在已排好数字之前 b1 1 1放在已排好数字第二位 b1 2 1放在已排好数字第三位 b1 k 1放已排数字第k 1位
{x4 , x3 , x2 , x0} {x6 , x5 , x3 , x2}
{x6 , x5 , x3 , x1 , x0}
2、生成组合的基2算法:
K=000…0 选最小的0位 j j位换为1 j以下各位归0
S {4, 3, 2, 1}
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
K=111…1?
No
yes Stop
1 2 12 3 13 23 123 4 14 24 124 34 134 234 1234
引进2 引进3
引进4
3、格雷码
组合排序时,期望两相邻的组合只差一个元素(或进或出)
Gray码排序 (Frank Gray,1953,贝尔实验室)
几何表示 n=1
0 1
则a1a2 ...ar的下一个 r 组合是
a1 ...ak 1 (ak 1)(ak 2)...(ak r k 1)
2、字典序生成r-组合的算法:
123…r
例3 生成{1,2,…,5,6}的 所有4-组合。
找出能加1的最大ak: ak<n, ak+1不出现在原组合中
改变ak及以后的值,新组合为: …(ak+1)(ak+2)…(ak+r-k+1)

集合{1,2,‥‥,n}的 全部排列数也为n!
0 an- 1 1
是否一一 对应?
an 0
定理4.2.1 任意给定逆序列 证明: 见构造法
b1 , b2 ,, bn
则集合{1,2, ‥‥,n} 存在唯一的一个排列, 其逆序列恰好是
b1 , b2 ,, bn
构造法I
写出n
0 bn-1 1
bn- 1 0 (n 1)n bn- 1 1 n(n 1)
0 bn-2 2
bn- 2 0 (n 2)在n、n 1之前 bn- 2 1 n 2在n 1、n之间 bn- 2 2 n 2在n 1、n之后
0 bn-k k
原t偶, 改末位
原t奇, 改前位
§4.4
生成 r - 组合
S {x1 , x2 ,, xn1 , xn}
为方便,设 S {1, 2, 3,, n}
考虑S的所有 r-组合,从小到大排列. 从S的所有组合中按照二进制字典序挑出所有 r-组合,它们的排列顺序却不一定是字典序排 列的.
例1 从{1,2,3,4}中挑出 所有字典序2-组合(二进制字 典序排列). 观察这些组合的排列顺序。
1.逆序: 31524 12345 逆序数 逆序列
a1 , a2 ,, an
a1 a2 an 度量一个排列的无序程度。
31524 的逆序列为:1,2,0,1,0
2、逆序与排列 逆序数满足: 集合{1,2,‥‥,n}的 全部可能逆序数为n!
0 a1 n 1 0 a2 n 2 0 a3 n 3
证明
先计算后面的组合数
1
r a1a2 ...ar 后面有Cn a1 a 个r 组合,其第一元素
r 1 a1a2 ...ar 后面有C n a 个r 组合,
2
......
其第一元素是 a1,第二元素 a2
2 a1a2 ...ar 后面有C n a 个r 组合,
r- 1
例5
8阶格雷码中
t=4, 改末位
10100110 的下一个是 00011111 的下一个是 01010100 的下一个是 01010100 的前一个是 10100110 的前一个是
10100111 00011101 01011100 01010101 10100010
t=5, 改前位
t=3, 改前位
1 2 r 1 r
§4.5 1、关系
偏序关系与等价关系
2、关系的5个属性 3、等价关系 4、偏序关系 、全序关系、严格偏序关系 习题 (第3版、第四版相同)
6,7,15,23,27
{1,2,3,4}的所有2-组合 12,13,23,14,24,34, 按照字典序重排2-组合 12,13, 14, 23,24,34,
1、 r –组合的字典序
例2 12345 56789 12349 12389 12789 16789 S={1,2,…,8,9} 第一个5-组合 最后一个5-组合 下一个5-组合是 下一个5-组合是 下一个5-组合是 下一个5-组合是 12356 12456,12457,12458 12459,12467,…… 13456,13457,…… 23456,23457,……
n=4 n=3
110 111
n=2
10 11
010
011 100 101
00
01
000
001
0000 0001 0011 0010 0110 0111 0101 0100
1100 1101 1111 1110 1010 1011 1001 1000
递归表示
n=3 加0
n=4 倒排,加1
000 001 011 010 110 111 101 100
4 8 6 2 5 1 3 7
§4.3
生成组合
1、基二字典序(压缩序)
S {xn-1 , xn-2 ,, x1 , x0 }
S的任何组合对应一个二进制数。 S的全部组合对应全部 n 位二进制数。 例1. S {x2 , x1 , x0 } 000 001 010 011

x0 x1 x1 , x0
1 2 r 1
则r - 组合 a1a2 ...ar 在字典序中的位置号是
r
例4 S={1,2,…,7,8}的4-组合中,组合1258排在字典序 的什么位置? 解:n=8,组合1258在字典序的位置为
4 4 1 4 2 4 3 C4 C C C C 8 8 1 8 2 8 5 8 8 4 3 2 1 C4 C C C C 8 7 6 3 0 12
(n-r+1)…n?
yes
No
1234 1235 1236 1245 1246 1256 1345 1346
1356 1456 2345 2346 2356 2456 3456
Stop
定理4.4.2 (r –组合的字典序号)
设 S {1,2 ,...,n},
r r 1 2 1 Cr C C ... C C n n a n a n a n a
第4 章
§4.1 1.原理 生成排列
生成排列和组合
从{1,2,, n}的一个排列中删除 n, 得到 {1,2,, n 1}的一个排列。
5,3,4,1,2 3,5,4,1,2 3,4,5,1,2 3,4,1,5,2 3,4,1,2,5
删除5 3,4,1,2 添加5
从{1,2,, n 1}的一个排列中添加n, 得到{1,2,, n}的n个相应排列。
0000 0001 0011 0010 0110 0111 0101 0100
1100 1101 1111 1110 1010 1011 1001 1000
必须在前一阶的基础上构造。
4、Gray码直接生成算法:
K=000…0 计算1的个数 t
yes
例4
生成3阶格雷码。 000 001 011 010 110 111 101 100
构造法II
1: b1个 1的数放在1 之前 1放在第b1 1个空位置 2: b2个 2的数放在2之前 2放在第b2 1个空位置
k: bk 个 k的数放在k之前 k放在bk 1空位置
n: n放在最后一个空位置
例2. S={ 1,2,3,4,5,6,7,8 },
相关文档
最新文档