Любой DFA эквивалентен КПК, который никогда ничего не нажимает на свой стек, поэтому все обычные языки также не содержат контекста. Более формально:
DFA определяется как 5-кортеж (Σ, S, s0, δ, F), состоящий из входного алфавита, набора состояний, начальное состояние, таблица переходов и набор конечных (принимающих) состояния.
КПК определяется как 7-кортеж, включая все элементы DFA, плюс два дополнительных параметра: Γ (алфавит стека) и Z (символ начального стека). Таблица перехода КПК несколько отличается от таблицы перехода DFA: каждый переход может зависеть от как от символа ввода, так и от текущего символа стека, а переходы могут нажимать или вызывать из стека.
Итак, вводя фиктивный стека алфавит, состоящий из одного символа, это тривиальное (хотя и несколько раздражает и многословно выписывать!), Чтобы отобразить таблицу переходов ДКА (state, input) -> state
к таблице переходов эквивалентно КПК (state, input, stack) -> (state, stack)
.
Чтобы завершить доказательство правильного отношения подмножества: существуют языки, которые являются контекстно-свободными, но не регулярными, поэтому регулярные языки образуют правильное подмножество контекстно-свободных языков. Пример: язык строк, состоящий из сбалансированных круглых скобок.
Спасибо. У вас есть ссылки на это утверждение: Любой DFA эквивалентен КПК, который никогда ничего не нажимает на свой стек, поэтому все регулярные языки также не содержат контекста? –
@David: Я немного расширил свой ответ, чтобы показать, как может быть структурировано более формальное доказательство. –