Мне было интересно, может ли кто-нибудь дать мне простое объяснение взаимосвязи между этими двумя терминами, так как меня очень смущает терминология.
Детерминистический конечный автомат против детерминированного автомата выталкивания
Ответы (1)
Детерминированный автомат проталкивания (DPDA) — это Детерминированный конечный автомат (DFA), который также имеет доступ к Stack, представляющий собой структуру данных "последний пришел, первый ушел" (LIFO).
Доступ к памяти позволяет DPDA распознавать большее количество строк, чем DFA. Например, для языка с символами A и B можно построить DFA для распознавания AB, AABB, AAABBB, но нельзя построить DFA для распознавания A^nB^n для всех n, в то время как это легко сделать с помощью DPDA. который работает следующим образом:
- Войдите в начальное состояние.
- Поместите
$
в стек. - Read letter from string.
- if B, go to a terminal non-accept state.
- если A, поместите A в стек и перейдите в состояние 4.
- Read a letter from string
- if A, push A on the stack and stay in this state
- if B, pop the top value from the stack.
- If the popped value is A, go to state 5.
- Если выскочившее значение равно $, перейдите в непринятое состояние терминала.
- Read a letter from string
- if B, pop the top value from the stack.
- If the popped value is A, stay in this state.
- Если выскочившее значение равно $, перейдите в непринятое состояние терминала.
- if we read the end of the string, pop the top value from the stack
- If the popped value is $, go to the accept state
- Если выскочившее значение равно A, перейдите в непринятое состояние терминала.
- если мы читаем что-то еще из строки, переходим в терминальное непринятое состояние.
- if B, pop the top value from the stack.
КПК распознают контекстно-свободные языки, а DPDA распознают только детерминированное подмножество контекстно-свободных языков. . Они более эффективны, чем DFA, с точки зрения количества языков, которые они могут распознавать, но менее эффективны, чем машины Тьюринга а>