康托展开在算法中的应用.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

康托展开在算法中的应用

戴德军

(江苏省靖江高级中学,江苏泰州214500)

摘要:介绍了康托展开的原理,指出了康托展开值是一个数在其全排列中的位次,相当于这个数的

一个HASH值。康托展开的本质是全排列与自然数的双射。在搜索算法中利用康托展开值可以进行判

重,提高空间使用效率。

关键词:康托展开;全排列;判重;HASH值

1概述3康托展开的实现

x

康托展开是一个表达式,它可以把一个整数展开掌握这个原理后,可以很容易编程算出一个数相应

成如公式(1)所示:的康托展开式的值。

x=a(n-1)!+a(n-2)!+…+a(i-1)!+…+a·1!程序主要代码如下:

nn-1i2

+a·0!(1)longcantor(longnum){//求自然数num的康托展开值

1

anlongn,tmp,order;

其中,为整数,并且0≤ai(1≤i≤n)。它的作用是对于

ii

个数的全排列进行状态的压缩和存储,使每一个全排列inta[10];//用于存放自然数的每位数

状态唯一对应于一个HASH值。n=0;

//此处将自然数中的每位数放入数组,a[0]放最高位,

例如,有1~9中9个数的全排列,要对某种状态进

//代码较简单,略

9

行判重时,一般情况下需要开一个空间大小为9的数组

order=0;//用于存放康托展开值

来保存每种状态,但是考虑到全排列中这9个数字互不

for(intk=1;kn;k++){

重复,实际过程中并不需要开这么大的数组,可以利用tmp=0;

9个数字互不重复的特点,使用康托展开压缩判重所用for(intj=k+1;j=n;j++){

的空间,极大地提高空间使用效率。if(a[j]a[k]){

2康托展开的原理tmp++;

康托展开的本质是全排列与自然数的双射,即“一}

一映射”。一个全排列的康托展开总是对应于某个}

文档评论(0)

你就是我的小鱼鱼 + 关注
实名认证
文档贡献者

教师资格证持证人

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

领域认证该用户于2024年10月18日上传了教师资格证

1亿VIP精品文档

相关文档