// Elias Omega —— 面向任意大整數的漸近最優編碼
在大整數上逼近資訊理論的最小位數。
透過遞迴編碼長度,結構優雅且易於推導。
不需額外參數即可編碼任何正整數。
Elias Omega 會不斷遞迴地編碼數字長度,直到得到 1。以 n 為起點,先編碼 log₂(n),再編碼 log₂(log₂(n)),如此反覆直到 1。最終的碼字由這些值依反向順序串接,並在末尾加入 0,得到 log(n) + log(log(n)) + log(log(log(n))) + ... 位元。
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 系列中最進階的編碼方式,透過遞迴地編碼長度來達成漸近最優的碼長。它會先對表示的長度編碼,再對該長度的長度編碼,如此反覆直到 1,因此在面對極大整數時非常高效。
對於很小的整數(< 10),Gamma 通常比較合適;在中等範圍(10–1000)時,Delta 通常更好;當整數非常大(> 1000)時,Omega 的優勢會愈來愈明顯。Omega 使用 log*(n) 等級的迭代,在理論上達成漸近最優表現。
若編碼長度與資訊理論最小長度 log₂(n) 的比值在 n 趨近無窮大時收斂到 1,則稱該編碼為漸近最優。對 Omega 來說,有 length(n)/log₂(n) → 1(n → ∞)。
雖然在理論上最優,Omega 的實作與解碼相對複雜。對實際資料而言,當整數範圍有限時,Exp-Golomb 或 Rice 等更簡單的編碼常常更實用。Omega 更適合用於理論研究以及整數上界未知或極大的情境。