组合数学讲义 排列组合

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

字典序法举例
一般而言,设P是[1,n]的一个全排列。 P=P1P2…Pn=P1P2…Pj-1PjPj+1…Pk-1PkPk+1…Pn j=max{i|Pi<Pi+1},k=max{i|Pi>Pj} 对换Pj,Pk,将Pj+1…Pk-1PjPk+1…Pn翻转, P’= P1P2…Pj-1PkPn…Pk+1PjPk-1…Pj+1即P的下 一个
2
2013-7-4
基本计数原理

集合S的划分:
S S1 S 2 S m S i S j (i j )

加法原理

若S划分为S1, S2,…, Sm, 则
| S || S1 | | S 2 | | S m |

乘法原理


S为有序对(a,b)集合,其中a有p种选择, b有q种选择, 则 | S | p q 注:乘法原理是加法原理的一个推论(可以证明)。
计数问题的类型

对元素的有序的摆放数或有序的选择数 进行计数

没有重复如何元素 允许元素重复(但可能是有效次重复)

对元素的无序的摆放数或无序的选择数 进行计数


没有重复如何元素 允许元素重复(但可能是有效次重复)
Dept of Computer Science and Engineering, Shanghai Jiaotong University
12
2013-7-4
生成排列

问题:从已知排列出发,生成新的排列 n 目的:提高效率,减少开销

n n个元素的排列的个数太多,! ~ (Stirling公式)
序数法

n 2 n e

任务:寻找好的算法

如十进制、二进制,或递增、递减进制 n 1 n m ai i! ( a n 1 , a n 2 , , a1 ) m a k n! ( a 2 , a3 , , a n ) 11 k 2 k!
6
2013-7-4
排列、组合问题




[定义]从n个不同的元素中,取r个不重复的元素,按次 序排列,称为从n个中取r个的无重排列。 排列的全体组成的集合用P(n,r)表示。排列的个数用 P(n,r)表示。当r=n时称为全排列。 [定义]从n个不同元素中取r个不重复的元素组成一个子 集,而不考虑其元素的顺序,称为从n个中取r个的无 重组合。 组合的全体组成的集合用C(n,r)表示,组合的个数用 C(n,r)或 n 表示。
找出比右边数字小的第一个数4
大于4的用橙色表示 为后缀 小于4的用绿色表示
接上前缀83965得到839651247 在后缀7521中找出比4大的数 7 将此后缀翻转 后缀变为7421 找出其中比4大的最小数 5 4 、5 对换 即839647521的下一个。
注:本讲义中的动画部分摘自他人的讲义
5
字典序法举例

|S1|=1;|S2|=17:个位是5有8种,十位是5有9种 |S3|=225:个位是5有8x9种,十位是5有8x9种,百位是5有 9x9种;|S4|=2763
Dept of Computer Science and Engineering, Shanghai Jiaotong University

字典序法

123,132,213,231,312,321
Dept of Computer Science and Engineering, Shanghai Jiaotong University
13
2013-7-4
字典序法举例
[例] 求839647521的下一个排列 7 5 2 14 7 8396 5 7 4 21 12 5 4<5 4< 4>1 4>27
r
2013-7-4
Dept of Computer Science and Engineering, Shanghai Jiaotong University
7
组合vs.排列



从n个中取r个的排列的典型例子是从n个不同的球中,取 出r个,放入r个不同的盒子里,每盒1个。第1个盒子有n种 选择,第2个有n-1种选择,……,第r个有n-r+1种选择。 故有P(n,r)=n(n-1)……(n-r+1) 有时也用[n]r记n(n1)……(n-r+1) 若球不同,盒子相同,则是从n个中取r个的组合的模 型。若放入盒子后再将盒子标号区别,则又回到排列 模型。每一个组合可有r!个标号方案。 故有C(n,r)· r!=P(n,r),
字典序法举例
由中介数推出排列的算法
[例] 由72642321推算出839647521 P1 P2 P3 P4 P5 P6 P7 P8 P9 方法1: _ _ _ _ _ _ _ _ 1 8 3 9 6 4 7 5 2 _ ↑ ↑
1+1=2 → PP=2 2+1=3 7+1=8 → 8P1=8 7 2=3 这个过程比较麻烦(这酝酿着改进的可能), 3+1=4,但3,4已经在P 2+1=3,但3已经在P5 6左边出现, 4+1=5,但3已经在P4左边出现, 6+1=7,但3已在P3左边出现, 该算法从左到右依次推出P6左边出现, 7+1=8,但8已在P3左边出现, 9。 3+1=4,但4已经在P7左边出现, 4+1+1=6,但6已经在P 1,P2,…,P 3+1=4 → 4=4 5+1=6 → PP=6 9=1 下述算法依次定出1,2,3,…,9的位置。 8+1=9 →PP=9 4+1=5 6+1=7 → 3 6=7 7=5
Combinatorics
组合数学
陈克非 上海交通大学计算机科学与工程系
Kfchen@mail.sjtu.edu.cn http://202.120.15.46/
第二章:排列组合

加法法则、乘法法则 排列、组合

举例 字典排序法 邻位互换法

排列、组合生成


注记
Dept of Computer Science and Engineering, Shanghai Jiaotong University


n个顶点树的数目=序列b1, b2, …,bn-2 (0<b<=n)的数 目 相应序列的数目为nn-2

