stringtranslate.com

Codificación unaria

La codificación unaria , [nb 1] o sistema de numeración unario y también a veces llamado código termómetro , es una codificación de entropía que representa un número natural , n , con un código de longitud n  + 1 (o n ), generalmente n unos seguidos de un cero (si se entiende por número natural un entero no negativo ) o con n  − 1 unos seguidos de un cero (si se entiende por número natural un entero estrictamente positivo ). Por ejemplo, 5 se representa como 111110 o 11110. Algunas representaciones utilizan n o n  − 1 ceros seguidos de un uno. Los unos y los ceros son intercambiables sin pérdida de generalidad . La codificación unaria es a la vez un código sin prefijo y un código autosincronizado .

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 símbolo por símbolo óptima para tales distribuciones de probabilidad, la codificación 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 mencionado anteriormente.

Código unario en uso hoy en día

Algunos ejemplos de usos del código unario incluyen:

Codificación unaria en redes biológicas

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 del cerebro de los pájaros cantores que desempeña un papel tanto en el aprendizaje como en la producción del canto de los pájaros es el centro vocal superior (CVS ). Las señales de mando para las diferentes notas del canto de los pájaros emanan de diferentes puntos del CVS. Esta codificación funciona como codificación espacial, que es una estrategia eficiente para los circuitos biológicos debido a su inherente simplicidad y robustez.

Códigos unarios de longitud de ejecución estándar

Todos los datos binarios se definen por la capacidad de representar números unarios en longitudes de ejecución alternas de 1 y 0. Esto se ajusta a la definición estándar de unario, es decir, N dígitos del mismo número 1 o 0. Todas las longitudes de ejecución, por definición, tienen al menos un dígito y, por lo tanto, representan números enteros estrictamente positivos .

Se garantiza que estos códigos finalizarán válidamente en cualquier longitud de datos (al leer datos arbitrarios) y en el ciclo de escritura (separado) permiten el uso y la transmisión de un bit adicional (el utilizado para el primer bit) mientras se mantienen longitudes de código unario generales y por entero de exactamente N.

Códigos unarios sin prefijo decodificables de forma única

A continuación se muestra un ejemplo de códigos unarios decodificables de forma única que no es un código de prefijo y no se puede decodificar instantáneamente (se necesita una mirada anticipada para decodificar).

Estos códigos también permiten (al escribir números enteros sin signo) el uso y transmisión de un bit adicional (el que se utiliza para el primer bit). De esta forma, son capaces de transmitir 'm' números enteros * N bits unarios y 1 bit adicional de información dentro de m*N bits de datos.

Códigos unarios simétricos

El siguiente conjunto de códigos unarios es simétrico y se puede leer en cualquier dirección. También se puede decodificar instantáneamente en cualquier dirección.

Códigos unarios canónicos

Para los valores unarios en los que se conoce el máximo, se pueden utilizar códigos unarios canónicos que son de naturaleza algo numérica y diferentes de los códigos basados ​​en caracteres. Se empieza con el número '0' o '-1' ( ) y el número máximo de dígitos, y luego, en cada paso, se reduce el número de dígitos en uno y se aumenta o disminuye el resultado en el número '1'.

Los códigos canónicos pueden requerir menos tiempo de procesamiento para decodificarse cuando se procesan como números y no como cadenas. Si la cantidad de códigos necesarios por longitud de símbolo es diferente de 1, es decir, se requieren más códigos no unarios de cierta longitud, esto se lograría aumentando o disminuyendo los valores numéricamente sin reducir la longitud en ese caso.

Codificación unaria generalizada

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 números enteros de 0 a 15 que requiere solo 7 bits (donde se eligen arbitrariamente tres bits en lugar de uno solo en la codificación unaria estándar para mostrar el número). Tenga en cuenta que la representación es cíclica, donde se utilizan marcadores para representar números enteros mayores en ciclos más altos.

La codificación unaria generalizada requiere que el rango de números a representar esté previamente especificado porque este rango determina la cantidad de bits que se necesitan.

Véase también

Notas

  1. ^ El equivalente del término "codificación unaria" en la literatura científica alemana es " BCD-Zählcode ", que se traduciría como " código de conteo decimal codificado en binario ". No debe confundirse con el término alemán similar " BCD-Code ", que se traduce como código BCD en inglés.

Referencias

  1. ^ Fiete, IR; Seung, HS (2007). "Modelos de redes neuronales de producción, aprendizaje y codificación del canto de las aves". En Squire, L.; Albright, T.; Bloom, F.; Gage, F.; Spitzer, N. (eds.). Nueva enciclopedia de neurociencia . Elsevier .
  2. ^ Moore, JM; et al. (2011). "La convergencia de la vía motora predice el tamaño del repertorio de sílabas en aves oscinas". Proc. Natl. Sci. USA . 108 (39): 16440–16445. Bibcode :2011PNAS..10816440M. doi : 10.1073/pnas.1102077108 . PMC 3182746 . PMID  21918109. 
  3. ^ 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. S2CID  27902257.