stringtranslate.com

Codificación gamma de Elias

El código de Elias o código gamma de Elias es un código universal que codifica números enteros positivos desarrollado por Peter Elias . [1] : 197, 199  Se utiliza más comúnmente al codificar números enteros cuyo límite superior no se puede determinar de antemano.

Codificación

Para codificar un número x  ≥ 1:

  1. Sea la mayor potencia de 2 que contiene, entonces 2 Nx < 2 N +1 .
  2. Escribe los bits cero y luego
  3. Agregue la forma binaria de , un número binario de -bit.

Una forma equivalente de expresar el mismo proceso:

  1. Codificar en unario ; es decir, como ceros seguidos de un uno.
  2. Añade los dígitos binarios restantes de a esta representación de .

Para representar un número , Elias gamma (γ) utiliza bits. [1] : 199 

El código comienza (se agrega la distribución de probabilidad implícita para mayor claridad):

Descodificación

Para decodificar un entero codificado con gamma de Elias:

  1. Lee y cuenta los 0 del flujo hasta llegar al primer 1. Llama a este conteo de ceros N.
  2. Considerando que el alcanzado es el primer dígito del entero, con valor 2 N , leer los N dígitos restantes del entero.

Usos

La codificación gamma se utiliza en aplicaciones donde el valor codificado más grande no se conoce de antemano, o para comprimir datos [ dudosodiscutir ] en los que los valores pequeños son mucho más frecuentes que los valores grandes.

La codificación gamma es un componente básico del código delta de Elias .

Generalizaciones

La codificación gamma no codifica el cero ni los números enteros negativos. Una forma de manejar el cero es sumar 1 antes de codificar y luego restar 1 después de decodificar. Otra forma es anteponer un 1 a cada código distinto de cero y luego codificar el cero como un solo 0.

Una forma de codificar todos los números enteros es configurar una biyección , asignando los números enteros (0, −1, 1, −2, 2, −3, 3, ...) a (1, 2, 3, 4, 5, 6, 7, ...) antes de codificarlos. En el software, esto se hace más fácilmente asignando entradas no negativas a salidas impares y entradas negativas a salidas pares, de modo que el bit menos significativo se convierta en un bit de signo invertido :

La codificación Golomb exponencial generaliza el código gamma a números enteros con una distribución de ley de potencia "más plana", de la misma manera que la codificación Golomb generaliza el código unario. Implica dividir el número por un divisor positivo, comúnmente una potencia de 2, escribir el código gamma para uno más que el cociente y escribir el resto en un código binario ordinario.

Véase también

Referencias

  1. ^ ab Elias, Peter (marzo de 1975). "Conjuntos de palabras de código universales y representaciones de los números enteros". IEEE Transactions on Information Theory . 21 (2): 194–203. doi :10.1109/tit.1975.1055349.

Lectura adicional