Как определить, является ли язык рекурсивным или рекурсивно перечисляемым?

Мне нужно определить, является ли язык (например, L = {a ^ nb ^ mc ^ s | 0 <= n <= m <= s}) регулярным, контекстным -бесплатно, рекурсивный, рекурсивно перечисляемый или ни один из них.

Я знаю, как определить, является ли язык регулярным (найдите DFA или регулярное выражение, которое работает) или контекстно-зависимым (найдите КПК или контекстно-свободную грамматику, которая работает); Я знаю, что в рекурсивном языке есть машина Тьюринга, которая всегда останавливается, а в рекурсивно перечисляемом языке есть машина Тьюринга, которая не может останавливаться.

Итак, возникает вопрос: есть ли быстрые критерии для определения того, является ли язык рекурсивным, рекурсивно перечислимым или нет? Например, мне не нужно собирать КПК, чтобы понять, что язык не зависит от контекста, я не могу этого понять из-за того, что для него требуется один стек; есть ли аналогичный быстрый подход к проблеме (который, мы надеемся, избавит от проблем при построении машины Тьюринга)?

11
задан Jacob 16 February 2011 в 17:58
поделиться