> elias | gamma | universal <
// Elias Gamma: código universal para enteros positivos sin parámetros
Código universal
Funciona con cualquier entero positivo sin parámetros adicionales.
Sin prefijo
Ningún código es prefijo de otro, lo que permite una decodificación única.
Asintóticamente óptimo
Se acerca a la compresión óptima para ciertas distribuciones.
>> información técnica
Cómo funciona Elias Gamma:
Elias Gamma codifica un entero positivo n de la siguiente forma: 1) Calcula N = ⌊log₂(n)⌋, 2) Escribe N ceros como código unario, 3) Añade la representación binaria de n (que tiene N+1 bits). El resultado es un código de (2N+1) bits.
Ejemplos de codificación:
n=1: log₂(1)=0 Código: 1 (sin ceros + "1") n=2: log₂(2)=1 Código: 010 (un cero + "10") n=5: log₂(5)=2 Código: 00101 (dos ceros + "101") n=10: log₂(10)=3 Código: 0001010 (tres ceros + "1010") Fórmula de longitud: 2⌊log₂(n)⌋ + 1
Por qué usar Elias Gamma:
- >No requiere parámetros
- >Implementación sencilla
- >Bueno para enteros pequeños
- >Código universal con propiedades teóricas claras
- >Importante en teoría de la información y compresión
>> preguntas frecuentes
¿Qué es la codificación Elias Gamma?
Elias Gamma es un código universal para enteros positivos desarrollado por Peter Elias. Codifica cada entero usando la longitud de su representación binaria en forma unaria, seguida de la representación binaria. Se llama "universal" porque funciona sin conocer la distribución de los datos.
¿Cuándo es eficiente Elias Gamma?
Elias Gamma es más eficiente para enteros que siguen una distribución de ley de potencias (P(n) ∝ n^-2). Utiliza aproximadamente 2log₂(n)+1 bits, por lo que es bueno para valores pequeños pero menos eficiente para valores grandes.
¿Gamma vs Delta vs Omega?
Elias Gamma utiliza 2log₂(n)+1 bits. Delta mejora esto a log₂(n)+2log₂(log₂(n)+1)+1 bits y Omega mejora aún más la eficiencia para números muy grandes. Gamma es el más simple, Delta es mejor para valores medios y Omega para enteros grandes.
¿Dónde se usan los códigos Elias?
Los códigos Elias se utilizan en teoría de la información, investigación en compresión de datos y algunos algoritmos de compresión especializados. Son importantes teóricamente como códigos universales, pero en la práctica se usan menos que Huffman o la codificación aritmética.