// Elias Omega: código asintóticamente óptimo para enteros arbitrariamente grandes
Se acerca al mínimo teórico para números grandes.
Codifica longitudes de forma recursiva y elegante.
Funciona para cualquier entero positivo sin parámetros adicionales.
Elias Omega codifica recursivamente la longitud de un número hasta llegar a 1. A partir de n se codifica log₂(n), luego log₂(log₂(n)) y así sucesivamente hasta 1. El código se construye con estos valores en orden inverso y termina con 0. Esto produce log(n) + log(log(n)) + log(log(log(n))) + ... bits.
n=16: 16 → binario: 10000 (longitud 5) 5 → binario: 101 (longitud 3) 3 → binario: 11 (longitud 2) 2 → binario: 10 (longitud 2) 1 → fin Construir el código hacia atrás: Empezar con 0 (terminador) Anteponer 10 (codifica 2) Anteponer 11 (codifica 3) Anteponer 101 (codifica 5) Anteponer 10000 (codifica 16) Resultado: 10 11 101 10000 0 Comparar eficiencia: n=100: Gamma=13, Delta=12, Omega=10 bits n=1000: Gamma=19, Delta=16, Omega=14 bits
Elias Omega es el código de Elias más sofisticado y utiliza codificación recursiva de longitudes para lograr optimalidad asintótica. Codifica la longitud de la representación, luego la longitud de esa longitud y así sucesivamente hasta llegar a 1, lo que lo hace muy eficiente para enteros muy grandes.
Para números pequeños (< 10) Gamma suele ser mejor. Para números medios (10–1000) Delta mejora a Gamma. Para números grandes (> 1000) Omega se vuelve cada vez más superior. Omega utiliza iteraciones log*(n) y alcanza un comportamiento óptimo en el límite.
Un código es asintóticamente óptimo si la relación entre su longitud y el mínimo teórico tiende a 1 a medida que los números crecen. Omega cumple esto: length(n)/log₂(n) → 1 cuando n → ∞.
Aunque es teóricamente superior, Omega es más complejo de implementar y decodificar. Para datos reales con enteros acotados, códigos más simples como Exp-Golomb o Rice suelen ser más prácticos. Omega destaca en análisis teórico y escenarios con enteros sin cota superior.