Унарная система счисления является простейшей системой счисления для представления натуральных чисел : [1] чтобы представить число N , символ, представляющий 1, повторяется N раз. [2]
В унарной системе число (ноль) представлено пустой строкой , то есть отсутствием символа. Числа 1, 2, 3, 4, 5, 6, ... представлены в унарной системе как 1, 11, 111, 1111, 11111, 111111, ... [3]
Унарная система счисления является биективной . Однако, хотя ее иногда описывают как «основание 1», [4] она отличается в некоторых важных отношениях от позиционных обозначений , в которых значение цифры зависит от ее положения в числе. Например, унарная форма числа может быть экспоненциально длиннее, чем его представление в других основаниях. [5]
Использование меток счета при счете является применением унарной системы счисления. Например, при использовании метки счета | (𝍷) число 3 представляется как ||| . В восточноазиатских культурах число 3 представляется как 三, иероглиф, нарисованный тремя чертами. [6] (Один и два представляются аналогично.) В Китае и Японии иероглиф 正, нарисованный пятью чертами, иногда используется для представления числа 5 в качестве счета. [7] [8]
Унарные числа следует отличать от репьюнитов , которые также записываются в виде последовательностей единиц, но имеют обычную десятичную числовую интерпретацию.
Сложение и вычитание особенно просты в унарной системе, поскольку они требуют немного больше, чем просто конкатенации строк . [9] Операция подсчета веса Хэмминга или популяции, которая подсчитывает количество ненулевых битов в последовательности двоичных значений, также может быть интерпретирована как преобразование из унарных в двоичные числа . [10] Однако умножение более громоздко и часто использовалось в качестве тестового случая для проектирования машин Тьюринга . [11] [12] [13]
По сравнению со стандартными позиционными системами счисления , унарная система неудобна и, следовательно, не используется на практике для больших вычислений. Она встречается в некоторых описаниях задач принятия решений в теоретической информатике (например, некоторые P-полные задачи), где она используется для «искусственного» уменьшения времени выполнения или требований к пространству для задачи. Например, предполагается, что задача целочисленной факторизации требует больше, чем полиномиальная функция длины входных данных в качестве времени выполнения, если входные данные заданы в двоичном виде , но ей требуется только линейное время выполнения, если входные данные представлены в унарных числах. [14] Однако это может ввести в заблуждение. Использование унарных входных данных медленнее для любого заданного числа, а не быстрее; различие заключается в том, что двоичные (или с большим основанием) входные данные пропорциональны логарифму числа по основанию 2 (или большему основанию), в то время как унарные входные данные пропорциональны самому числу. Поэтому, хотя время выполнения и требования к пространству в унарных числах выглядят лучше как функция размера входных данных, они не представляют собой более эффективного решения. [15]
В теории вычислительной сложности унарная нумерация используется для различения сильно NP-полных задач от задач, которые являются NP-полными , но не сильно NP-полными. Задача, в которой входные данные включают некоторые числовые параметры, является сильно NP-полной, если она остается NP-полной даже при искусственном увеличении размера входных данных путем представления параметров в унарной форме. Для такой задачи существуют сложные примеры, для которых все значения параметров не более чем полиномиально велики. [16]
Помимо применения в подсчетах, унарная нумерация используется как часть некоторых алгоритмов сжатия данных, таких как кодирование Голомба . [17] Она также формирует основу для аксиом Пеано для формализации арифметики в математической логике . [18] Форма унарной нотации, называемая кодированием Чёрча, используется для представления чисел в лямбда-исчислении . [19]
Некоторые фильтры спама в электронной почте помечают сообщения несколькими звездочками в заголовке электронной почты , такими как X-Spam-Bar или X-SPAM-LEVEL . Чем больше число, тем больше вероятность, что электронное письмо будет считаться спамом. Использование унарного представления вместо десятичного числа позволяет пользователю искать сообщения с заданным рейтингом или выше. Например, поиск **** выдает сообщения с рейтингом не менее 4. [20]