Código unario

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La codificación unaria es una codificación entrópica que representa a un número natural n, como un string de n unos. Por ejemplo, 5 se representa en código unario como 11111. Algunas representaciones utilizan un cero para reemplazar el último uno, de manera de evitar perder ambigüedad al momento de concatenar dos números codificados en unario.

n 1 2 3 4 5 6 7 8 9
codificación 1 11 111 1111 11111 111111 1111111 11111111 111111111

Sea n=1,2,3,..., la codificación unaria es eficiente y óptima para la siguiente distribución de probabilidad discreta:

\operatorname{P}(n) = 2^{-n}\,

En codificación símbolo-a-símbolo, es óptima para cualquier distribución geométrica del tipo:

\operatorname{P}(n) = (k-1)k^{-n}\,

donde k ≥ φ = 1.61803398879…, el número áureo; o más generalmente, para cualquier distribución discreta donde:

\operatorname{P}(n) \ge \operatorname{P}(n+1) + \operatorname{P}(n+2)\,

La codificación aritmética tiene mejor capacidad de compresión para las dos distribuciones mencionadas arriba, porque no consideran símbolos de input independientes, sino grupos de input implícitos.

Usos prácticos[editar]

Una codificación unaria modificada se utiliza en la norma UTF-8. Los códigos unarios se usan también en esquemas split-index como la codificación Golomb-Rice. La codificación unaria es un código prefijo, y puede ser decodificada unívocamente.

Véase también[editar]

Referencias[editar]

  • Khalid Sayood, Data Compression, 3a edición, Morgan Kaufmann.
  • Profesor K.R Rao, EE5359:Principles of Digital Video Coding.