La codificación unaria , [nb 1] o el sistema numérico unario y también llamado a veces código de termómetro , es una codificación de entropía que representa un número natural , n , con n unos seguidos de un cero (si el número natural se entiende como un entero no negativo ) o con n - 1 unos seguidos de un cero (si el número natural se entiende como un entero estrictamente positivo ). Por ejemplo, 5 se representa como 111110 o 11110. Algunas representaciones usan n o n - 1 ceros seguidos de uno. Los unos y los ceros son intercambiables sin pérdida de generalidad . La codificación unaria es tanto un código sin prefijo como un código de sincronización automática .
n (no negativo) | n (estrictamente positivo) | Código unario | Alternativa |
---|---|---|---|
0 | 1 | 0 | 1 |
1 | 2 | 10 | 01 |
2 | 3 | 110 | 001 |
3 | 4 | 1110 | 0001 |
4 | 5 | 11110 | 00001 |
5 | 6 | 111110 | 000001 |
6 | 7 | 1111110 | 0000001 |
7 | 8 | 11111110 | 00000001 |
8 | 9 | 111111110 | 000000001 |
9 | 10 | 1111111110 | 0000000001 |
La codificación unaria es una codificación óptimamente eficiente para la siguiente distribución de probabilidad discreta
para .
En la codificación símbolo por símbolo, es óptimo para cualquier distribución geométrica.
para la cual k ≥ φ = 1.61803398879…, la proporción áurea , o, más generalmente, para cualquier distribución discreta para la cual
para . Aunque es la codificación óptima símbolo por símbolo para tales distribuciones de probabilidad, la codificación de Golomb logra una mejor capacidad de compresión para la distribución geométrica porque no considera los símbolos de entrada de forma independiente, sino que agrupa implícitamente las entradas. Por la misma razón, la codificación aritmética funciona mejor para distribuciones de probabilidad generales, como en el último caso anterior.
Código unario en uso hoy [ editar ]
Ejemplos de usos de código unario incluyen:
- En el código de Golomb Rice , la codificación unaria se utiliza para codificar la parte del cociente de la palabra de código de Golomb.
- En UTF-8 , la codificación unaria se usa en el byte inicial de una secuencia de múltiples bytes para indicar el número de bytes en la secuencia de modo que la longitud de la secuencia se pueda determinar sin examinar los bytes de continuación.
- Las redes neuronales entrenadas instantáneamente utilizan codificación unaria para una representación de datos eficiente.
Codificación unaria en redes biológicas [ editar ]
La codificación unaria se utiliza en los circuitos neuronales responsables de la producción del canto de los pájaros . [1] [2] El núcleo en el cerebro de los pájaros cantores que juega un papel tanto en el aprendizaje como en la producción del canto de los pájaros es el HVC ( centro vocal alto ). Las señales de comando para diferentes notas en el canto de los pájaros emanan de diferentes puntos en el HVC. Esta codificación funciona como codificación espacial, que es una estrategia eficiente para los circuitos biológicos debido a su simplicidad y robustez inherentes.
Codificación unaria generalizada [ editar ]
Subhash Kak presentó una versión generalizada de la codificación unaria para representar números de manera mucho más eficiente que la codificación unaria estándar. [3] Aquí hay un ejemplo de codificación unaria generalizada para enteros del 1 al 15 que requiere solo 7 bits (donde se eligen arbitrariamente tres bits en lugar de uno solo en unario estándar para mostrar el número). Tenga en cuenta que la representación es cíclica donde se usan marcadores para representar números enteros más altos en ciclos más altos.
norte | Código unario | Unario generalizado |
---|---|---|
0 | 0 | 0000000 |
1 | 10 | 0000111 |
2 | 110 | 0001110 |
3 | 1110 | 0011100 |
4 | 11110 | 0111000 |
5 | 111110 | 1110000 |
6 | 1111110 | 0010111 |
7 | 11111110 | 0101110 |
8 | 111111110 | 1011100 |
9 | 1111111110 | 0111001 |
10 | 11111111110 | 1110010 |
11 | 111111111110 | 0100111 |
12 | 1111111111110 | 1001110 |
13 | 11111111111110 | 0011101 |
14 | 111111111111110 | 0111010 |
15 | 1111111111111110 | 1110100 |
La codificación unaria generalizada requiere que el rango de números a representar esté preespecificado porque este rango determina el número de bits que se necesitan.
Ver también [ editar ]
Notas [ editar ]
- ^ El equivalente al término "codificación unaria" en la literatura científica alemana es " BCD-Zählcode ", que se traduciría en " código de conteo decimal codificado en binario ". Esto no debe confundirse con el término alemán similar " Código BCD " que se traduce al código BCD en inglés.
Referencias [ editar ]
- ^ Fiete, IR; Seung, HS (2007). "Modelos de redes neuronales de producción, aprendizaje y codificación del canto de los pájaros". En Squire, L .; Albright, T .; Bloom, F .; Gage, F .; Spitzer, N. (eds.). Nueva enciclopedia de neurociencia . Elsevier .
- ^ Moore, JM; et al. (2011). "La convergencia de la vía del motor predice el tamaño del repertorio de sílabas en aves oscine" . Proc. Natl. Acad. Sci. USA . 108 (39): 16440–16445. doi : 10.1073 / pnas.1102077108 . PMC 3182746 . PMID 21918109 .
- ^ Kak, S. (2015). "Codificación unaria generalizada". Circuitos, sistemas y procesamiento de señales . 35 (4): 1419-1426. doi : 10.1007 / s00034-015-0120-7 .