Я должен определить, является ли язык (например, L={a^n b^m c^s | 0‹=n‹=m‹=s}) регулярным, контекстно-свободным, рекурсивным, рекурсивно перечислимым или ни одним из них.
Я знаю, как определить, является ли язык регулярным (найдите DFA или регулярное выражение, которое работает) или контекстно-свободным (найдите PDA или контекстно-свободную грамматику, которая работает); Я знаю, что в рекурсивном языке есть машина Тьюринга, которая всегда останавливается, и что в рекурсивно-перечислимом языке есть машина Тьюринга, которая может не останавливаться.
Итак, вопрос: существуют ли быстрые критерии для определения того, является ли язык рекурсивным или рекурсивно перечислимым или ни тем, ни другим? Например, мне не нужно собирать КПК, чтобы понять, что язык является контекстно-свободным, я не вижу этого по тому, что он требует один стек; Есть ли аналогичный быстрый подход к проблеме (который, надеюсь, избавит вас от необходимости создавать машину Тьюринга)?