PUSHDOWN AUTOMATA (PDA)

Similar documents
FORMAL LANGUAGES, AUTOMATA AND COMPUTABILITY

Intro to Theory of Computation

October 6, Equivalence of Pushdown Automata with Context-Free Gramm

Lecture 17: Language Recognition

CISC4090: Theory of Computation

Introduction to Theory of Computing

Theory of Computation (IV) Yijia Chen Fudan University

THEORY OF COMPUTATION (AUBER) EXAM CRIB SHEET

(pp ) PDAs and CFGs (Sec. 2.2)

Computational Models - Lecture 5 1

(pp ) PDAs and CFGs (Sec. 2.2)

Computational Models - Lecture 4

Pushdown Automata. We have seen examples of context-free languages that are not regular, and hence can not be recognized by finite automata.

CS5371 Theory of Computation. Lecture 9: Automata Theory VII (Pumping Lemma, Non-CFL, DPDA PDA)

Theory of Computation (VI) Yijia Chen Fudan University

CISC 4090 Theory of Computation

SCHEME FOR INTERNAL ASSESSMENT TEST 3

Computational Models: Class 5

Problem 2.6(d) [4 pts] Problem 2.12 [3pts] Original CFG:

Pushdown Automata. Notes on Automata and Theory of Computation. Chia-Ping Chen

Definition: A grammar G = (V, T, P,S) is a context free grammar (cfg) if all productions in P have the form A x where

CISC 4090 Theory of Computation

Harvard CS 121 and CSCI E-207 Lecture 10: CFLs: PDAs, Closure Properties, and Non-CFLs

Context-Free and Noncontext-Free Languages

Pushdown Automata (Pre Lecture)

CS5371 Theory of Computation. Lecture 9: Automata Theory VII (Pumping Lemma, Non-CFL)

Cliff s notes for equivalence of CFLs and L(PDAs) LisaCFL L = L(M) for some PDA M L=L(M)forsomePDAM L = L(G) for some CFG G

1. Draw a parse tree for the following derivation: S C A C C A b b b b A b b b b B b b b b a A a a b b b b a b a a b b 2. Show on your parse tree u,

Pushdown automata. Twan van Laarhoven. Institute for Computing and Information Sciences Intelligent Systems Radboud University Nijmegen

CSE 355 Test 2, Fall 2016

Context-Free Languages (Pre Lecture)

Einführung in die Computerlinguistik

Outline. CS21 Decidability and Tractability. Machine view of FA. Machine view of FA. Machine view of FA. Machine view of FA.

Harvard CS 121 and CSCI E-207 Lecture 10: Ambiguity, Pushdown Automata

Part 4 out of 5 DFA NFA REX. Automata & languages. A primer on the Theory of Computation. Last week, we showed the equivalence of DFA, NFA and REX

DM17. Beregnelighed. Jacob Aae Mikkelsen

5 Context-Free Languages

CPS 220 Theory of Computation Pushdown Automata (PDA)

CFG and PDA accept the same languages

Note: In any grammar here, the meaning and usage of P (productions) is equivalent to R (rules).

2.1 Solution. E T F a. E E + T T + T F + T a + T a + F a + a

Context-Free Grammars and Languages. Reading: Chapter 5

Accept or reject. Stack

COMP-330 Theory of Computation. Fall Prof. Claude Crépeau. Lec. 10 : Context-Free Grammars

Final exam study sheet for CS3719 Turing machines and decidability.

Context Free Languages: Decidability of a CFL

Functions on languages:

Computability and Complexity

Computational Models Lecture 5

Computational Models - Lecture 4 1

AC68 FINITE AUTOMATA & FORMULA LANGUAGES DEC 2013

Theory of Computation

CS Pushdown Automata

CS311 Computational Structures More about PDAs & Context-Free Languages. Lecture 9. Andrew P. Black Andrew Tolmach

Computational Models - Lecture 5 1

Computational Models - Lecture 4 1

Theory of Computation (II) Yijia Chen Fudan University

Introduction to Formal Languages, Automata and Computability p.1/42

60-354, Theory of Computation Fall Asish Mukhopadhyay School of Computer Science University of Windsor

