组合数学(第4章4.2).pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  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文档。上传文档
查看更多
组合数学(第4章4.2).ppt

第四章:生成排列和组合 4.3 生成组合 北京航空航天大学 主要内容 生成组合算法 -字典序(压缩序) -反射Gray序 回顾 集合的排列生成 递归原理 邻位对换法 逆序生成算法 4.3 生成组合 基本概念 集合的组合 - n元集合S={xn?1, ?, x1, x0}的所有组合(子集)共有2n个。(S的幂集2S)。 - 注意到长度为n的二进制数也是2n个,两者有何联系? n元集合S与长度为n的二进制数一一对应。 设计一个算法将S的所有组合列举出来。 例: 生成组合基2算法 初始: an?1?a1a0=0?00 Do while an?1?a1a0?1?11 1)求出使得aj=0的最小整数j 2) 用1替换aj并用0替换每个aj?1,?,a0。 当an?1?a1a0=1?11时算法结束。 算法按二进制数顺序生成,称为n元组字典序。 字典序对应的组合生成 例:集合S={4,3,2,1}的组合生成。 上述生成组合的算法也称为压缩序。 以压缩序生成的相邻组合可能相差较大。是否可以使得相邻的组合尽可能相似? 算法2:反射Gray码序生成算法 特点:使得相邻的组合仅相差一个元素(增加一个或者删除一个)。 如:n(=1,2,3)元集的组合 n=1, ?,{x0} 0 1 n=2, ?,{x0}, {x0, x1}, {x1} 00 0 1 1 1 1 0 n=3 几何表示(Gray序) n阶Gray反射码的归纳定义 1)1阶反射Gray码是 ; 2)设n?1且n?1反射Gray码已经构造;为了构建n阶反射Gray码,首先以n?1阶反射Gray码所给出的顺序列出0和1的n?1-元组,把0添到每个(n?1)元组的开头,然后再反序列出n?1阶反射格雷(Gray)码的全部n?1元组, 并把1加到全部n?1元组的开头. n阶反射Gray码以00?0开始,并以10?0开始结束,形成循环码。 例 以反射Gray码序生成组合算法 初始:an?1?a1a0=0?00 Do while an?1?a1a0?10?0 1)计算?(an?1?a1a0)= an?1+?+a1+a0 2)如果?(an?1?a1a0)是偶数,则改变a0(0变1或1变0) 3)否则,确定这样j,使得aj=1,而对于所有i?j, ai=0,然后改变aj+1. 称为逐次法。 例:逐次法生成反射Gray码 用逐次法生成4阶反射Gray码。 定理4.3.1: 算法的正确性证明 逐次算法产生n阶反射Gray码。 证明:对n归纳证明。 1. n=1时显然成立。 2. 设n?1时,结论成立。 3. 当n时, 分为两种情况: (1)n阶Gray码的前2n-1个组合是由n-1阶Gray码在开头添加0形成,除第2n-1个元组(010…0)外,该算法用于前2n-1?1个元组,与用于n-1阶生成顺序一致(注:前加个0不影响算法)。 对n阶反射码第2n-1个元组(010…0),运用逐次算法:?(010…0)=1,则得到(110…0)正好是2n-1+1个n阶反射Gray码。 (2)考虑n阶反射Gray码后一半前后连续的两个n元组: 1an?2?a1a0 ? 1bn?2?b1b0 那么,在n-1阶反射Gray码中:an?2?a1a0在bn?2?b1b0之后,即 bn?2?b1b0 ? an?2?a1a0 注意到?(1an?2?a1a0)与?(1bn?2?b1b0)奇偶性相反。 1) 若?(1an?2?a1a0)是偶数,那么?(an?2?a1a0)是奇数, ?(bn?2?b1b0)是偶数,由归纳假设: an?2?a1a0由bn?2?b1b0改变b0得到,因此,由算法1an?2?a1a0改变a0得到1bn?2?b1b0。 2) 若?(1an?2?a1a0)是奇数可类似证明。即算法用于1an?2?a1a0得到1bn?2?b1b0 。 由归纳法假设,结论成立。证毕。 例:在8阶反射Gray码中, 确00011100的后继. ?=4是偶数,改变最后一位 ?=3是奇数,而j=3,故改变第4位数,得到: 小结 学习了两种组合生成算法: 压缩序生成算法生成集合的所有组合,按字典序排列。 反射Gray码序逐次生成算法。相邻的组合仅相差一个元素。 两种算法均无需存储先前组合,具有各自特点,可用于解决不同问题。 作业 4.6 练习题 11,12,13,17

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档