CSC 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Pushdown.

Slides:



Advertisements
Similar presentations
CS2303-THEORY OF COMPUTATION Push Down Automata (PDA)
Advertisements

Pushdown Automata Section 2.2 CSC 4170 Theory of Computation.
Pushdown Automata Chapter 12. Recognizing Context-Free Languages Two notions of recognition: (1) Say yes or no, just like with FSMs (2) Say yes or no,
CFGs and PDAs Sipser 2 (pages ). Long long ago…
Pushdown Automata (PDA)
CS21 Decidability and Tractability
PDAs => CFGs Sipser 2.2 (pages ). Last time…
Introduction to Computability Theory
1 Introduction to Computability Theory Lecture7: PushDown Automata (Part 1) Prof. Amos Israeli.
Costas Busch - RPI1 Pushdown Automata PDAs. Costas Busch - RPI2 Pushdown Automaton -- PDA Input String Stack States.
Courtesy Costas Busch - RPI1 Pushdown Automata PDAs.
Introduction to the Theory of Computation John Paxton Montana State University Summer 2003.
CS 310 – Fall 2006 Pacific University CS310 Pushdown Automata Sections: 2.2 page 109 October 11, 2006.
CS 310 – Fall 2006 Pacific University CS310 Pushdown Automata Sections: 2.2 page 109 October 9, 2006.
CSC 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Regular.
1 Normal Forms for Context-free Grammars. 2 Chomsky Normal Form All productions have form: variable and terminal.
Foundations of (Theoretical) Computer Science Chapter 2 Lecture Notes (Section 2.2: Pushdown Automata) Prof. Karen Daniels, Fall 2009 with acknowledgement.
Fall 2004COMP 3351 Pushdown Automata PDAs. Fall 2004COMP 3352 Pushdown Automaton -- PDA Input String Stack States.
Fall 2006Costas Busch - RPI1 Pushdown Automata PDAs.
January 14, 2015CS21 Lecture 51 CS21 Decidability and Tractability Lecture 5 January 14, 2015.
CSC 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Nondeterminism.
CS 490: Automata and Language Theory Daniel Firpo Spring 2003.
CS5371 Theory of Computation Lecture 8: Automata Theory VI (PDA, PDA = CFG)
Prof. Busch - LSU1 Pushdown Automata PDAs. Prof. Busch - LSU2 Pushdown Automaton -- PDA Input String Stack States.
Fall 2005Costas Busch - RPI1 Pushdown Automata PDAs.
1 Pushdown Automata PDAs. 2 Pushdown Automaton -- PDA Input String Stack States.
CS 3240: Languages and Computation Pushdown Automata & CF Grammars NOTE: THESE ARE ONLY PARTIAL SLIDES RELATED TO WEEKS 9 AND 10. PLEASE REFER TO THE TEXTBOOK.
CSCI 2670 Introduction to Theory of Computing September 21, 2005.
Pushdown Automata.
CSCI 2670 Introduction to Theory of Computing September 20, 2005.
Pushdown Automata CS 130: Theory of Computation HMU textbook, Chap 6.
Pushdown Automata (PDAs)
CSC 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong NFA to DFA.
CSCI 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Context-free.
Push-down Automata Section 3.3 Fri, Oct 21, 2005.
Pushdown Automata Chapters Generators vs. Recognizers For Regular Languages: –regular expressions are generators –FAs are recognizers For Context-free.
CS 208: Computing Theory Assoc. Prof. Dr. Brahim Hnich Faculty of Computer Sciences Izmir University of Economics.
CSCI 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong NFA to.
Foundations of (Theoretical) Computer Science Chapter 2 Lecture Notes (Section 2.2: Pushdown Automata) Prof. Karen Daniels, Fall 2010 with acknowledgement.
CSCI 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Pushdown.
Lecture 14UofH - COSC Dr. Verma 1 COSC 3340: Introduction to Theory of Computation University of Houston Dr. Verma Lecture 14.
Donghyun (David) Kim Department of Mathematics and Physics North Carolina Central University 1 Chapter 2 Context-Free Languages Some slides are in courtesy.
CSC 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Pushdown.
Pushdown Automata Hopcroft, Motawi, Ullman, Chap 6.
Grammar Set of variables Set of terminal symbols Start variable Set of Production rules.
FORMAL LANGUAGES, AUTOMATA, AND COMPUTABILITY
Pushdown Automata Chapter 12. Recognizing Context-Free Languages Two notions of recognition: (1) Say yes or no, just like with FSMs (2) Say yes or no,
Theory of Computation Automata Theory Dr. Ayman Srour.
Lecture 11  2004 SDU Lecture7 Pushdown Automaton.
CSCI 2670 Introduction to Theory of Computing September 22, 2004.
Recap: Nondeterministic Finite Automaton (NFA) A deterministic finite automaton (NFA) is a 5-tuple (Q, , ,s,F) where: Q is a finite set of elements called.
6. Pushdown Automata CIS Automata and Formal Languages – Pei Wang.
Nondeterminism The Chinese University of Hong Kong Fall 2011
Pushdown Automata.
CSE 105 theory of computation
Pushdown Automata PDAs
Pushdown Automata PDAs
Pushdown Automata PDAs
Pushdown Automata PDAs
AUTOMATA THEORY VI.
Pushdown automata and CFG ↔ PDA conversions
Context-Free Languages
Definition Moves of the PDA Languages of the PDA Deterministic PDA’s
Chapter 2 Context-Free Language - 01
CSE 105 theory of computation
Pushdown automata The Chinese University of Hong Kong Fall 2011
CSE 105 theory of computation
Nondeterminism The Chinese University of Hong Kong Fall 2010
CSE 105 theory of computation
Presentation transcript:

