资源描述:
《《排列与组合的生成》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4、计数原理/Counting4.5排列与组合的生成GeneratingPermutationsandCombinations7/25/20211DerenChen,ZhejiangUniv.在实际应用中,往往不仅需要计数,而且要把各种情况都枚举出来。一、字典序排列/lexicographicorderingforpermutation定义:顺序:排列a1,a2,…,an中相邻两数ai<ai+1,称为一个顺序。逆序:排列a1,a2,…,an中相邻两数ai>ai+1,称为一个逆序。7/25/20212DerenChen,ZhejiangUniv.例:排列1
2、32654顺序:13,26,逆序:32,65,54。对n个对象进行全排列,有n!个排列,可以对n个对象加上标记。不失一般性,我们只需对n个自然数{1,2,…,n}进行全排列,枚举出所有的情况。字典序排列算法1.给出初始排列:p1=1,2,3,4,…,n2.若pk已定义(1≤k≤n!-1)pk=a1,a2,…,am,…,an7/25/20213DerenChen,ZhejiangUniv.则按下列规定,定义pk的下一个排列pk+1=b1,b2,…,bm,…,bn(1)寻找am:m=max{j
3、aj<aj+1}即am,am+1是最右面的顺序,自am+
4、1开始均为逆序。(2)给出bi(i=1,2,…,n)a)第m项之前的项不变:b1=a1,b2=a2,…,bm-1=am-1b)bm=min{ap
5、ap>am,p>m)即在am右面大于am的项中选取最小的项作为bm。c)把am,am+1,…,ap-1,ap+1,…,an从小到大排列,送入bm+1,bm+2,…,bn。7/25/20214DerenChen,ZhejiangUniv.例1:设有n=6个数字的排列a1,a2,…,a6为1,2,4,6,5,3,求它的下一个排列。解:1.求m:4,6是最右的顺序,am=4,m=32.定义bi:b1=1,b2=
6、2,在am右边还有6,5,3,其中6和5大于am=4,5是最小的,b3=53.余下a3=4,a4=6,a6=3,从小到大排起来,为3,4,6,即让b4=3,b5=4,b6=6得到1,2,4,6,5,3的下一个排列:1,2,5,3,4,6。7/25/20215DerenChen,ZhejiangUniv.例2:求n=4时{1,2,3,4}的所有排列。解:1234→1243→1324→1342→1423→1432→2134→2143→2314→2341→2413→2431→3124→3142→3214→3241→3412→3421→4123→4132→421
7、3→4231→4312→43217/25/20216DerenChen,ZhejiangUniv.定理一:用字典序排序方法可由1,2,3,…,n的第一个排列1,2,…,n(全顺序)开始,得到n!个排列,且最后一个排列是n,n-1,…,2,1(全逆序)。注:例2中开始的排列与结束时的排列的特征,可用数学归纳法证明,对任意n个数用此算法都能枚举出所有的排列。7/25/20217DerenChen,ZhejiangUniv.二、字典序组合/lexicographicorderingforcombination7/25/20218DerenChen,Zhejian
8、gUniv.字典序组合算法:1.S1={1,2,…,k}2.若Si={a1,a2,…,ak}已得到(1≤i≤Cnk-1)则构造下一个子集Si+1={b1,b2,…,bk}(1)m=max{j
9、aj≠n-(k-j)},即{a1,a2,…aj,…,ak}与{n-k+1,n-k+2,…,n-k+j,…,(n-1),n}比较从右边开始比较第一个不相等的项为am7/25/20219DerenChen,ZhejiangUniv.(2)构造Si+1a)b1=a1,b2=a2,…,bm-1=am-1b)bm=am+1c)bm+1=bm+1,bm+2=bm+1+1
10、,…,bk=bk-1+1注:不用耽心bk会取到大于n的数7/25/202110DerenChen,ZhejiangUniv.例:n=10,k=7。若m=5,则(a1,a2,a3,a4,a5,a6,a7)与(4,5,6,7,8,9,10)比较由于m=5,据算法,a5不会取到8,只能小于8,于是bm=am+1至多是8,a6,a7至多是9和10,不会取到大于10的数。例3:求{1,2,…,10}的6子集,共有C106=210个,当Si={2,3,5,6,9,10}时,求Si+1。7/25/202111DerenChen,ZhejiangUniv.Si={2,3,5
11、,6,9,10}与{5,6,7,8,9,10}比较6