El sistema de numeración unario es el sistema de numeración más simple para representar números naturales : [1] para representar un número N , se repite N veces un símbolo que representa 1. [2]
En el sistema unario, el número (cero) se representa con la cadena vacía , es decir, la ausencia de símbolo. Los números 1, 2, 3, 4, 5, 6, ... se representan en el unario como 1, 11, 111, 1111, 11111, 111111, ... [3]
El sistema unario es un sistema de numeración biyectivo . Sin embargo, aunque a veces se lo ha descrito como de "base 1", [4] difiere en algunos aspectos importantes de las notaciones posicionales , en las que el valor de un dígito depende de su posición dentro de un número. Por ejemplo, la forma unaria de un número puede ser exponencialmente más larga que su representación en otras bases. [5]
El uso de marcas de conteo en el conteo es una aplicación del sistema de numeración unario. Por ejemplo, utilizando la marca de conteo | (𝍷), el número 3 se representa como ||| . En las culturas del este de Asia , el número 3 se representa como 三, un carácter dibujado con tres trazos. [6] (El uno y el dos se representan de manera similar). En China y Japón, el carácter 正, dibujado con 5 trazos, a veces se utiliza para representar el 5 como una marca de conteo. [7] [8]
Los números unarios deben distinguirse de los números repunitarios , que también se escriben como secuencias de unos pero tienen su interpretación numérica decimal habitual .
La suma y la resta son particularmente simples en el sistema unario, ya que implican poco más que la concatenación de cadenas . [9] La operación de peso de Hamming o de conteo de población que cuenta el número de bits distintos de cero en una secuencia de valores binarios también puede interpretarse como una conversión de números unarios a binarios . [10] Sin embargo, la multiplicación es más engorrosa y a menudo se ha utilizado como un caso de prueba para el diseño de máquinas de Turing . [11] [12] [13]
Comparado con los sistemas de numeración posicional estándar , el sistema unario es inconveniente y por lo tanto no se utiliza en la práctica para cálculos grandes. Aparece en algunas descripciones de problemas de decisión en informática teórica (por ejemplo, algunos problemas P-completos ), donde se utiliza para disminuir "artificialmente" los requisitos de tiempo de ejecución o espacio de un problema. Por ejemplo, se sospecha que el problema de la factorización de enteros requiere más que una función polinómica de la longitud de la entrada como tiempo de ejecución si la entrada se da en binario , pero solo necesita un tiempo de ejecución lineal si la entrada se presenta en unario. [14] Sin embargo, esto es potencialmente engañoso. El uso de una entrada unaria es más lento para cualquier número dado, no más rápido; la distinción es que una entrada binaria (o de base mayor) es proporcional al logaritmo de base 2 (o de base mayor) del número, mientras que la entrada unaria es proporcional al número mismo. Por lo tanto, si bien el requisito de tiempo de ejecución y espacio en unario parece mejor como función del tamaño de la entrada, no representa una solución más eficiente. [15]
En la teoría de la complejidad computacional , la numeración unaria se utiliza para distinguir los problemas fuertemente NP-completos de los problemas que son NP-completos pero no fuertemente NP-completos. Un problema en el que la entrada incluye algunos parámetros numéricos es fuertemente NP-completo si permanece NP-completo incluso cuando el tamaño de la entrada se hace artificialmente más grande al representar los parámetros en unario. Para un problema de este tipo, existen casos difíciles para los cuales todos los valores de los parámetros son, como máximo, polinomialmente grandes. [16]
Además de su aplicación en marcas de conteo, la numeración unaria se utiliza como parte de algunos algoritmos de compresión de datos como la codificación de Golomb . [17] También constituye la base de los axiomas de Peano para formalizar la aritmética dentro de la lógica matemática . [18] Una forma de notación unaria llamada codificación de Church se utiliza para representar números dentro del cálculo lambda . [19]
Algunos filtros de correo no deseado etiquetan los mensajes con una cantidad de asteriscos en el encabezado del correo electrónico, como X-Spam-Bar o X-SPAM-LEVEL . Cuanto mayor sea el número, más probable es que el correo electrónico se considere spam. El uso de una representación unaria en lugar de un número decimal permite al usuario buscar mensajes con una calificación determinada o superior. Por ejemplo, la búsqueda de **** da como resultado mensajes con una calificación de al menos 4. [20]