- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
组合数学第4章[生成排列与组合]
第4章 生成排列与组合 §4.1 全排列的生成算法 §4.2 生成组合 §4.1 全排列的生成算法 生成全排列就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。 这里介绍的方法属于邻位对换法。还存在其它生成算法,如字典序法 、 递增进位制数法、递减进位制数法 。 4.1.1 邻位对换法 1. 原理 此方法基于如下事实:如果将n从{1,2,…,n}的一个排列中删除,则得到{1,2,…,n-1}的一个排列。 例如,3,1,2,5,4排列中删除5,得到排列3,1,2,4。 一般地,{1,2,…,n-1}的每个排列都可以通过在{1,2,…,n}的恰好n个排列中删除n得到(n个元素的排列数也是n-1个元素排列数的n倍,n!=n*(n-1)!)。 2. 实施的步骤 由前述原理可归纳地从{1,2,…,n-1}的排列生成{1,2,…,n}的排列,方法是将前者重复n次并将n交错地插入其中。 {1}的排列 {1} {1,2}的排列 1 2 2 1 {1,2,3}的排列 1 2 3 2 3 1 3 1 2 3 2 1 1 3 2 2 1 3 {1,2,3,4}的排列 1 2 3 4 2 3 4 1 3 4 1 2 4 3 2 1 4 1 3 2 2 4 1 3 1 2 4 3 2 3 1 4 3 1 2 4 3 2 4 1 1 4 3 2 4 2 1 3 4 1 2 3 2 4 3 1 3 1 4 2 3 2 1 4 1 3 2 4 2 1 4 3 1 4 2 3 4 2 3 1 4 3 1 2 3 4 2 1 1 3 4 2 2 1 3 4 3. 直接生成全排列的算法 [定义]对排列中的每个元素k,赋予其一个方向: 或 。如果一个整数k的箭头指向一个与其相邻但比它小的整数,则称k是活动的。 例如,对于: 只有6、3、5是活动的。 显然: (1)1不可能是活动的 (2)出来下述情况外,n总是活动的: a. n是排列首位且方向向左; b. n是排列的末位且方向向右。 算法描述: 从 开始。 当存在一个活动的整数时,做: (1)求出最大的活动整数m; (2)交换m和其箭头所指向的与其相邻的整数; (3)将所有满足pm的整数的方向反向。 [例]n=4时的算法。 ←←←← ←←←← ←→←← 1234 3124 2314 ←←←← ←←←← ←→←← 1243 3142 2341 ←←←← ←←←← ←←→← 1423 3412 2431 ←←←← ←←←← ←←→← 4123 4312 4231 →←←← →→←← →←←→ 4132 4321 4213 ←→←← →→←← ←→←→ 1432 3421 2413 ←←→← →←→← ←←→→ 1342 3241 2143 ←←←→ →←←→ ←←→→ 1324 3214 2134 4.1.2 排列的描述 此处介绍用逆序来描述排列的方法。 [定义]若i1i2...in是集合{1,2,...,n}的一个排列。若有kl,但ikil,则(ik,il)称为一个逆序。 例如,31524有4个逆序。 [定义]对排列i1i
文档评论(0)