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