Pushdown Automata
Total Page:16
File Type:pdf, Size:1020Kb
Pushdown Automata Announcements ● Problem Set 5 due this Friday at 12:50PM. ● Late day extension: Using a 72-hour late day now extends the due date to 12:50PM on Tuesday, February 19th. The Weak Pumping Lemma ● The Weak Pumping Lemma for Regular Languages states that For any regular language L, There exists a positive natural number n such that For any w ∈ L with |w| ≥ n, There exists strings x, y, z such that For any natural number i, w = xyz, w can be broken into three pieces, y ≠ ε where the middle piece isn't empty, where the middle piece can be xyiz ∈ L replicated zero or more times. Counting Symbols ● Consider the alphabet Σ = { 0, 1 } and the language L = { w ∈ Σ* | w contains an equal number of 0s and 1s. } ● For example: ● 01 ∈ L ● 110010 ∈ L ● 11011 ∉ L ● Question: Is L a regular language? The Weak Pumping Lemma L = { w ∈ {0, 1}*| w contains an equal number of 0s and 1s. } 1 0 0 1 An Incorrect Proof Theorem: L is regular. Proof: We show that L satisfies the condition of the pumping lemma. Let n = 2 and consider any string w ∈ L such that |w| ≥ 2. Then we can write w = xyz such that x = z = ε and y = w, so y ≠ ε. Then for any natural number i, xyiz = wi, which has the same number of 0s and 1s. Since L passes the conditions of the weak pumping lemma, L is regular. ■ The Weak Pumping Lemma ● The Weak Pumping Lemma for Regular Languages states that ThisThis sayssays nothingnothing aboutabout For any regular language L, languageslanguages thatthat aren'taren't regular!regular! There exists a positive natural number n such that For any w ∈ L with |w| ≥ n, There exists strings x, y, z such that For any natural number i, w = xyz, w can be broken into three pieces, y ≠ ε where the middle piece isn't empty, where the middle piece can be xyiz ∈ L replicated zero or more times. Caution with the Pumping Lemma ● The weak and full pumping lemmas describe a necessary condition of regular languages. ● If L is regular, L passes the conditions of the pumping lemma. ● The weak and full pumping lemmas are not a sufficient condition of regular languages. ● If L is not regular, it still might pass the conditions of the pumping lemma! ● If a language fails the pumping lemma, it is definitely not regular. ● If a language passes the pumping lemma, we learn nothing about whether it is regular or not. L is Not Regular ● The language L can be proven not to be regular using a stronger version of the pumping lemma. ● To see the full pumping lemma, we need to revisit our original insight. An Important Observation 0, 1 1 0, 1 q5 0 q2 1 1 start 0 0 1 q0 q1 q3 q4 0 0 1 1 0 1 1 0 1 1 0 1 1 1 q0 q1 q2 q3 q1 q2 q3 q1 q2 q3 q1 q2 q3 q4 Pumping Lemma Intuition ● Let D be a DFA with n states. ● Any string w accepted by D that has length at least n must visit some state twice within its first n characters. ● Number of states visited is equal n + 1. ● By the pigeonhole principle, some state is duplicated. ● The substring of w in-between those revisited states can be removed, duplicated, tripled, quadrupled, etc. without changing the fact that w is accepted by D. The Pumping Lemma For any regular language L, There exists a positive natural number n such that For any w ∈ L with |w| ≥ n, There exists strings x, y, z such that For any natural number i, w = xyz, w can be broken into three pieces, |xy| ≤ n, where the first two pieces occur at the start of the string, y ≠ ε where the middle piece isn't empty, xyiz ∈ L where the middle piece can be replicated zero or more times. Why This Change Matters ● The restriction |xy| ≤ n means that we can limit where the string to pump must be. ● If we specifically craft the first n characters of the string to pump, we can force y to have a specific property. ● We can then show that y cannot be pumped arbitrarily many times. The Pumping Lemma L = { w ∈ {0, 1}*| w contains an equal number of 0s and 1s. } Suppose the pumping length is 4. 0 0 0 0 1 1 1 1 ≤ SinceSince |xy||xy| ≤ 4,4, thethe stringstring toto pumppump mustmust bebe somewheresomewhere inin here.here. L = { w ∈ {0, 1}* | w has an equal number of 0s and 1s } Theorem: L is not regular. Proof: By contradiction; assume that L is regular. Let n be the length guaranteed by the pumping lemma. Consider the string w = 0n1n. Then |w| = 2n ≥ n and w ∈ L. Therefore, there exist strings x, y, and z such that w = xyz, |xy| ≤ n, y ≠ ε, and for any natural number i, xyiz ∈ L. Since |xy| ≤ n, y must consist solely of 0s. But then xy2z = 0n+|y|1n, and since |y| > 0, we have that xy2z ∉ L. We have reached a contradiction, so our assumption was wrong and L is not regular. ■ Summary of the Pumping Lemma ● Using the pigeonhole principle, we can prove the weak pumping lemma and pumping lemma. ● These lemmas describe essential properties of the regular languages. ● Any language that fails to have these properties cannot be regular. Beyond Finite Automata Where We Are ● Our study of the regular languages gives us an exact characterization of problems that can be solved by finite computers. ● Not all languages are regular. ● How do we build more powerful computing devices? The Problem ● Finite automata accept precisely the regular languages. ● We may need unbounded memory to recognize context-free languages. ● e.g. { 0n1n | n ∈ ℕ } requires unbounded counting. ● How do we build an automaton with finitely many states but unbounded memory? TheThe finite-statefinite-state controlcontrol actsacts asas aa finitefinite memory.memory. TheThe inputinput tapetape holdsholds thethe inputinput string.string. A B C A ... Memory Device WeWe cancan addadd anan infiniteinfinite memorymemory devicedevice thethe finite-statefinite-state controlcontrol cancan useuse toto storestore information.information. Adding Memory to Automata ● We can augment a finite automaton by adding in a memory device for the automaton to store extra information. ● The finite automaton now can base its transition on both the current symbol being read and values stored in memory. ● The finite automaton can issue commands to the memory device whenever it makes a transition. ● e.g. add new data, change existing data, etc. Stack-Based Memory ● There are many types of memory that we might give to an automaton. ● We'll see at least two this quarter. ● One of the simplest types of memory is a stack. b a Stack-Based Memory ● Only the top of the stack is visible at any point in time. ● New symbols may be pushed onto the stack, which cover up the old stack top. ● The top symbol of the stack may be popped, exposing the symbol below it. Pushdown Automata ● A pushdown automaton (PDA) is a finite automaton equipped with a stack-based memory. ● Each transition ● is based on the current input symbol and the top of the stack, ● optionally pops the top of the stack, and ● optionally pushes new symbols onto the stack. ● Initially, the stack holds a special symbol Z0 that indicates the bottom of the stack. Our First PDA ● Consider the language L = { w ∈ Σ* | w is a string of balanced digits } over Σ = { 0, 1 } ● We can exploit the stack to our advantage: ● Whenever we see a 0, push it onto the stack. ● Whenever we see a 1, pop the corresponding 0 from the stack (or fail if not matched) ● When input is consumed, if the stack is empty, accept. A Simple Pushdown Automaton 0, Z0 → 0Z0 0, 0 → 00 1, 0 → ε ε, Z → ε start 0 A Simple Pushdown Automaton ToTo findfind anan applicableapplicable 0, Z0 → 0Z0 transition,transition, matchmatch thethe 0, 0 → 00 current input/stack pair. 1, 0 → ε current input/stack pair. ε, Z → ε start 0 AA transitiontransition ofof thethe formform a,a, b b → → z z Z0 MeansMeans “If“If thethe currentcurrent inputinput symbolsymbol isis aa andand thethe currentcurrent stackstack symbolsymbol isis b,b, thenthen 0 0 0 1 1 1 followfollow thisthis transition,transition, poppop b,b, andand pushpush thethe stringstring z.z. A Simple Pushdown Automaton 0, Z0 → 0Z0 0, 0 → 00 1, 0 → ε ε, Z → ε start 0 IfIf aa transitiontransition readsreads thethe toptop symbolsymbol ofof thethe stack,stack, itit alwaysalways popspops thatthat symbolsymbol (though(though itit mightmight replacereplace it)it) 0 0 0 1 1 1 A Simple Pushdown Automaton 0, Z0 → 0Z0 0, 0 → 00 1, 0 → ε ε, Z → ε start 0 EachEach transitiontransition thenthen pushespushes somesome Z (possibly(possibly empty)empty) stringstring backback ontoonto thethe 0 0 stack.stack. NoticeNotice thatthat thethe leftmostleftmost symbolsymbol isis pushedpushed ontoonto thethe top.top. 0 0 0 1 1 1 A Simple Pushdown Automaton 0, Z0 → 0Z0 0, 0 → 00 1, 0 → ε ε, Z → ε start 0 ε WeWe nownow pushpush thethe stringstring ε ontoonto the stack, which adds no new the stack, which adds no new 0 0 Z0 characters.characters. ThisThis essentiallyessentially meansmeans “pop“pop thethe stack.”stack.” 0 0 0 1 1 1 A Simple Pushdown Automaton 0, Z0 → 0Z0 0, 0 → 00 1, 0 → ε ε, Z → ε start 0 ThisThis transitiontransition cancan bebe takentaken atat anyany time Z0 is atop the stack, but we've Z time Z0 is atop the stack, but we've 0 nondeterministicallynondeterministically guessedguessed thatthat thisthis wouldwould bebe aa goodgood timetime toto taketake it.it.