Homework. Context Free Languages. Announcements. Before We Start. Languages. Plan for today. Final Exam Dates have been announced.

Push-down Automata = FA + Stack

Foundations of Informatics: a Bridging Course

Lecture III CONTEXT FREE LANGUAGES

Pushdown Automata. Chapter 12

Pushdown Automata (2015/11/23)

UNIT-VI PUSHDOWN AUTOMATA

Fundamentele Informatica II

Before We Start. The Pumping Lemma. Languages. Context Free Languages. Plan for today. Now our picture looks like. Any questions?

Intro to Theory of Computation

Section 1 (closed-book) Total points 30

MA/CSSE 474 Theory of Computation

Context-Free Grammars (and Languages) Lecture 7

CSE 105 THEORY OF COMPUTATION

CS500 Homework #2 Solutions

Harvard CS 121 and CSCI E-207 Lecture 12: General Context-Free Recognition

MA/CSSE 474 Theory of Computation

Solution Scoring: SD Reg exp.: a(a

The Pumping Lemma for Context Free Grammars

3130CIT Theory of Computation

Pushdown Automata. Reading: Chapter 6

Theory of Computation

CS5371 Theory of Computation. Lecture 7: Automata Theory V (CFG, CFL, CNF)

NPDA, CFG equivalence

1. (a) Explain the procedure to convert Context Free Grammar to Push Down Automata.

CSE 105 THEORY OF COMPUTATION

Undecidable Problems and Reducibility

Theory of Computation Turing Machine and Pushdown Automata

6.8 The Post Correspondence Problem

ÖVNINGSUPPGIFTER I SAMMANHANGSFRIA SPRÅK. 17 april Classrum Edition

The View Over The Horizon

Notes for Comp 497 (Comp 454) Week 10 4/5/05

CPS 220 Theory of Computation

Finite Automata Theory and Formal Languages TMV027/DIT321 LP4 2018

Next: Pushdown automata. Pushdown Automata. Informal Description PDA (1) Informal Description PDA (2) Formal Description PDA

Context-Free Languages

Context-Free Languages

Chapter 16: Non-Context-Free Languages

Computational Models - Lecture 3

Parsing. Context-Free Grammars (CFG) Laura Kallmeyer. Winter 2017/18. Heinrich-Heine-Universität Düsseldorf 1 / 26

Context Free Languages. Automata Theory and Formal Grammars: Lecture 6. Languages That Are Not Regular. Non-Regular Languages

Transcription:

PUSHDOWN AUTOMATA (PDA) FINITE STATE CONTROL INPUT STACK (Last in, first out)

input pop push ε,ε $ 0,ε 0 1,0 ε ε,$ ε 1,0 ε PDA that recognizes L = { 0 n 1 n n 0 }

Definition: A (non-deterministic) PDA is a 6-tuple P = (Q, Σ, Γ, δ, q 0, F), where: Q is a finite set of states Σ is the input alphabet Γ is the stack alphabet pop push δ : Q Σ ε Γ ε 2 Q Γ ε q 0 Q is the start state F Q is the set of accept states 2 Q Γ ε is the set of subsets of Q Γε Σ ε = Σ {ε}, Γ ε = Γ {ε}

Let w Σ* and suppose w can be written as w 1... w n where w i Σ ε (recall Σ ε = Σ {ε}) Then P accepts w if there are r 0, r 1,..., r n Q and s 0, s 1,..., s n Γ* (sequence of stacks) such that 1. r 0 = q 0 and s 0 = ε (P starts in q 0 with empty stack) 2. For i = 0,..., n-1: (r i+1, b) δ(r i, w i+1, a), where s i =at and s i+1 = bt for some a, b Γ ε and t Γ* (P moves correctly according to state, stack and symbol read) 3. r n F (P is in an accept state at the end of its input)

CONTEXT-FREE GRAMMARS production A 0A1 A B B # rules

CONTEXT-FREE GRAMMARS start variable variables A 0A1 A B B # production rules terminals

A CONTEXT-FREE GRAMMARS start variable variables 0A1 (yields) A 0A1 A B B # production rules terminals 00A11 00B11 00#11 A * 00#11 (derives) Derivation

A CONTEXT-FREE GRAMMARS start variable variables 0A1 (yields) A 0A1 A B B # production rules terminals 00A11 00B11 00#11 A * 00#11 (derives) Non-deterministic Derivation We say: 00#11 is generated by the Grammar

SNOOP S GRAMMAR (courtesy of Luis von Ahn) <PHRASE> <FILLER><PHRASE> <PHRASE> <START WORD><END WORD>DUDE <FILLER> LIKE <FILLER> UMM <START WORD> FO <START WORD> FA <END WORD> SHO <END WORD> SHAZZY <END WORD> SHEEZY <END WORD> SHIZZLE

SNOOP S GRAMMAR (courtesy of Luis von Ahn) Generate: Umm Like Umm Umm Fa Shizzle Dude Fa Sho Dude

CONTEXT-FREE GRAMMARS A context-free grammar (CFG) is a tuple G = (V, Σ, R, S), where: V is a finite set of variables Σ is a finite set of terminals (disjoint from V) R is set of production rules of the form A W, where A V and W (V Σ)* S V is the start variable

CONTEXT-FREE LANGUAGES A context-free grammar (CFG) is a tuple G = (V, Σ, R, S), where: V is a finite set of variables Σ is a finite set of terminals (disjoint from V) R is set of production rules of the form A W, where A V and W (V Σ)* S V is the start variable L(G) = {w Σ* S * w} Strings Generated by G A Language L is context-free if there is a CFG that generates precisely the strings in L

CONTEXT-FREE LANGUAGES A context-free grammar (CFG) is a tuple G = (V, Σ, R, S), where: V is a finite set of variables Σ is a finite set of terminals (disjoint from V) R is set of production rules of the form A W, where A V and W (V Σ)* S V is the start variable G = { {S}, {0,1}, R, S } R = { S 0S1, S ε } L(G) =

CONTEXT-FREE LANGUAGES A context-free grammar (CFG) is a tuple G = (V, Σ, R, S), where: V is a finite set of variables Σ is a finite set of terminals (disjoint from V) R is set of production rules of the form A W, where A V and W (V Σ)* S V is the start variable G = { {S}, {0,1}, R, S } R = { S 0S1, S ε } L(G) = { 0 n 1 n n 0 } Strings Generated by G

WRITE A CFG FOR EVEN-LENGTH PALINDROMES S σsσ for all σ Σ S ε

WRITE A CFG FOR THE EMPTY SET G = { {S}, Σ,, S }

PARSE TREES A A 0A1 A B B # A A B 0 0 # 1 1 A 0A1 00A11 00B11 00#11

<EXPR> <EXPR> + <EXPR> <EXPR> <EXPR> x <EXPR> <EXPR> ( <EXPR> ) <EXPR> a Build a parse tree for a + a x a <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> <EXPR> a + a x a a + a x a

Definition: a string is derived ambiguously in a context-free grammar if it has more than one parse tree Definition: a grammar is ambiguous if it generates some string ambiguously See G 4 for unambiguous standard arithmetic precedence L = { a i b j c k i, j, k 0 and (i = j or j = k) } is inherently ambiguous (xtra credit) Undecidable to tell if a language has unambiguous parse trees (Post s problem)

NOT REGULAR Σ = {0, 1}, L = { 0 n 1 n n 0 } But L is CONTEXT FREE A 0A1 A ε WHAT ABOUT? Σ = {0, 1}, L 1 = { 0 n 1 n 0 m m,n 0 } Σ = {0, 1}, L 2 = { 0 n 1 m 0 n m,n 0 } Σ = {0, 1}, L 3 = { 0 m 1 n 0 n m=n 0 }

WHAT ABOUT? Σ = {0, 1}, L 1 = { 0 n 1 n 0 m m, n 0 } Σ = {0, 1}, L 2 = { 0 n 1 m 0 n m, n 0 } Σ = {0, 1}, L 3 = { 0 m 1 n 0 n m=n 0 }

WHAT ABOUT? Σ = {0, 1}, L 1 = { 0 n 1 n 0 m m, n 0 } S -> AB A -> 0A1 ε B -> 0B ε Σ = {0, 1}, L 2 = { 0 n 1 m 0 n m, n 0 } S -> 0S0 A A -> 1A ε Σ = {0, 1}, L 3 = { 0 m 1 n 0 n m=n 0 }

THE PUMPING LEMMA FOR CFGs Let L be a context-free language Then there is a P such that if w L and w P then can write w = uvxyz, where: 1. vy > 0 2. vxy P 3. For every i 0, uv i xy i z L

WHAT ABOUT? Σ = {0, 1}, L 3 = { 0 m 1 n 0 n m=n 0 } Choose w = 0 P 1 P 0 P. By the Pumping Lemma, we can write w = uvxyz with vy > 0, vxy P such that pumping v together with y will produce another word in L 3 Since vxy P, vxy = 0 a 1 b, or vxy = 1 a 0 b.

WHAT ABOUT? Σ = {0, 1}, L 3 = { 0 m 1 n 0 n m=n 0 } Choose w = 0 P 1 P 0 P. By the Pumping Lemma, we can write w = uvxyz with vy > 0, vxy P such that pumping v together with y will produce another word in L 3 Since vxy P, vxy = 0 a 1 b, or vxy = 1 a 0 b. Pumping in the first case will unbalance with the 0 s at the end; in the second case, will unbalance with the 0 s at the beginning. Contradiction.

THE PUMPING LEMMA FOR CFGs Let L be a context-free language Then there is a P such that if w L and w P then can write w = uvxyz, where: 1. vy > 0 2. vxy P 3. For every i 0, uv i xy i z L

Idea of Proof: If w is long enough, then any parse tree for w must have a path that contains a variable more than once T T R R R R u v x y z u v R y z v x y

Formal Proof: Let b be the maximum number of symbols (length) on the right-hand side of any rule If the height of a parse tree is h, the length of the string generated by that tree is at most: Let V be the number of variables in G Define P = b V +1 Let w be a string of length at least P Let T be a parse tree for w with a minimum number of nodes. b V +1 = P w b h T must have height h at least V +1 b h

The longest path in T must have V +1 variables Select R to be a variable that repeats among the lowest V +1 variables (in the path) 1. vy > 0 T 2. vxy PR R Let T be a parse tree for w with a minimum R number u of v nodes. x T must y zhave height u v at least V +1 y z T R R v x y

The longest path in T must have V +1 variables Select R to be a variable in T that repeats, among the lowest V +1 variables in the tree 1. vy > 0 2. vxy P since T has minimun # nodes since vxy b V +1 = P T T R R R R u v x y z u v R y z v x y

PDAs ARE EQUIVALENT TO CFGs THURSDAY Jan 30

EQUIVALENCE OF CFGs and PDAs A Language L is generated by a CFG L is recognized by a PDA

A Language L is generated by a CFG L is recognized by a PDA

Suppose L is generated by a CFG G = (V, Σ, R, S) Construct P = (Q, Σ, Γ, δ, q, F) that recognizes L A Language L is generated by a CFG L is recognized by a PDA

Suppose L is generated by a CFG G = (V, Σ, R, S) Construct P = (Q, Σ, Γ, δ, q, F) that recognizes L ε,ε S$ For each rule 'A w R: ε,$ ε For each terminal a Σ: ε,a w a,a ε

S atb T Ta ε ε,ε $ ε,ε S ε,s b ε,t a ε,ε T ε,ε T ε,$ ε ε,t ε a,a ε b,b ε ε,ε a

S atb T Ta ε S * ab (derives) ε,ε $ ε,ε S ε,s b ε,t a ε,ε T ε,ε T ε,$ ε ε,t ε a,a ε b,b ε ε,ε a

S atb T Ta ε S *aab (derives) ε,ε $ ε,ε S ε,s b ε,t a ε,ε T ε,ε T ε,$ ε ε,t ε a,a ε b,b ε ε,ε a

Suppose L is generated by a CFG G = (V, Σ, R, S) Describe P = (Q, Σ, Γ, δ, q, F) that recognizes L (via pseudocode): (1) Push $ and then S on the stack (2) Repeat the following steps forever: (a) Suppose x is now on top of stack (b) If x is a variable A, guess a rule for A and push yield into the stack and Go to (a). (c) If x is a terminal, read next symbol from input and compare it to x. If they re different, reject. If same, pop x and Go to (a). (d) If x is $: then accept iff no more input

A Language is generated by a CFG It is recognized by a PDA

A Language L is generated by a CFG <= L is recognized by a PDA Given PDA P = (Q, Σ, Γ, δ, q, F) Construct a CFG G = (V, Σ, R, S) such that L(G) = L(P) First, simplify P to have the following form: (1) It has a unique accept state, q acc (2) It empties the stack before accepting (3) Each transition either pushes a symbol or pops a symbol, but not both at the same time

SIMPLIFY ε,ε $ q 0 q 1 0,ε 0 ε,ε ε0 1,0 ε q 3 ε,$ ε q 2 1,0 ε ε,ε 0ε q 4 ε,0 ε q 5

SIMPLIFY ε,ε $ q 0 q 1 0,ε 0 ε,ε 0 1,0 ε q 3 ε,$ ε q 2 1,0 ε ε,ε 0 q 4 ε,0 ε q 5

Our task is to construct Grammar G to generate exactly the words that PDA P accepts. Idea For Our Grammar G: For every pair of states p and q in PDA P, G will have a variable A pq whose production rules will generate all strings x that can take: P from p with an empty stack to q with an empty stack V = {A pq p,q Q } S = Aq 0 q acc

ε,ε $ q 0 q 1 0,ε 0 ε,ε 0 1,0 ε q 3 ε,$ ε q 2 1,0 ε ε,ε 0 What strings do we want Aq 0 q 1 to generate? q 4 What strings do we want Aq 1 q 2 to generate? What strings ε,0 do we ε want Aq 1 q 3 to generate? q What strings do we want Aq 5 0 q 5 to generate? {0 n 1 n n > 0} WANT: A pq to generate all strings that take p with an empty stack to q with empty stack

WANT: A pq generates all strings that take p with an empty stack to q with empty stack Let x be such a string P s first move on x must be a push (why?) P s last move on x must be a pop Two possibilities: 1. The symbol popped at the end is the one pushed at the beginning 2. The symbol popped at the end is not the one pushed at the beginning (so P must empty stack somewhere in the middle, and then start pushing symbols on it again)

x = ayb takes p with empty stack to q with empty stack 1. The symbol t popped at the end is exactly the one pushed at the beginning input string stack height δ(p, a, ε) (r, t) δ(s, b, t) (q, ε) p a r push t A pq aa rs b s pop t x - - b q

2. The symbol popped at the end is not the one pushed at the beginning stack height input string p r q A pq A pr A rq

Formally: V = {A pq p, q Q } S = Aq 0 q acc For every p, q, r, s Q, t Γ and a, b Σ ε If (r, t) δ(p, a, ε) and (q, ε) δ(s, b, t) Then add the rule A pq aa rs b For every p, q, r Q, add the rule A pq A pr A rq For every p Q, add the rule A pp ε

A qq ε ε,ε 0 q 4 ε,ε $ q 0 q 1 q 3 ε,ε 0 ε,$ ε A pq A pr A rq 0,ε 0 Aq 0 q 3 εaq 1 q 2 ε (q 0 to 1,0 q 1 ; qε 2 to q 3 ) Aq 1 q 2 0Aq 1 q 2 1 (q q 2 1,0 ε 1 to q 1 ; q 2 to q 2 ) Aq 1 q 2 0Aq 1 q 1 1 (q 1 to q 1 ; q 1 to q 2 ) What strings does Aq 1 q 2 generate? ε,0 ε q 5 What strings does Aq 0 q 3 generate? What strings does Aq 0 q 5 generate? {0 n 1 n n > 0}

Show, for all x, A pq generates x x can bring P from p with an empty stack to q with an empty stack

Show, for all x, A pq generates x x can bring P from p with an empty stack to q with an empty stack Proof (by induction on the number of steps in the derivation of x from A pq ): Inductive Base Case: Step: The derivation has 1 step: A pp ε Assume true for derivations of length k and prove true for derivations of length k+1: A pq * x in k+1 steps First step in derivation: A pq A pr A rq or A pq aa rs b

Show, for all x, A pq generates x x can bring P from p with an empty stack to q with an empty stack Proof (by induction on the number of steps in the derivation of x from A pq ): Inductive Step: Assume true for derivations of length k and prove true for derivations of length k+1: A pq * x in k+1 steps First step in derivation: A pq A pr A rq Then, x = yz with A pr * y, A rq * z By IH, y can take p with empty stack to r with empty stack; similarly for z from r to q. So,

Show, for all x, A pq generates x x can bring P from p with an empty stack to q with an empty stack Proof (by induction on the number of steps in the derivation of x from A pq ): Inductive Step: Assume true for derivations of length k and prove true for derivations of length k+1: A pq * x in k+1 steps First step in derivation: or A pq aa rs b Then x = ayb with A rs * y. By IH, y can take r with empty stack to s with empty stack

Show, for all x, A pq generates x x can bring P from p with an empty stack to q with an empty stack Proof (by induction on the number of steps in the derivation of x from A pq ): Inductive Step: Assume true for derivations of length k and prove true for derivations of length k+1: A pq * x in k+1 steps First step in derivation: By def of rules of G, or A pq aa rs b (r,t) δ(p,a,ε) and (q, ε) δ(s,b,t) state push state alphabet pop

Show, for all x, A pq generates x x can bring P from p with an empty stack to q with an empty stack Proof (by induction on the number of steps in the derivation of x from A pq ): Inductive Step: Assume true for derivations of length k and prove true for derivations of length k+1: A pq * x in k+1 steps First step in derivation: or A pq aa rs b So if P starts in p then after reading a, it can go to r and push t. By IH, y can bring P from r to s, with t at the top of the stack. Then from s reading b, it can pop t and end in state q.

Show, for all x, A pq generates x x can bring P from p with an empty stack to q with an empty stack Proof (by induction on the number of steps in the computation of P from p to q with empty stacks on input x): Base Case: The computation has 0 steps So it starts and ends in the same state. The only string that can do that in 0 steps is ε. Since A pp ε is a rule of G, A pp * ε

Inductive Step: Assume true for computations of length k, we ll prove true for computations of length k+1 Suppose that P has a computation where x brings p to q with empty stacks in k+1 steps Two cases: (idea!) 1. The stack is empty only at the beginning and the end of this computation 2. The stack is empty somewhere in the middle of the computation

Inductive Step: Assume true for computations of length k, we ll prove true for computations of length k+1 Suppose that P has a computation where x brings p to q with empty stacks in k+1 steps Two cases: (idea!) 1. The stack is empty only at the beginning and the end of this computation To Show: Can write x as ayb where A rs * y and A pq aa rs b is a rule in G. So A pq *x 2. The stack is empty somewhere in the middle of the computation To Show: Can write x as yz where A pr * y, A rq * z and A pq A pr A rq is a rule in G. So A pq *x

Inductive Step: 1. The stack is empty only at the beginning and the end of this computation To Show: Can write x as ayb where A rs * y and A pq aa rs b is a rule in G. So A pq *x The symbol t pushed at the beginning must be the same symbol popped at the end. why?) Let a be input symbol read at beginning, b read at end. So x = ayb, for some y. Let r be the state after the first step, let s be the state before the last step. y can bring P from r with an empty stack to s with an empty stack. (why?) So by IH, A rs * y. Also, A pq aa rs b must be a rule in G. (why?)

Inductive Step: 2. The stack is empty somewhere in the middle of the computation To Show: Can write x as yz where A pr * y, A rq * z and A pq A pr A rq is a rule in G. So A pq *x Let r be a state in which the stack becomes empty in the middle. Let y be the input read to that point, z be input read after. So, x = yz where y, z > 0. By IH, both A pr * y, A rq * z By construction of G, A pq A pr A rq is a rule in G

A Language is generated by a CFG It is recognized by a PDA

Corollary: Every regular language is context-free