В математике , логике и информатике формальный язык ( набор конечных последовательностей символов, взятых из фиксированного алфавита ) называется рекурсивным, если он является рекурсивным подмножеством множества всех возможных конечных последовательностей в алфавите языка. Эквивалентно, формальный язык является рекурсивным, если существует машина Тьюринга, которая при подаче на вход конечной последовательности символов всегда останавливается и принимает ее, если она принадлежит языку, и останавливается и отклоняет ее в противном случае. В теоретической информатике такие всегда останавливающиеся машины Тьюринга называются тотальными машинами Тьюринга или алгоритмами . [1] Рекурсивные языки также называются разрешимыми .
Понятие разрешимости может быть распространено на другие модели вычислений . Например, можно говорить о языках, разрешимых на недетерминированной машине Тьюринга . Поэтому, когда возможна неоднозначность, синонимом, используемым для «рекурсивного языка», является язык, разрешимый по Тьюрингу , а не просто разрешимый .
Класс всех рекурсивных языков часто называют R , хотя это название также используется для класса RP .
Этот тип языка не был определен в иерархии Хомского . [2] Все рекурсивные языки также рекурсивно перечислимы . Все регулярные , контекстно-свободные и контекстно-зависимые языки являются рекурсивными.
Существует два эквивалентных основных определения понятия рекурсивного языка:
Согласно второму определению, любая проблема принятия решений может быть разрешима путем демонстрации алгоритма для нее, который завершается на всех входах. Неразрешимая проблема — это проблема, которая неразрешима.
Как было отмечено выше, каждый контекстно-зависимый язык является рекурсивным. Таким образом, простым примером рекурсивного языка является множество L={abc, aabbcc, aaabbbccc, ...} ; более формально, множество
является контекстно-зависимым и, следовательно, рекурсивным.
Примеры разрешимых языков, не зависящих от контекста, описать сложнее. Для одного такого примера требуется некоторое знакомство с математической логикой : арифметика Пресбургера — это теория первого порядка натуральных чисел со сложением (но без умножения). В то время как множество правильно сформированных формул в арифметике Пресбургера является контекстно-свободным, каждая детерминированная машина Тьюринга, принимающая множество истинных утверждений в арифметике Пресбургера, имеет худшее время выполнения не менее , для некоторой константы c >0. [3] Здесь n обозначает длину данной формулы. Поскольку каждый контекстно-зависимый язык может быть принят линейным ограниченным автоматом , и такой автомат может быть смоделирован детерминированной машиной Тьюринга с худшим временем выполнения не более для некоторой константы c [ требуется ссылка ] , множество допустимых формул в арифметике Пресбургера не является контекстно-зависимым. С положительной стороны, известно, что существует детерминированная машина Тьюринга, работающая за время, не превышающее трижды экспоненциальную величину от n , которая определяет множество истинных формул в арифметике Пресбургера. [4] Таким образом, это пример языка, который является разрешимым, но не контекстно-зависимым.
Рекурсивные языки замкнуты относительно следующих операций. То есть, если L и P — два рекурсивных языка, то следующие языки также рекурсивны:
Последнее свойство следует из того факта, что разность множеств может быть выражена через пересечение и дополнение.