Sistema de numeração unário
# Sistema de numeração unário

O sistema numeral unário é o sistema numeral mais simples para representar números naturais: para representar um número N, um símbolo que representa 1 é repetido N vezes.
No sistema unário, o número 0 (zero) é representado pela cadeia vazia, ou seja, ausência de símbolo. Os números 1, 2, 3, 4, 5, 6,... são representados em unário, respectivamente, como 1, 11, 111, 1111, 11111, 111111,...
Unário é um sistema numérico bijetivo. No entanto, porque o valor de um dígito não depende da sua posição, não é uma forma de notação posicional, e não está claro se seria apropriado dizer que tem uma base (ou "raiz") de 1, como ele se comporta de maneira diferente de todas as outras bases.
O uso de marcas de contagem na contagem é uma aplicação do sistema numérico unário. Por exemplo, usando a marca de registro | (𝍷), o número 3 é representado como |||. Nas culturas da Ásia Oriental, o número 3 é representado como 三, um caractere desenhado com três traços. (Um e dois são representados de forma semelhante.) Na China e no Japão, o caractere 正, desenhado com 5 traços, às vezes é usado para representar 5 como uma contagem.
Os números unários devem ser diferenciados dos repunits, que também são escritos como sequências de unidades, mas têm sua interpretação numérica decimal usual.

## Operações

Adição e subtração são particularmente simples no sistema unário, pois envolvem pouco mais do que concatenação de cadeias. A operação de peso de Hamming ou de contagem de população que conta o número de bits diferentes de zero em uma sequência de valores binários também pode ser interpretada como uma conversão de números unários para binários. No entanto, a multiplicação é mais complicada e tem sido frequentemente usada como caso de teste para o projeto de máquinas de Turing.

## Complexidade

Comparado aos sistemas numéricos posicionais padrão, o sistema unário é inconveniente e, portanto, não é usado na prática para grandes cálculos. Ocorre em algumas descrições de problemas de decisão na ciência da computação teórica (por exemplo, alguns problemas P-completos), onde é usado para diminuir "artificialmente" o tempo de execução ou os requisitos de espaço de um problema. Por exemplo, suspeita-se que o problema de fatoração de inteiros exija mais do que uma função polinomial do comprimento da entrada como tempo de execução se a entrada for dada em binário, mas só precisa de tempo de execução linear se a entrada for apresentada em unário. No entanto, isso é potencialmente enganoso. Usar uma entrada unária é mais lento para qualquer número, não mais rápido; a distinção é que uma entrada binária (ou base maior) é proporcional ao logaritmo de base 2 (ou base maior) do número, enquanto a entrada unária é proporcional ao próprio número. Portanto, embora os requisitos de tempo e espaço de execução em unário pareçam melhores em função do tamanho da entrada, eles não representam uma solução mais eficiente.
Na teoria da complexidade computacional, a numeração unária é usada para distinguir problemas fortemente NP-completos de problemas que são NP-completos, mas não fortemente NP-completos. Um problema no qual a entrada inclui alguns parâmetros numéricos é fortemente NP-completo se permanecer NP-completo mesmo quando o tamanho da entrada é aumentado artificialmente pela representação dos parâmetros em unário. Para tal problema, existem instâncias difíceis para as quais todos os valores dos parâmetros são, no máximo, polinomialmente grandes.

## Aplicações

Além da aplicação em marcas de contagem, a numeração unária é usada como parte de alguns algoritmos de compressão de dados, como a codificação de Golomb. Também constitui a base para os axiomas de Peano para formalizar a aritmética dentro da lógica matemática. Uma forma de notação unária chamada codificação de Church é usada para representar números no cálculo lambda.
Alguns filtros de spam de e-mail marcam as mensagens com vários asteriscos no cabeçalho do e-mail, como X-Spam-Bar ou X-SPAM-LEVEL. Quanto maior o número, maior a probabilidade de o e-mail ser considerado spam. Usar uma representação unária em vez de um número decimal permite que o usuário pesquise mensagens com uma determinada classificação ou superior. Por exemplo, pesquisar por **** gera mensagens com uma classificação de pelo menos 4.