Codificación unaria

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Entropy encoding

La codificación unaria, 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 un código de longitud n + 1 (o n), normalmente n unos seguidos de un cero (si número natural se entiende como entero no negativo) o con n − 1 unos seguidos de cero (si número natural se entiende como entero estrictamente positivo). Por ejemplo, 5 se representa como 111110 o 11110. Algunas representaciones usan n o n − 1 ceros seguidos de un uno. Los unos y ceros son intercambiables sin pérdida de generalidad. La codificación unaria es tanto un código sin prefijos como un código de sincronización automática.

n (no negativo)n (strictamente positivo)Código de entradaAlternativa
0101
121001
23110001
3411100001
451111000001
56111110000001
6711111100001
781111111000001
89111111110000001
91011111111100000001

La codificación unaria es una codificación óptimamente eficiente para la siguiente distribución de probabilidad discreta

P⁡ ⁡ ()n)=2− − n{displaystyle operatorname {P} (n)=2^{-n},}

para n=1,2,3,...{displaystyle n=1,2,3,...}.

En la codificación símbolo por símbolo, es óptimo para cualquier distribución geométrica

P⁡ ⁡ ()n)=()k− − 1)k− − n{displaystyle operatorname {P} (n)=(k-1)k^{-n},}

para la cual k ≥ φ = 1.61803398879…, la proporción áurea, o, más generalmente, para cualquier distribución discreta para la cual

P⁡ ⁡ ()n)≥ ≥ P⁡ ⁡ ()n+1)+P⁡ ⁡ ()n+2){displaystyle operatorname {P} (n)geq operatorname {P} (n+1)+operatorname {P} (n+2),}

para n=1,2,3,...{displaystyle n=1,2,3,...}. Aunque es la codificación de símbolo por símbolo óptima para estas distribuciones de probabilidad, la codificación Golomb logra una mejor capacidad de compresión para la distribución geométrica porque no considera 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 las distribuciones generales de probabilidad, como en el último caso anterior.

Código unario en uso hoy

Ejemplos de usos de código unario incluyen:

  • En el código Golomb Rice, se utiliza la codificación no irritable para codificar la parte cociente de la palabra código Golomb.
  • En UTF-8, se utiliza una codificación no irritable en el byte líder de una secuencia de varios bytes para indicar el número de bytes en la secuencia para que la longitud de la secuencia pueda determinarse sin examinar los bytes de continuación.
  • Las redes neuronales de formación instantánea utilizan códigos no deseados para una representación eficiente de datos.

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. 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.

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

Todos los datos binarios se definen por la capacidad de representar números unarios en longitudes 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 enteros estrictamente positivos.

nCódigo RLSiguiente código
110
21100
3111000
411110000
51111100000
6111111000 000
711111110000000
81111111100000000
9111111111000
1011111111110000000000
...

Se garantiza que estos códigos terminará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 que se usa para el primer bit) mientras se mantiene longitudes de código unario total y por entero de exactamente N.

Códigos unarios sin prefijo decodificables de forma única

El siguiente es un ejemplo de códigos unarios decodificables de forma única que no es un código de prefijo y no es decodificable instantáneamente (necesita anticipación para decodificar)

nCódigo de entrada Alternativa
11 0
210 01
3100 011
41000 0111
510000 01111
6100000 011111
71000000 0111111
810000000 01111111
9100000000 011111111
101000000 0111111111
...

Estos códigos también (al escribir números enteros sin signo) permiten el uso y la transmisión de un bit adicional (el que se usa para el primer bit). Por lo tanto, son capaces de transmitir 'm' 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 son simétricos y se pueden leer en cualquier dirección. También es instantáneamente decodificable en cualquier dirección.

n (strictamente positivo)Código de entrada Alternativa n (no negativo)
11 0 0
200 11 1
3010 101 2
40110 1001 3
501110 10001 4
6011110 100001 5
70111110 1000001 6
801111110 10000001 7
9011111110 100000001 8
100111111110 1000000001 9
...

Códigos unarios canónicos

Para valores inéditos donde se conoce el máximo, se puede utilizar códigos canónicos siniestros que son de naturaleza algo numérica y diferentes de códigos basados en caracteres. Se trata de empezar con '0' numérico o '-1' (2n− − 1{displaystyle operatorname {2}) y el número máximo de dígitos entonces para cada paso reduciendo el número de dígitos por uno y aumentando/disminuir el resultado por numérico '1'.

nCódigo de entrada Alternativa
11 0
201 10
3001 110
40001 1110
500001 11110
6000001 111110
70001 1111110
800001 11111110
9000001 111111110
100000000000 1111111111

Los códigos canónicos pueden requerir menos tiempo de procesamiento para decodificarse cuando se procesan como números y no como una cadena. Si el número de códigos requeridos por longitud de símbolo es diferente a 1, es decir, se requieren más códigos no unitarios de cierta longitud, estos se lograrían aumentando/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. Aquí hay un ejemplo de codificación unaria generalizada para números enteros del 0 al 15 que requiere solo 7 bits (donde tres bits se eligen arbitrariamente 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.

nCódigo de entradaGeneralizados no
000000000
1100000111
21100001110
311100011100
4111100111000
51111101110000
611111100010111
7111111100101110
81111111101011100
911111111100111001
10111111111101110010
111111111111100100111
1211111111111101001110
13111111111111100011101
141111111111111100111010
1511111111111111101110100

La codificación unaria generalizada requiere que se especifique previamente el rango de números a representar porque este rango determina el número de bits que se necesitan.

Contenido relacionado

Spl (Unix)

spl es el nombre de una colección de rutinas o macros del kernel de Unix utilizadas. para cambiar el nivel de prioridad de interrupción. Históricamente...

Método de Horner

En matemáticas e informática, el método de Horner es un algoritmo para la evaluación de polinomios. Aunque lleva el nombre de William George Horner, este...

Matriz de adyacencia

En teoría de grafos e informática, una matriz de adyacencia es una matriz cuadrada utilizada para representar un gráfico finito. Los elementos de la matriz...

Iteración

Iteración es la repetición de un proceso para generar una secuencia de resultados. Cada repetición del proceso es una sola iteración, y el resultado de...

Lógica de primer orden

Lógica de primer orden: también conocida como lógica de predicados, lógica cuantificacional y cálculo de predicados de primer orden—es una colección...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save