📐 四阶康托展开
简介
康托展开(Cantor Expansion)是一种将排列映射到自然数的双射方法。四阶康托展开特指对 4 个元素的排列进行编码。
数学原理
康托展开公式:X = a[n-1]×(n-1)! + a[n-2]×(n-2)! + ... + a[1]×1! + a[0]×0!
其中 a[i] 表示在第 i 个位置之后,有多少个比第 i 个位置小的数字。
四阶示例
对于排列 [3, 1, 4, 2]:
- 第 1 位 3:后面有 2 个比 3 小的数 (1,2) → a[3]=2
- 第 2 位 1:后面有 0 个比 1 小的数 → a[2]=0
- 第 3 位 4:后面有 1 个比 4 小的数 (2) → a[1]=1
- 第 4 位 2:后面有 0 个数 → a[0]=0
康托展开值 = 2×3! + 0×2! + 1×1! + 0×0! = 12 + 0 + 1 + 0 = 13
4! = 24 种排列
1234→0 1243→1 1324→2 1342→3
1423→4 1432→5 2134→6 2143→7
2314→8 2341→9 2413→10 2431→11
3124→12 3142→13 3214→14 3241→15
3412→16 3421→17 4123→18 4132→19
4213→20 4231→21 4312→22 4321→23
应用场景