Códigos Golomb

Los códigos de Golomb  son una familia de códigos de entropía . El código Golomb también puede significar uno de los representantes de esta familia.

Considere una fuente que genera independientemente números enteros no negativos con probabilidades , donde  es un número positivo arbitrario que no excede 1, es decir, una fuente descrita por una distribución geométrica . Si un entero positivo es tal que

,

entonces el código carácter por carácter óptimo (es decir, el código que asocia cada carácter codificado con una determinada palabra clave) para tal fuente será un código construido de acuerdo con el procedimiento propuesto por Solomon Golomb , según el cual, para cualquier número codificado , con una palabra de código conocida, una notación unaria de un número y un codificado de acuerdo con el procedimiento descrito a continuación, el resto de la división :

  1. Si es una potencia de 2, entonces el código restante es una representación binaria del número , colocado en bits.
  2. Si no es una potencia de 2, se calcula el número . Más lejos:
Si , el código restante es una representación binaria del número , colocado en bits, de lo contrario, el resto se codifica mediante la notación binaria del número , colocado en bits.

Más tarde, R. Gallagher y D. Van Voorhees demostraron que el código propuesto por Golomb es óptimo no solo para un conjunto discreto de valores que satisfacen el criterio anterior, sino también para cualquiera en el que se cumpla la doble desigualdad .

,

donde  es un entero positivo. Como para cualquier siempre hay como máximo un valor que satisface la desigualdad anterior, el procedimiento de codificación de una fuente geométrica propuesto por S. Golomb resulta óptimo para cualquier valor de .

Una versión extremadamente fácil de implementar, pero no siempre óptima, del código Golomb en el caso de que sea una potencia de 2 se denomina código Rice.

Ejemplo

Vamos , se requiere codificar el número .

El valor que satisface la doble desigualdad de Gallagher-Van Voorhees .

De acuerdo con el procedimiento de codificación descrito anteriormente, la palabra clave correspondiente al número codificado 13 se construye como una representación unaria del cociente n/m:

,

(código unario , es decir, q ceros seguidos de uno),

y resto codificado

,

(código , es decir, el propio resto, escrito en bits).

Palabra de código resultante

Véase también

Enlaces