康托展开

✍ dations ◷ 2025-06-23 04:15:11 #康托展开

康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。

以下称第x个全排列都是指由小到大的顺序。

X = a n ( n 1 ) ! + a n 1 ( n 2 ) ! + + a 1 0 ! {displaystyle X=a_{n}(n-1)!+a_{n-1}(n-2)!+cdots +a_{1}cdot 0!}

其中, a i {displaystyle a_{i}} 为整数,并且 0 a i < i , 1 i n {displaystyle 0leq a_{i}<i,1leq ileq n}

a i {displaystyle a_{i}} 的意义参见举例中的解释部分

例如,3 5 7 4 1 2 9 6 8 展开为 98884。因为X=2*8!+3*7!+4*6!+2*5!+0*4!+0*3!+2*2!+0*1!+0*0!=98884.

解释:

排列的第一位是3,比3小的数有两个,以这样的数开始的排列有8!个,因此第一项为2*8!

排列的第二位是5,比5小的数有1、2、3、4,由于3已经出现,因此共有3个比5小的数,这样的排列有7!个,因此第二项为3*7!

以此类推,直至0*0!

显然,n位(0~n-1)全排列后,其康托展开唯一且最大约为n!,因此可以由更小的空间来储存这些排列。由公式可将X逆推出唯一的一个排列。

既然康托展开是一个双射,那么一定可以通过康托展开值求出原排列,即可以求出n的全排列中第x大排列。

如n=5,x=96时:

首先用96-1得到95,说明x之前有95个排列.(将此数本身减去1)用95去除4! 得到3余23,说明有3个数比第1位小,所以第一位是4.用23去除3! 得到3余5,说明有3个数比第2位小,所以是4,但是4已出现过,因此是5.用5去除2!得到2余1,类似地,这一位是3.用1去除1!得到1余0,这一位是2.最后一位只能是1.所以这个数是45321.

按以上方法可以得出通用的算法。

相关

  • 精神活性物质精神药物(英语:psychoactive drug),又称精神药品(psychopharmaceutical,或psychotropic)。有些精神药品具有医疗和科学价值。一种化学物质的概称,这些物质能够穿越血脑屏障,直接作用
  • 威廉·哈维威廉·哈维(英语:William Harvey,1578年4月1日-1657年6月3日) 英国医生,实验生理学的创始人之一。他根据实验,证实了动物体内的血液循环现象,并阐明了心脏在循环过程中的作用,指出血
  • 法医心理学异常心理学 行为遗传学 生物心理学 心理药物学 认知心理学 比较心理学 跨文化心理学 文化心理学 差异心理学(英语:Differential psychology) 发展心理学 演化心理学 实验心理学
  • 火地省火地、南极和南大西洋诸岛省(西班牙语:Provincia de Tierra del Fuego, Antártida e Islas del Atlántico Sur)简称“火地省”,位于南美洲国家阿根廷南部,地处大火地岛东部,是该
  • 极洞站极洞站(韩语:극동역)是朝鲜民主主义人民共和国咸镜北道化城郡极洞劳动者区的一个铁路车站,属于平罗线。平罗线
  • 平埔客平埔客,或客平埔,是原本居住在台湾平原地区的平埔族群与外来的客家移民历经长时间相处后,透过通婚与社群关系等,逐渐被客家族群同化并融合,成为台湾客家社会的一部分。通常透过姓
  • Game Informer(2012年6月)《Game Informer》(GI)是美国的电子游戏月刊,由GameStop公司经营与发行,内容包含特色报导、游戏新闻、游戏攻略及评论。成立于1991年8月,当时只发行6页的免费杂志。今
  • 李谟李谟,可以指:
  • 玉米爱心基金玉米爱心基金是一个成立于2006年由中国红十字基金会设立的中国第一个由歌迷捐设和命名的专项基金。李宇春为终身代言人。2006年3月19日开始接受捐款。捐款用作救助白血病儿
  • 哨兵 (兵种)哨兵(英语:picket,中文或称“尖兵”)是一个士兵或一小队士兵,位于前线,以警示敌军来袭。 在英文中,可以泛指执行相同功能的任何单位(例如,飞机或船只)。 哨兵(兵种)(英语:Picket,法语: ,