CSC 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong Pushdown automata Fall 2008

Motivation We had two ways to describe regular languages How about context-free languages? regular expression DFANFA syntactic computational CFGpushdown automaton syntactic computational

Pushdown automata versus NFA Since context-free is more powerful than regular, pushdown automata must generalize NFAs state control 0100 input NFA

Pushdown automata A pushdown automaton has access to a stack, which is a potentially infinite supply of memory state control 0100 input pushdown automaton (PDA) … stack

Pushdown automata As the PDA is reading the input, it can push / pop symbols in / out of the stack state control 0100 input pushdown automaton (PDA) Z0Z0 01 stack … 1

Rules for pushdown automata Multiple and  -transitions are allowed Stack is always accessed from the top Each transition can pop and/or push into stack Transitions depend on input symbol and on last symbol popped from stack Automaton accepts if after reading whole input, it can reach an accepting state

Example L = {0 n #1 n : n ≥ 0} state control 000# input $ aa stack a … 111 read 0 push a read # read 1 pop a pop $ push $

Shorthand notation read, pop / push read 0 push a read # read 1 pop a pop $ push $ 0,  / a #,  /  1, a /  , $ /  ,  / $ convention: we use $ for “end of stack”

Formal definition A pushdown automaton is (Q, , , , q 0, F) : –Q is a finite set of states; –  is the input alphabet; –  is the stack alphabet –q 0 in Q is the initial state; –F  Q is a set of final states; –  is the transition function  : Q  (   {  })  (   {  }) → subsets of Q  (   {  }) stateinput symbolpop symbolstatepush symbol

Example  : Q  (   {  })  (   {  }) → subsets of Q  (   {  })  (q 1, 0,  ) = {(q 1, a)}  (q 1, 1,  ) = ∅  (q 1, #,  ) = {(q 1,  )}  (q 1, 0,  ) = ∅... 0,  / a #,  /  1, a /  , $ /  ,  / $ q0q0 q1q1 q2q2 q3q3  = {0, 1, #}  = {$, a}

Example 1 L = {ww R : w  ∈  *}  = {0, 1} , 00, 0110 ∈ L 1, 011, 010 ∉ L 0,  / 0 ,  / $ q0q0 q1q1 1,  / 1 0, 0 /  q2q2 1, 1 /  q3q3 , $  / ,  / 

Example 2 L = {w: w = w R, w  ∈  *}  = {0, 1} , 1, 00, 010, 0110 ∈ L 011 ∉ L 0,  / 0 ,  / $ q0q0 q1q1 1,  / 1 0, 0 /  q2q2 1, 1 /  q3q3 , $  /  ,  /  0,  /  1,  /  or xxxRxR xRxR

Example 3 L = {0 n 1 m 0 m 1 n | n  0, m  0}  = {0, 1} 0,  / 0 ,  / $ q0q0 q1q1 1,  / 1 q2q2 , $  /  ,  /  q5q5 q4q4 q3q3 0, 1 /  1, 0/ 

Example 4 L = {w: w has same number 0s and 1s}  = {0, 1} Strategy:Stack keeps track of excess of 0 s or 1 s If at the end, stack is empty, number is equal 0,  / 0 ,  / $ q0q0 q1q1 1,  / 1 q3q3 , $  /  0, 1 /  1, 0 / 

Example 4 L = {w: w has same number 0s and 1s}  = {0, 1} 0,  / 0 ,  / $ q0q0 q1q1 1,  / 1 q3q3 , $  /  0, 1 /  1, 0 /  w = readstack 0$0 0$00 1$0 1$ 1$1 0$

Example 5 L = {w: w has two 0-blocks with same number of 0s Strategy:Guess where first block starts Record 0 s on stack 01011, , , allowednot allowed Guess where second block starts Match 0 s from stack

Example 5 L = {w: w has two 0-blocks with same number of 0s Strategy:Guess where first block starts Record 0 s on stack Guess where second block starts Match 0 s from stack It either starts at the beginning, or after some 1 After that we must see at least one 0 Then you see a 1, or a pattern 1(0+1)*1 Accept if stack is empty either after next 1, or if you reach end of string

Example 5 L = {w: w has two 0-blocks with same number of 0s 0,  /  ,  / $ q0q0 q1q1 q2q2 1,  /  0,  / 0 q3q3 ,  / $ q5q5 1,  /  q4q4 0,  /  1,  /  0, 0  /  1, $  /  q6q6 0,  /  1,  /  q7q7 , $  / 

Main theorem A language L is context-free if and only if it is accepted by some pushdown automaton. context-free grammarpushdown automaton

A convention Sometimes we denote “transitions” by: This will mean: a, b  / c 1 c 2 c 3 q0q0 q1q1 ,  / c 2 q0q0 q1q1 a, b  / c 1 ,  / c 3 intermediate states pop b, then push c 1, c 2, and c 3

From CFGs to PDAs Idea: Use PDA to simulate derivations A → 0A1 A → B B → # A  0A1  00A11  00B11  00#11 PDA control: CFG: write start variable stack: $A replace production in reverse $1A0 pop terminals and match $1A e, e / A 0, 0 / e e, A / 1A0 input: 00#11 0#11 replace production in reverse $11A0e, A / 1A0 0#11 pop terminals and match $11A0, 0 / e #11 replace production in reverse $11Be, A / B #11

From CFGs to PDAs If, after reading whole input, PDA ends up with an empty stack, derivation must be valid Conversely, if there is no valid derivation, PDA will get stuck somewhere –Either unable to match next input symbol, –Or match whole input but stack non empty

Description of PDA for CFGs Push $ onto stack Repeat the following steps: –If the top of the stack is a variable A : Choose a rule A →  and substitute A with  –If the top of the stack is a terminal a : Read next input symbol and compare to a If they don’t match, reject (die) –If top of stack is $, go to accept state

Description of PDA for CFGs q0q0 q1q1 q2q2 ,  / $S a, a /  for every terminal a , A /  k...  1 for every production A →  1...  k , $ / 

From PDAs to CFGs First, we simplify the PDA: –It has a single accept state q f –It empties its stack before accepting –Each transition is either a push, or a pop, but not both context-free grammarpushdown automaton ✓

Simplifying the PDA First, we simplify the PDA: –It has a single accept state q f –It empties its stack before accepting –Each transition is either a push, or a pop, but not both 0,  / a 1, a / b 1, b /  q1q1 q2q2 q3q3 ,  /  q0q0 ,  / $ qfqf , b /  , a /  , $ / 

Simplifying the PDA First, we simplify the PDA: –It has a single accept state q f –It empties its stack before accepting –Each transition is either a push, or a pop, but not both 0,  / a 1, a / b 1, b /  q1q1 q2q2 q3q3 ,  /  q0q0 ,  / $ qfqf , b /  , a /  , $ / 

Simplifying the PDA First, we simplify the PDA: –It has a single accept state q f –It empties its stack before accepting –Each transition is either a push, or a pop, but not both 0,  / a 1, a /  1, b /  q1q1 q2q2 q3q3 ,  / x q0q0 ,  / $ qfqf , b /  , a /  , $ /  q 13 , x /  ,  / x q 23 , x /  q 12 ,  / b

From PDAs to CFGs We look at the stack in an accepting computation: a $$ a $ a $ a $ a $ a $ a $ a $ a $$ baccc a portions that preserve the stack q3q3 q1q1 q7q7 q0q0 q1q1 q2q2 q1q1 q3q3 q7q7 A 03 = {x: x leads from q 0 to q 3 and preserves stack}  11  01  0 0 input state stack qfqf q0q0 q1q1 0 q1q1 1

From PDAs to CFGs aaaaaaaaa baccc a q0q0 q1q1 q3q3 q1q1 q7q7 q1q1 q2q2 q1q1 q7q7  11  01  0 00 input state stack A 11 A 03 0  A 03 → 0A 11  q0q0 q3q3 qfqf $$$$$$$$$$$ q1q1 1

From PDAs to CFGs aaaaaaaaa baccc a q3q3 q1q1 q7q7 q1q1 q2q2 q1q1 q7q7  11  01  0 0 input state stack A 03 A 13 A 13 → A 10 A 03 q0q0 q3q3 A 10 qfqf q0q0 q1q1 0 q1q1 1 $$$$$$$$$$$

From PDAs to CFGs qiqi qjqj a,  / t b, t /  q i’ q j’ A ij → aA i’j’ b qiqi qjqj qkqk A ik → A ij A jk qiqi A ii →  variables: A ij start variable: A0fA0f

Example start variable: A 03 productions: A 00 → A 00 A 00 A 00 → A 01 A 10 A 00 → A 03 A 30 A 01 → A 01 A 11 A 01 → A 02 A 21 A 00 → ... A 11 →  A 22 →  A 12 → 0A 12 1 A 12 → 0A 11 A 33 →  0,  / a ,  / $ , $ /  1, a /  q0q0 q2q2 q3q3 q1q1 , a /  A 03 → A 12