pushdown automata context free languages iv
play

Pushdown Automata Context Free Languages IV Input tape 1 2 - PDF document

Pushdown Automata Context Free Languages IV Input tape 1 2 Pushdown Automata 3 5 4 State machine Stack Plan for today Pushdown Automata Introduction to Pushdown Automata The stack The stack has its own alphabet


  1. Pushdown Automata Context Free Languages IV Input tape 1 2 Pushdown Automata 3 5 4 State machine Stack Plan for today Pushdown Automata • Introduction to Pushdown Automata • The stack – The stack has its own alphabet – Included in this alphabet is a special symbol used to indicate an empty stack. (Z 0 ) • This special symbol should not be removed from the stack. • Note that the basic PDA is non- deterministic! Pushdown Automata Pushdown Automata • A pushdown automata (PDA) is essentially: • Let’s formalize this: – An NDFA- Λ with a stack – A pushdown automata (PDA) is a 7-tuple: – A “move” of a PDA will depend upon • M = (Q, Σ , Γ , q 0 , Z 0 , A, δ ) where • Current state of the machine – Q = finite set of states • Current symbol being read in – Σ = tape alphabet • Current symbol popped off the top of the stack – Γ = stack alphabet (may have symbols in common w/ Σ ) – q 0 ∈ Q = start state – With each “move”, the machine can – Z 0 ∈ Γ = initial stack symbol • Move into a new state – A ⊆ Q = set of accepting states • Push symbols on to the stack – δ = transition function 1

  2. Pushdown Automata Pushdown Automata • About this transition function δ : • Configuration of a PDA – During a move of a PDA: – Gives the current “configuration” of the • At most one character is read from the input tape machine – Λ transitions are okay • The topmost character is popped from the stack – Unless it is Z 0 – (p, x, α ) where • The machine will move to a new state based on: • p is the current state – The character read from the tape • x is a string indicating what remains to be read on – The character popped off the stack the tape – The current state of the machine • 0 or more symbols from the stack alphabet are pushed onto the • α is the current contents of the stack. stack. Pushdown Automata Pushdown Automata • Formally: • Move of a PDA: – δ : Q x ( Σ ∪ { Λ }) x Γ → (finite subsets of Q x Γ * ) – We can describe a single move of a PDA: • (q, x, α ) a (p, y, β ) – Domain: • If: • Q = state – x = ay, α = γ X, β = YX • ( Σ ∪ { Λ }) = symbol read off tape • Γ = symbol popped off stack » And – δ (q, x, γ ) includes (p, Y) or – Range – δ (q, Λ , γ ) includes (p, Y) and x = y. • Q = new state • Γ * = symbols pushed onto the stack Pushdown Automata Pushdown Automata • Example: • Moves of a PDA – δ (q, a, a ) = ( p, aa) – We can write: • (q, x, α ) a * (p, y, β ) • Meaning: – When in state q, • If – Reading in an a from the tape – You can get from one configuration to the other by – With an a popped off the stack applying 0 or more moves. • The machine will – Go into state p – Push the string “aa” onto the stack 2

  3. Pushdown Automata Pushdown Automata • Strings accepted by a PDA • Let’s look at an example: – L = { xcx r | x ∈ { a,b } * } – Let M = (Q, Σ , Γ , q 0 , Z 0 , A, δ ) be a PDA – x is accepted by M if – Basic idea for building a PDA • (q 0 , x, Z 0 ) a * (q, Λ , β ) • Read chars off the tape until you reach the ‘c’. • As you read chars push them on the stack • Where • After reading the c, match the chars read with the chars popped off the stack until all chars are read – q ∈ A • If at any point the char read does not match the char popped, – β ∈ Γ * the machine “crashes” Pushdown Automata Pushdown Automata • Let’s look at an example: • Strings accepted by a PDA – L = { xcx r | x ∈ { a,b } * } – Start at (q 0 , x, Z 0 ) • Start state q 0 • X on the input tape – The PDA will have 4 states • Empty stack • State 0 (initial) : reading before the ‘c’ – End with (q, Λ , β ) • State 1: read the ‘c’ • End in an accepting state • State 2 :read after ‘c’, comparing chars • All characters of x have been read • Some string on the stack (doesn’t matter what). • State 3: (accepting): move only after all chars read and stack empty – Acceptance by “final state” Pushdown Automata Pushdown Automata • The language accepted by a PDA • Let’s look at an example: – L = { xcx r | x ∈ { a,b } * } – Let M = (Q, Σ , Γ , q 0 , Z 0 , A, δ ) be a PDA – The language accepted by M, b, b / Λ • Denoted L(M) is b, Z 0 / b Z 0 c, Z 0 / Z 0 Λ , Z 0 / Z 0 a, a / Λ • The set of all strings x that are accepted by M. a, Z 0 / a Z 0 Λ , a / a c, a / a c, b / b Λ , b / b q 0 q 1 q 2 q 3 Λ , Z / Z b, b / bb a, b / ab a, a / aa b, a / ba 3

  4. PDA Example Pushdown Automata • Transition for abcba • Let’s look at another example: – L = { xx r | x ∈ { a,b } * } – (q 0 , abcba, Z) a (q 0 , bcba, a) // push a – a (q 0 , cba, ba) // push b – a (q 1 , ba, ba) // goto 1 – Basic idea for building a PDA a (q 2 , ba, ba) // Λ trans – • Much like last example, except – a (q 2 , a, a) // pop b – This time we don’t know when to start popping and a (q 2 , Λ , Z) // pop a – comparing – Since PDAs are non-deterministic, this is not a problem a (q 3 , Λ , Z) // Accept! – PDA Example Pushdown Automata • Let’s look at another example: • Transition for abcb – L = { xx r | x ∈ { a,b } * } – (q 0 , abcb, Z) a (q 0 , bcb, a) // push a – a (q 0 , cb, ba) // push b – The PDA will have 3 states – a (q 1 , b, ba) // goto 1 • State 0 (initial) : reading before the center of string • State 1: read after center of string, comparing chars a (q 2 , b, ba) // Λ trans – • State 2 (accepting): after all chars read, stack should be empty a (q 2 , Λ , a) // pop b – – The machine can choose to go from state 0 to state 1 at any time: – Nowhere to go // Reject! • Will result in many “wrong” set of moves • All you need is one “right” set of moves for a string to be accepted. Pushdown Automata Pushdown Automata • I bet you’re wondering if JFLAP can handle • Let’s look at an example: PDAs! – L = { xx r | x ∈ { a,b } * } – Yes, it can… b, b / Λ – Let’s take a look. b, Z 0 / b Z 0 Λ , Z 0 / Z 0 a, a / Λ a, Z 0 / a Z 0 Λ , a / a Λ , b / b q 0 q 1 q 2 Λ , Z / Z b, b / bb a, b / ab a, a / aa b, a / ba 4

  5. PDA Example Pushdown Automata • Let’s see a bad transition set for abba • Questions? – (q 0 , abba, Z) a (q 0 , bba, a) // push a – a (q 0 , ba, ba) // push b – a (q 0 , a, bba) // push b a (q 1 , a, bba) // Λ trans – – Nowhere to go // Reject! PDA Example Deterministic PDAs • Let’s see a good transition set for abba • As mentioned before – (q 0 , abba, Z) a (q 0 , bba, a) // push a – Our basic PDA in non-deterministic – a (q 0 , ba, ba) // push b – We can define a Deterministic PDA (DPDA) as follows: a (q 1 , ba, ba) // Λ trans – • Let M = (Q, Σ , Γ , q 0 , Z 0 , A, δ ) be a PDA – a (q 1 , a, a) // pop b • M is deterministic if: a (q 1 , Λ , Z) // pop a – – δ (q, a, X) has at most one element a (q 2 , Λ , Z) – // Accept! – If δ (q, Λ , X) ≠ ∅ then δ (q, a, X) = ∅ for all a ∈ Σ Pushdown Automata Deterministic PDAs • “Let’s go to the video tape” • In other words: – Actually JFLAP… – There is no configuration where the machine has a “choice” of moves • Each transition has at most 1 element. • If you can make a Λ -transition from a state with a given symbol on the stack, – You cannot make that same transition on any tape input symbol. 5

  6. Deterministic PDAs PDA Example • A language L is a deterministic context-free • Example: – L = { x ∈ { a, b } * | n a (x) > n b (x) } language (DCFL) if there is a DPA that accepts L b, Z 0 / b Z 0 a, Z 0 / a Z 0 Λ , a / a q 0 q 1 b, b / bb a, b / Λ a, a / aa b, a / Λ Non-determinism PDA Example PDA Example • Example: • Let’s try on JFLAP – L = { x ∈ { a, b } * | n a (x) > n b (x) } – First using a PDA: • Let the stack store the “excess” of one symbol over another – If more a’s have been read than b’s, a’s will be on the stack, and via versa – If a is on the stack and you read a b, simple match the a with the b. – If a is on the stack and you read an a, we have one more extra a – Push it on the stack. – An empty stack means the number of a’s and b’s are equal. PDA Example PDA Example • Example: Example: – L = { x ∈ { a, b } * | n a (x) > n b (x) } – L = { x ∈ { a, b } * | n a (x) > n b (x) } – The PDA will have 2 states: – Removing the non-determinism : • State 0 (start) : where all the work gets done • Let the stack store 1 minus the “excess” of one • State 1 (accepting) : one you’re in here, the machine symbol over another stops. • The state will determine whether you have excess – The machine can “choose” to go into state 1 on a’s or excess b’s a Λ transition whenever an a is on the stack. 6

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend