Review • Languages and Grammars – Alphabets, strings, languages • Regular Languages CS 301 - Lecture 11 – Deterministic Finite and Nondeterministic Automata – Equivalence of NFA and DFA Nondeterministic Pushdown – Regular Expressions – Regular Grammars Automata – Properties of Regular Languages – Languages that are not regular and the pumping lemma Fall 2008 • Context Free Languages – Context Free Grammars – Derivations: leftmost, rightmost and derivation trees – Parsing and ambiguity – Simplifying Grammars and Normal Forms • Today: – Nondeterministic Pushdown Automata Pushdown Automaton -- PDA Input String Pushdown Automata Stack PDAs States 1
a , b → c The States q 1 q 2 Pop Input Push symbol symbol symbol input a a a , b → c q 1 q 2 stack c b top Replace h h e e $ $ a , λ → c a , b → λ q 1 q 2 q 1 q 2 input input a a a a stack stack c b top b b top Push Pop h h h h e e e e $ $ $ $ 2
A Possible Transition a , λ → λ q 1 q 2 a , $ → λ q 1 q 2 input input a a a a stack empty stack Pop top $ b b top No Change h h e e $ $ A Bad Transition A Bad Transition a , c a , b c → λ → q 1 q 2 q 1 q 2 input input a a Empty stack Empty stack HALT HALT The automaton Halts in state q 1 The automaton Halts in state q 1 and Rejects the input string and Rejects the input string 3
A Good Transition No transition is allowed to be followed When the stack is empty a , $ b → q 1 q 2 input x , y z → a a q 1 q 2 stack Pop Empty stack top b $ NPDA: Non-Deterministic Non-Determinism PDA q 2 Example: a , b → c λ , b → c q 1 q 1 q 2 transition λ − a , λ → a b , a → λ a , b → c q 3 These are allowed transitions in a λ , λ → λ b , a → λ λ , $ → $ q 0 q 1 q 2 q 3 Non-deterministic PDA (NPDA) 4
Execution Example: Time 0 Time 1 Input Input a a a a a a b b b b b b $ $ Stack Stack current a , λ → a b , a → λ a , λ → a b , a → λ state λ , λ → λ b , a → λ λ , $ → $ λ , λ → λ b , a → λ λ , $ → $ q q 1 q 2 q 3 q 0 q 1 q 2 q 3 0 Time 2 Time 3 Input Input a a a a a a a a b b b b b b a $ $ Stack Stack a , λ → a b , a → λ a , λ → a b , a → λ λ , λ → λ b , a → λ λ , $ → $ λ , λ → λ b , a → λ λ , $ → $ q 0 q 1 q 2 q 3 q 0 q 1 q 2 q 3 5
Time 4 Time 5 a a Input Input a a a a a a a a b b b b b b a a $ $ Stack Stack a , λ → a b , a → λ a , λ → a b , a → λ λ , λ → λ b , a → λ λ , $ → $ λ , λ → λ b , a → λ λ , $ → $ q 0 q 1 q 2 q 3 q 0 q 1 q 2 q 3 Time 6 Time 7 Input Input a a a a a a a a a b b b b b b $ $ Stack Stack a , λ → a b , a → λ a , λ → a b , a → λ λ , λ → λ b , a → λ λ , $ → $ λ , λ → λ b , a → λ λ , $ → $ q 0 q 1 q 2 q 3 q 0 q 1 q 2 q 3 6
Time 8 A string is accepted if there is Input a computation such that: a a a b b b $ All the input is consumed Stack AND The last state is a final state a , λ → a b , a → λ accept At the end of the computation, λ , λ → λ b , a → λ λ , $ → $ we do not care about the stack contents q 0 q 1 q 2 q 3 In general, n n L { a b : n 0 } = ≥ The input string aaabbb is accepted by the NPDA: is the language accepted by the NPDA: a , λ → a b , a → λ a , λ → a b , a → λ λ , λ → λ b , a → λ λ , $ → $ λ , λ → λ b , a → λ λ , $ → $ q 0 q 1 q 2 q 3 q 0 q 1 q 2 q 3 7
Execution Example: Time 0 Another NPDA example Input NPDA M a a b b R L ( M ) { ww } = $ Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b λ → b , b λ → b , b → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 Time 1 Time 2 Input Input b a a a a b b b b a a $ $ Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b b , b b , b λ → λ → → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 8
Time 3 Time 4 Input Input b b a a a a b b b b a a Guess the middle $ $ of string Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b λ → b , b λ → b , b → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 Time 5 Time 6 Input Input a a a a b b b b a $ $ Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b b , b b , b λ → λ → → λ → λ accept λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q q 0 q 0 q 1 1 9
Rejection Example: Time 0 Time 1 Input Input a a b b b b b b a $ $ Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b λ → b , b λ → b , b → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 Time 2 Time 3 Input Input b b a a b b b b b b a a Guess the middle $ $ of string Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b b , b b , b λ → λ → → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 10
Time 4 Time 5 There is no possible transition. Input Input b a a Input is not b b b b b b a a consumed $ $ Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b λ → b , b λ → b , b → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q q 2 q 0 q 1 q 0 1 Another computation on same string: Time 1 Input Input Time 0 a a b b b b b b a $ $ Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b b , b b , b λ → λ → → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 11
Time 2 Time 3 b Input Input b b a a b b b b b b a a $ $ Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b λ → b , b λ → b , b → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 Time 4 Time 5 b b b b Input Input No final state b b a a is reached b b b b b b a a $ $ Stack Stack a , a a , a λ → a , a λ → a , a → λ → λ b , b b , b b , b b , b λ → λ → → λ → λ λ , λ → λ λ , $ → $ λ , λ → λ λ , $ → $ q 2 q 2 q 0 q 1 q 0 q 1 12
A string is rejected if there is There is no computation no computation such that: that accepts string abbb abbb ∉ L ( M ) All the input is consumed AND The last state is a final state a , a λ → a , a → λ b , b λ → b , b → λ At the end of the computation, we do not care about the stack contents λ , λ → λ λ , $ → $ q 2 q 0 q 1 In other words, a string is rejected Another NPDA example if in every computation with this string: NPDA M n m L ( M ) { a b : n m 1 } = ≥ − The input cannot be consumed This NPDA generates: OR The input is consumed and the last and for each substring u state is not a final state OR a , a λ → The stack head moves below the b , a → λ bottom of the stack q 0 b , $ → λ 13
Execution Example: Time 0 Time 1 Input Input b b a a a a a $ $ a , a a , a λ → λ → Stack Stack b , a b , a → λ → λ b , $ b , $ → λ → λ q 0 q 0 Time 2 Time 3 Input Input a b b a a a a a a $ $ a , a a , a λ → λ → Stack Stack b , a b , a → λ → λ b , $ b , $ → λ → λ accept q 0 q 0 14
Rejection example: Time 0 Time 1 Input Input b b b b b b a a a $ $ a , a λ → Stack Stack b , a → λ b , $ → λ q 0 q 0 Time 2 Time 3 Input Input b b b b b b a a $ a , a a , a λ → λ → Stack Stack b , a b , a → λ → λ b , $ b , $ → λ → λ q 0 q 0 15
Time 4 Pushing Strings Input Pop Input Push b b b a symbol symbol string a , a λ → Stack b , a → λ b , $ a , b → w → λ q 1 q 2 Halt and Reject q 0 Example: What’s Next a , b → cdf q 1 q 2 • Read – Linz Chapter 1,2.1, 2.2, 2.3, (skip 2.4), 3, 4, 5, 6.1, 6.2, (skip 6.3), 7.1, and input 7.2 a – JFLAP Chapter 1, 2.1, (skip 2.2), 3, 4, 5, 6, 7 a • Next Lecture Topics from Chapter 7.2 – Pushdown Automata and Context Free Grammars • Quiz 2 in Recitation on Wednesday 10/1 – Covers Linz 3, 4 and JFLAP 3, 4 pushed c – Closed book, but you may bring one sheet of 8.5 x 11 inch paper with any stack d string notes you like. top f – Quiz will take the full hour b Push • Homework h h – Homework Due Thursday e e $ $ 16
Recommend
More recommend