排列组合的生成.ppt
《排列组合的生成.ppt》由会员分享,可在线阅读,更多相关《排列组合的生成.ppt(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、排列组合的生成 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望1.全排列的生成算法全排列的生成算法全排列的生成算法就是对于给定的字符集,用有全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列效的方法将所有可能的全排列无重复无遗漏无重复无遗漏地枚地枚举出来。举出来。这里介绍这里介绍4种全排列算法:种全排列算法:(A)直接生成法直接生成法(B)序数法序数法(C)字典序法字典序法(D)换位法换位法递推算法:递推算法:假设已经生成假设已经生成n-1个数的
2、所有个数的所有(n-1)!个全排列,个全排列,将将n插入到每一个排列的前面、第插入到每一个排列的前面、第12之间、第之间、第23之之间、。间、。最后,即得到最后,即得到n个数的所有个数的所有n(n-1)!=n!个全排列。个全排列。优点是生成简便,缺点是速度慢。优点是生成简便,缺点是速度慢。(A)直接生成法直接生成法n的的p进制表示:进制表示:(B)序数法序数法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)
3、(n-2)!+22!+2!不难证明,从不难证明,从0到到n!-1的任何数的任何数m可唯一的表示为可唯一的表示为其中其中所以从所以从0到到n!-1的的n!个整数与个整数与(an-1,an-2,a2,a1)一一对应。一一对应。从从m计算出计算出an-1,an-2,a2,a1的算法如下:的算法如下:.反过来反过来,由由(a3,a2,a1)=(301)也可以得到排列也可以得到排列4213,下面我们试图将下面我们试图将n-1个元素的序列个元素的序列(an-1,a1)与与n个个元素的排列建立起一一对应关系。元素的排列建立起一一对应关系。例如:例如:p p=4213(a3,a2,a1)=(301)序列序列(
4、an-1,a1)与某一排列与某一排列p p=p1p2pn之间的对应之间的对应关系为:关系为:ai 表示排列表示排列p p中的数中的数i+1所在位置的右边比它小的数所在位置的右边比它小的数的个数。的个数。_ _ _ _432 1而而a2=0,说明说明3的右边没有比它更小的,故的右边没有比它更小的,故3放在最放在最右端,右端,考虑考虑a1=1,容易得出,容易得出,2右边还有一个空格放右边还有一个空格放1,于是,于是得到了排列得到了排列4213。由由a3=3,知知4放在空格的最左端放在空格的最左端,这个算法的这个算法的优点优点是建立了自然序数和排列之间的是建立了自然序数和排列之间的一一一对应一对应关
5、系关系(通过通过n-1个元素的序列个元素的序列(an-1,a1)。缺点缺点是这种对应关系需要通过序列转换,即是这种对应关系需要通过序列转换,即两层对两层对应关系,多一层计算量应关系,多一层计算量。一个全排列可看做一个字符串,字符串可有一个全排列可看做一个字符串,字符串可有前缀、前缀、后缀后缀。关键是如何生成给定全排列的关键是如何生成给定全排列的下一个排列下一个排列。(C)字典序法字典序法字典序字典序:对于两个序列:对于两个序列a1ak和和b1bk,若存在,若存在t,使得使得ai=bi,it,但,但atbt,则称,则称例如对于字符集例如对于字符集1,2,3,较小的数字较先,这样,较小的数字较先,
6、这样按字典序生成的全排列是:按字典序生成的全排列是:123,132,213,231,312,321所谓一个的下一个就是这一个与下一个之间没有其所谓一个的下一个就是这一个与下一个之间没有其他的。这就要求这一个与下一个有尽可能长的共同他的。这就要求这一个与下一个有尽可能长的共同前缀,也即变化限制在尽可能短的后缀上。前缀,也即变化限制在尽可能短的后缀上。839647521的下一个为的下一个为839651247。例如:例如:839647521是是1-9的一个排列,求出下一个。的一个排列,求出下一个。(1-9的排列最前面的是的排列最前面的是123456789,最后面的是,最后面的是987654321,从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排列组合 生成
限制150内