// Levenshtein 编码 —— 具有渐近最优性的递归通用整数编码
递归编码“长度的长度”,直到回落到 0。
对于非常大的整数,编码长度逼近理论最小值。
无需预先假设分布,对任意非负整数都适用。
Levenshtein 编码(也称 Levenstein 或 L* 编码)递归地编码整数的二进制长度。对二进制长度为 N 的整数 n:递归编码 C(N-1),追加一个 '1',再追加去掉首位 1 后的 n 的剩余比特。递归在 0 处终止,从而得到渐近最优的通用整数码。
0 → 0 1 → 10 (C(0) + 1 + '') 2 → 110 (C(1) + 1 + '0') 3 → 111 (C(1) + 1 + '1') 4 → 11000 (C(2) + 1 + '00') 5 → 11001 (C(2) + 1 + '01') 递归结构: C(0) = '0' C(1) = C(0) + 1 = '01' → '1' C(2) = C(1) + 1 + '0' = '110' C(3) = C(1) + 1 + '1' = '111'
Levenshtein 编码(不要与 Levenshtein 距离混淆)是一种对整数长度进行递归编码的通用码。它由 Vladimir Levenshtein 提出,对大整数在信息论意义下是渐近最优的。
该编码递归地编码“比特长度减一”。要对具有 N 位二进制长度的 n 进行编码,先编码 (N-1),再追加 '1',最后追加 n 的后 (N-1) 位。递归在 0 处结束,0 被编码为 '0'。
Levenshtein 编码与 Elias Omega 一样在渐近意义上最优,但采用了不同的递归结构。相比 Elias Gamma/Delta,它更复杂,但在极大整数上可以获得更好的压缩率。
Levenshtein 编码主要用于信息论和 Kolmogorov 复杂度等领域的理论研究。实际工程中较少直接使用,但非常适合展示“最优通用编码”的核心思想。