.5组合数学之全排列的生成算法.pptVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.5 全排列的生成算法 1.5.2递增进位制数法 可看出n-1位的进位链。 右端位逢2进1,右起第2位逢3进1,…, 右起第i位逢i+1进1,i=1,2,…,n-1. 这样的中介数我们称为递增进位制数。 上面是由中介数求排列。 1.5.2递增进位制数法 1.5.4邻位对换法 Yiqiang Wei weiyiqiang@tyut.edu.cn 1.2 一一对应原理 1.5 全排列的生成算法 全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。 这里介绍全排列算法四种: (A)字典序法 (B)逆序数法 (C)递减进位制数法 (D)邻位对换法 1.5 全排列的生成算法 1.5.1字典序法 字典序:设字符集A={a1,a2,…,an}有序:≤ a1≤a2≤…≤an 则字符串集Σ={p1p2…pm| pi∈A,m ∈N} 按下列方式定义的序称为字典序: p1p2…pm ≤ q1q2…ql 当且仅当 p1=q1,p2=q2,…,pm =qm 或存在k ≤m-1,使得 p1=q1,…,pk=qk,pk+1 ≤qk+1 1.5 全排列的生成算法 ※※ 按字典序规定两个全排列的先后是从左到右逐个比较对应的字符的先后。 字典序法:一个全排列可看做一个字符串,按字典序给出全排列的序称为字典序法 例如,字符集{1,2,3},较小的数字较先,这样按字典序生成的全排列顺序是: 123,132,213,231,312,321。 ※※ 两个字符串,相同前缀越长的越靠近。 1.5 全排列的生成算法 如何生成给定全排列的下一个排列 所谓一个的下一个就是这一个与下一个之间没有其他的。这就要求这一个与下一个有尽可能长的共同前缀,也即变化限制在尽可能短的后缀上。 例如 839647521是1--9的排列。1—9的排列最前面的是123456789,最后面的是987654321,从右向左扫描若都是增的,就到了987654321,也就没有下一个了。否则找出第一次出现下降的位置。 在839647521中从右向左第一个小于右边数字的是元素4 7 5 2 1 7 4<7 45 5 42 2 41 1 在后缀7521中找出比4大的数 7 5 找出其中比4大的最小数 5 5 4 、5 对换 8396 7 21 5 4 后缀变为7421 将此后缀翻转 12 4 7 接上前缀83965得到839651247 即839647521的下一个排列为839651247 。 为后缀 大于4的用橙色表示 小于4的用绿色表示 1.5 全排列的生成算法 1.5 全排列的生成算法 首先,在排列中从右向左找出第一个小于右边元素的元素,记为 a 。右边部分构成后缀。 由字典序法产生下一个排列的步骤 其次,在后缀找出大于 a 的最小元素,记为 b 第三,对换元素 a 与 b 最后,对新的后缀进行翻转,得到所求。 1.5 全排列的生成算法 由字典序法产生下一个排列的步骤 例1 在字典序下求731598642的下一个排列 在[1,n]的全排列中,n n-1 … 321是最后一个排列,其中介数是(n-1, n-2,...,3,2,1)其序号为 n-1 ∑k×k! k=1 另一方面可直接看出其序号为n!-1 n-1 n-1 于是n!-1= ∑k×k! 即 n!=∑k×k! +1 k=1 k=1 1.5.1字典序法 一般而言,设P是[1,n]的一个全排列。 P=P1P2…Pn=P1P2…Pj-1PjPj+1…Pk-1PkPk+1…Pn j=max{i|PiPi+1},k=max{i|PiPj} 对换Pj,Pk,将Pj+1…Pk-1PjPk+1…Pn翻转, P’= P1P2…Pj-1PkPn…Pk+1PjPk-1…Pj+1即P的下一个 1.5.1字典序法 2)计算给定排列的序号 839647521的序号即先于此排列的排列的个数。 将先于此排列的排列按前缀分类。 前缀先于8的排列的个数:7×8! 第一位是8,先于83得的排列的个数:2×7! 前2位是83,先于839得的排列的个数:6×6! 先于此排列的的排列的个

文档评论(0)

***** + 关注
实名认证
文档贡献者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档