Código unario
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 , la codificación unaria es eficiente y óptima para la siguiente distribución de probabilidad discreta:
En codificación símbolo-a-símbolo, es óptima para cualquier distribución geométrica del tipo:
donde k ≥ φ = 1.61803398879…, el número áureo; o más generalmente, para cualquier distribución discreta donde:
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
editarUna 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
editarReferencias
editar- Khalid Sayood, Data Compression, 3a edición, Morgan Kaufmann.
- Profesor K.R Rao, EE5359:Principles of Digital Video Coding.