编码 | 解码 | 压缩

> elias | omega | asymptotic <

// Elias Omega —— 面向任意大整数的渐近最优编码

0 字符数
0 字符数

>> 功能亮点

[OPTIMAL]

渐近最优

在大整数上逼近信息论的最小位数。

[RECURSIVE]

递归结构

通过递归地编码长度,结构优雅且易于推理。

[UNIVERSAL]

通用整数码

无需额外参数即可编码任意正整数。

>> 技术细节

Elias Omega 的工作原理

Elias Omega 会不断递归地编码数字长度,直到得到 1。以 n 为起点,先编码 log₂(n),再编码 log₂(log₂(n)),如此反复直到 1。最终的码字由这些值按相反顺序拼接,并在末尾加上 0,从而得到 log(n) + log(log(n)) + log(log(log(n))) + ... 比特。

Omega 编码示例

n=16:
16 → 二进制: 10000(长度 5)
5 → 二进制: 101(长度 3)
3 → 二进制: 11(长度 2)
2 → 二进制: 10(长度 2)
1 → 停止

从后往前构造码字:
从 0 开始(终止符)
前置 10(编码 2)
前置 11(编码 3)
前置 101(编码 5)
前置 10000(编码 16)
结果:10 11 101 10000 0

效率对比:
n=100:Gamma=13,Delta=12,Omega=10 比特
n=1000:Gamma=19,Delta=16,Omega=14 比特

为什么选择 Elias Omega

  • 非常适合极大整数编码
  • 具备理论上的渐近最优性
  • 在整数编码理论中占有重要地位
  • 在极限情况几乎没有冗余比特
  • 递归结构优雅、实现有趣

>> 常见问题

什么是 Elias Omega 编码?

Elias Omega 是 Elias 系列中最复杂的一种编码方式,通过递归地编码长度来获得渐近最优的码长。它会先对表示的长度编码,再对该长度的长度编码,如此反复直到 1,因此对极大整数非常高效。

Omega 与 Gamma、Delta 有什么区别?

对于很小的整数(< 10),Gamma 往往更合适;在中等范围(10–1000)时,Delta 通常更优;当整数非常大(> 1000)时,Omega 的优势会越来越明显。Omega 使用 log*(n) 级别的迭代,在理论上实现渐近最优表现。

什么是“渐近最优”?

如果编码长度与信息论最小长度 log₂(n) 的比值在 n 趋于无穷大时收敛到 1,则称该编码渐近最优。对于 Omega,有 length(n)/log₂(n) → 1(n → ∞)。

既然 Omega 理论上更优,为什么并非处处使用?

尽管在理论上最优,Omega 的实现和解码要复杂得多。对于实际数据中范围有限的整数,Exp-Golomb 或 Rice 等更简单的编码往往更实用。Omega 更适合理论研究以及整数上界未知或非常大的场景。