stringtranslate.com

Унарный язык

В теории вычислительной сложности унарный язык или язык подсчета — это формальный язык (набор строк ), где все строки имеют вид 1 k , где «1» может быть любым фиксированным символом. Например, язык {1, 111, 1111} является унарным, как и язык {1 k  |  k is prime }. Класс сложности всех таких языков иногда называется TALLY .

Название «унарный» происходит от того факта, что унарный язык является кодировкой множества натуральных чисел в унарной системе счисления . Поскольку вселенная строк над любым конечным алфавитом является счетным множеством , каждый язык может быть отображен в уникальное множество A натуральных чисел; таким образом, каждый язык имеет унарную версию {1 k  |  k в A}. И наоборот, каждый унарный язык имеет более компактную двоичную версию, множество двоичных кодировок натуральных чисел k, таких что 1 k находится в языке.

Так как сложность обычно измеряется в терминах длины входной строки, унарная версия языка может быть «проще» исходного языка. Например, если язык может быть распознан за время O(2 n ), его унарная версия может быть распознана за время O( n ), потому что n стало экспоненциально больше. В более общем смысле, если язык может быть распознан за время O(f( n )) и пространство O(g( n )) , его унарная версия может быть распознана за время O( n + f(log n )) и пространство O(g(log n )) (нам требуется время O( n ) только для чтения входной строки). Однако, если принадлежность к языку неразрешима , то принадлежность к его унарной версии также неразрешима.

Связь с другими классами сложности

TALLY содержится в P/poly — классе языков, которые могут быть распознаны за полиномиальное время с помощью функции advice, зависящей только от длины входных данных. В этом случае требуемая функция advice очень проста — она возвращает один бит для каждой длины входных данных k, определяя, содержится ли 1 k в языке или нет.

Унарный язык обязательно является разреженным языком , поскольку для каждого n он содержит не более одного значения длины n и не более n значений длины не более n , но не все разреженные языки являются унарными; таким образом, TALLY содержится в SPARSE .

Считается, что не существует NP-полных унарных языков: если существует унарный язык, который является NP-полным , то P = NP . [1]

Этот результат можно распространить на редкие языки. [2]

Если L — унарный язык, то L* ( звезда Клини языка L ) — регулярный язык . [3]

Подсчет классов

Класс сложности P 1 — это класс унарных языков, которые могут быть распознаны полиномиальной машиной Тьюринга (при условии, что ее входные данные записаны в унарной форме); это аналог класса P . Аналогом NP в унарной форме является NP 1 . Также известен подсчетный класс #P 1 , аналог #P . [4]

Ссылки

Примечания

  1. ^ Петр Берман. Связь между плотностью и детерминированной сложностью NP-полных языков. В трудах 5-й конференции по автоматам, языкам и программированию , стр. 63–71. Springer-Verlag. Lecture Notes in Computer Science #62 . 1978.
  2. ^ SR Mahaney. Разреженные полные множества для NP: Решение гипотезы Бермана и Хартманиса. Журнал компьютерных и системных наук 25:130-143. 1982.
  3. ^ "Звезда Клини бесконечного унарного языка всегда дает регулярный язык". Computer Science Stack Exchange . Получено 19 октября 2014 г.
  4. ^ Лесли Валиант , Сложность проблем перечисления и надежности , [1]Значок закрытого доступа

Общие ссылки