# Pushdown Automata CPSC 388 Ellen Walker Hiram College.

## Presentation on theme: "Pushdown Automata CPSC 388 Ellen Walker Hiram College."— Presentation transcript:

Pushdown Automata CPSC 388 Ellen Walker Hiram College

PDA = FA + Stack

A PDA Transaction Read the next symbol from the input Pop a symbol from the stack Push a symbol on the stack Enter a new state

Epsilon in PDA Read epsilon –No character is read, input location stays the same Push or pop epsilon –The stack remains unchanged

Format of a Transition Items before ; are “input”, items after ; are “action” ( Current state, Input symbol, Symbol popped ; New state, Symbol pushed )

PDA for a n b n Assume initial stack contains “Z” (delimiter for bottom of stack) S1, a,  ; S2, a - leave Z on bottom S2, a,  ; S2, a - push a for each a S2, b, a ; S3,  - pop a for each b S3, b, a ; S3,  S3, , Z ; S4, Z- Final state if Z reached

PDA Diagram For each state: item read, popped, pushed State transitions using arrows as for FA To check the item on top of the stack, then push an additional item, JFLAP allows a double-push (a, Z, aZ)

PDA Diagram for a n b n This PDA requires n≥1. (How can we make it accept n=0?)

Formal Definition of PDA A PDA is of the form (S, , , , , F) where –Sis a finite collection of states –  is the machine's alphabet –  is the finite collection of stack symbols –  is the finite collection of transitions of the form (p,s,x; q,y) –  (an element of S) is the initial state –F(a subset of S) is the set of accept states

Formal Definition of Example States: {q0, q1, q2, q3} Alphabet: {a, b} Stack symbols: {Z, a} Transitions (see slide 6) Initial state: q2 Accept states: {q3}

All Strings with Equal # a’s and b’s General idea: –If you see an a If there is a b on the stack, pop it Otherwise, push an a –If you see a b If there is an a on the stack, pop it Otherwise, push a b –At the end of the string, if Z is on top, then accept

Build a PDA for each: All strings of the form a m b n, n>m All strings consisting of a’s and b’s with at least 3 more a’s than b’s (Hint: use epsilon-transitions) All palindromes over the alphabet {a,b,c} (Hint: it needs to be nondeterministic)

Every RL has a PDA to accept it Given the RL, construct an FA for it. Make a PDA with the same FA that reads the input but ignores the stack –For each FA transition (state1, char; state2) create a pda transition (state1, char,  ; state2,  )

PDA’s are more powerful than FA’s Every FA has an equivalent PDA –Proof by construction on previous slide At least one PDA does not have an equivalent FA –Proof by example: a n b n Therefore the class of languages accepted by PDA’s is a superset of the class of languages accepted by FA’s

Deterministic vs. Nondeterministic PDA’s Deterministic PDA’s –Every state/stack combination has exactly one transition –No epsilon-transitions (epsilon for both input and stack symbol) Nondeterministic PDA’s are more powerful than deterministic PDA’s –Example: strings from a*b* that have either twice as many a’s as b’s or 3x as many a’s as b’s

Not All Languages are Context Free There is a pumping lemma for Context free languages Similar to RL pumping lemma, but you have to pump in two places Non CFL: a n b n c n (Details are beyond the scope of this course)