注:一个问题与另一个问题1-1对应,则可将一 个问题转化为另一个问题来处理。在处理组合 计数问题时,常常通过问题的1-1对应实现模型 的转换,以便于问题的求解。
Dept of Computer Science and Engineering, Shanghai Jiaotong University

由序列形成树的过程:




给定序列31551(1) 从序列1234567(2)中找第一个不在(1)出现的 数“2”,建立边“(2,3)” 得到1551(1’)及134567(2’),类似得到边 (3,1) 再得到551(1’’)及14567(2’’)依此类推得 到边(4,5),(6,5),(7,1) 最后序列(2)中剩下的2个数构成最后的边(1,5)
Dept of Computer Science and Engineering, Shanghai Jiaotong University
9

解:

2013-7-4
树的数目


图论问题:对n个顶点v1, v2, …,vn用n-1条边连 接起来,问有多少种方案? 例,给定一棵有标号 的树,边上的标号表 示摘去叶的顺序(摘 去一个叶子相应去掉一条边) 逐个摘去标号最小的叶子,叶子的相邻顶点形 成一个序列,序列的长度为n-2
5
2013-7-4
举例

例1. 在1000和9999有多少具有不同数字的奇数?

有个、十、百、千4个位置可以选择

个位:1,3,5,7,9有5种选择 千位:剩下8种选择 十/百位:8种选择,剩下一位只有7种选择

共计5x8x8x7=2240种 选择顺序影响乘法原理的使用

例2. 在0和10000之间整数恰好有一位数字是5? Si是i 位数集合(i=1,2,3,4)

橘子{0,1,2,3,4,5,6} 苹果{0,1,2,3,4,5,6,7,8,9} 不同组合7x10=70 除去(0,0)的情况,有69种可能
Dept of Computer Science and Engineering, Shanghai Jiaotong University
4
2013-7-4
注:本讲义中的动画部分摘自他人的讲义
字典序法举例
一般而言,对于[1,9]的全排列中介 数首位的取值为0—8,第2位的取 值为0—7,以此类推,第8位的取 值为0、1。从而序号可表示为:
∑ki(n-i)!
i=1 n-1
ki:Pi的右边比Pi小的数的个数 i=1,2,…,n-1
注:本讲义中的动画部分摘自他人的讲义

Hale Waihona Puke Baidu
2013-7-4
第一次摘掉②,③为②相邻的顶点,得到序列的第 一个数3,以此类推,得到序列31551,长度为7-2=5,这 是由树形成序列的过程。 Shanghai Jiaotong University Dept of Computer Science and Engineering, 10
n顶点树与n-2序列的对应
Dept of Computer Science and Engineering, Shanghai Jiaotong University

2013-7-4
这表明, n顶点树与n-2序列建立了1-1对应
11
Cayley定理


定理:n个有标号的顶点的树的数目等于nn-2 证明:由1-1对应关系知
Dept of Computer Science and Engineering, Shanghai Jiaotong University
3
2013-7-4
举例

例1. 两位数中,有多少两位互异且非零的数?

ab为有序对(a,b),a, b 0, a b 共9x8=72

例2. 现有6个橘子,9个苹果,欲组成果篮。要 求果篮非空,有多少种不同的可能?
在[1,n]的全排列中,n n-1 … 321 是最后一个排列,其中介数是(n-1, n-1 n-2,...,3,2,1)其序号为 ∑k×k! k=1
另一方面可直接看出其序号为n!-1
于是n!-1= ∑k×k! 即 n!=∑k×k! +1
k=1 k=1
n-1
n-1
注:本讲义中的动画部分摘自他人的讲义
注:本讲义中的动画部分摘自他人的讲义
字典序法举例
2)计算给定排列的序号
839647521的序号即先于此排列的排列的个数。 将先于此排列的排列按前缀分类。 将8!,7!,…,1!前面的系数抽出,放在一起 前7位是8396475,先于83964752得的排列的个数:1×1! 前6位是839647,先于8396475得的排列的个数:2×2! 前5位是83964,先于839647得的排列的个数:3×3! 前4位是8396,先于83964得的排列的个数:2×4! 前3位是839,先于8396得的排列的个数:4×5! 前2位是83,先于839得的排列的个数:6×6! 第一位是8,先于83得的排列的个数:2×7! 前8位固定,则最后一位也随之固定 前缀先于8的排列的个数:7×8! 72642321 得到 72642321是计算排列839647521的序号的中间环节, 此数的特点: 先于此排列的的排列的个数: 297191 我们称之为中介数。 7×8! +2×7!+6×6! +4×5! +2×4! +3×3! +2×2! +1×1! 7:8的右边比8小的数的个数 1:2的右边比2小的数的个数 2:5的右边比5小的数的个数 3:7的右边比7小的数的个数 2:4的右边比4小的数的个数 4:6的右边比6小的数的个数 6:9的右边比9小的数的个数 2:3的右边比3小的数的个数 ※这是一个很有用的概念。
2013-7-4
Dept of Computer Science and Engineering, Shanghai Jiaotong University
8


问题:求1000!中的尾数有几个零? 分析:一个零对应一对因子2和5


1000以内5的倍数有200个 1000以内25的倍数有40个 1000以内125的倍数有8个 1000以内625的倍数有1个 所以, 1000!中5的幂有200+40+8+1=249个 1000!中2的幂远多于249个 1000!中有249个0
相关文档
最新文档