Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Context-Free Frontier - Automata and Complexity Theory - Lecture Slides, Slides of Theory of Automata

Some concept of Automata and Complexity Theory are Administrivia, Closure Properties, Context-Free Grammars, Decision Properties, Deterministic Finite Automata, Intractable Problems, More Undecidable Problems. Main points of this lecture are: Context-Free Frontier, Free Languages, Major Language Categories, Regular Languages, Pumping Parse Trees, the Language, Closure Properties, Non-Closure Properties, Pumping Lemma, Pumping-Lemma Proofs

Typology: Slides

2012/2013

Uploaded on 04/29/2013

juni
juni 🇮🇳

4

(16)

136 documents

1 / 59

Toggle sidebar

Related documents


Partial preview of the text

Download Context-Free Frontier - Automata and Complexity Theory - Lecture Slides and more Slides Theory of Automata in PDF only on Docsity! Chapter Fourteen: The Context-Free Frontier Docsity.com At this point we have two major language categories, the regular languages and the context- free languages, and we have seen that the CFLs include the regular languages, like this: regular languages CFLs L(a*b*) {anbn} Are there languages outside of the CFLs? In this chapter we will see that the answer is yes, and we will see some simple examples of languages that are not CFLs. We have already seen that there are many closure properties for regular languages. Given any two regular languages, there are many ways to combine them—intersections, unions, and so on—that are guaranteed to produce another regular language. The context-free languages also have some closure properties, though not as many as the regular languages. If regular languages are a safe and settled territory, context-free languages are more like frontier towns. Some operations like union get you safely to another context-free language; others like complement and intersection just leave you in the wilderness. Docsity.com Lemma 14.1.1 • As shown: – uvwxy is the whole derived string – A is the nonterminal that is its own descendant – vwx is the string derived from the ancestor A – w is the string derived from the descendant – |vwx| > |w|, so v and x are not both ε • There are two subtrees rooted at A • We can make other legal parse trees by substitution… S u v w x y A A If a grammar G generates a pumping parse tree with yield as shown, then L(G) includes uviwxiy for all i. Docsity.com Cut And Paste, i = 0 • We can replace the vwx subtree with the w subtree • That makes a parse tree for uwy • That is, uviwxiy for i = 0 S u v w x y A A S u w y A Docsity.com Cut And Paste, i = 2 • We can replace the w subtree with the vwx subtree • That makes a parse tree for uvvwxxy • That is, uviwxiy for i = 2 S u v w x y A A S u v x y A v w x A A Docsity.com Useful Trees • If we can find a pumping parse tree, we can conclude that for all i, uviwxiy ∈ L(G) • And note that all these uviwxiy are distinct, because v and x are not both ε • The next lemma shows that pumping parse trees are not at all hard to find Docsity.com S → S | S+S | S*S | a | b | c S b a S + S S S + S S * S a b c S a Height Of A Parse Tree • The height of a parse tree is the number of edges in the longest path from the start symbol to any leaf • For example: • These are parse trees of heights 1, 2, and 3: Docsity.com S → S | S+S | S*S | a | b | c S S + S S * S a b S c S S + S b c a S * S Minimum-Size Parse Trees • A minimum-size parse tree for a string x in a grammar G is a parse tree that generates x, and has no more nodes than any other parse tree in G that generates x • For example: • Both these trees generate a*b+c, but the second one is not minimum size: Docsity.com Theorem 14.2 • Proof: let G = (V, Σ, S, P) be any CFG, Σ = {a,b,c} • Suppose by way of contradiction that L(G) = {anbncn} • By Lemma 14.1.2, G generates a pumping parse tree • By Lemma 14.1.1, for some k, akbkck = uvwxy, where v and x are not both ε and uv2wx2y is in L(G) • v and x must each contain only as, only bs, or only cs; otherwise uv2wx2y is not even in L(a*b*c*) • So uv2wx2y has more than k copies or one or two symbols, but only k of the third • uv2wx2y ∉ {anbncn}; by contradiction, L(G) ≠ {anbncn} The language {anbncn} is not a CFL. Docsity.com The Insight • There must be some string in L(G) with a pumping parse tree: akbkck = uvwxy • But no matter how you break up akbkck into those substrings uvwxy (where v and x are not both ε) you can show uv2wx2y ∉ {anbncn} • Either: – v or x has more than one kind of symbol – v and x have at most one kind of symbol each Docsity.com • If v or x has more than one kind of symbol: – uv2wx2y would have as after bs and/or bs after cs – Not even in L(a*b*c*), so certainly not in {anbncn} – Example: • If v and x have at most one kind each: – uv2wx2y has more of one or two, but not all three – Not in {anbncn} – Example: a a a a a b b b b b c c c c c u v w x y a a a a a b b b b b c c c c c u v w x y Docsity.com Theorem 14.3.1 • Proof is by construction using CFGs • Given G1 = (V1, Σ1, S1, P1) and G2 = (V2, Σ2, S2, P2), with L(G1) = L1 and L(G2) = L2 • Assume V1 and V2 are disjoint (without loss of generality, because symbols could be renamed) • Construct G = (V, Σ, S, P), where – V = V1∪V2∪{S} – Σ = Σ1∪Σ2 – P = P1∪P2∪{(S→S1), (S→S2)} • L(G) = L1 ∪ L2, so L1 ∪ L2 is a CFL If L1 and L2 are any context-free languages, L1 ∪ L2 is also context free. Docsity.com Theorem 14.3.2 • Proof is by construction using CFGs • Given G1 = (V1, Σ1, S1, P1) and G2 = (V2, Σ2, S2, P2), with L(G1) = L1 and L(G2) = L2 • Assume V1 and V2 are disjoint (without loss of generality, because symbols could be renamed) • Construct G = (V, Σ, S, P), where – V = V1∪V2∪{S} – Σ = Σ1∪Σ2 – P = P1∪P2∪{(S→S1S2)} • L(G) = L1L2, so L1L2 is a CFL If L1 and L2 are any context-free languages, L1L2 is also context free. almost the same proof! Docsity.com Kleene Closure • The Kleene closure of any language L is L* = {x1x2 ... xn | n ≥ 0, with all xi ∈ L} • This parallels our use of the Kleene star in regular expressions Docsity.com Outline • 14.1 Pumping Parse Trees • 14.2 The Language {anbncn} • 14.3 Closure Properties For CFLs • 14.4 Non-Closure Properties • 14.5 A Pumping Lemma • 14.6 Pumping-Lemma Proofs • 14.7 The Languages {xx} Docsity.com Non-Closure Properties • As we just saw, CFLs have some of the same closure properties as regular languages • But not all • Not closed for intersection or complement… Docsity.com Theorem 14.4.1 • Proof: by counterexample • Consider these CFGs: • Now L(G1) = {anbncm}, while L(G2) = {ambncn} • The intersection is {anbncn}, which is not a CFL • So the CFLs are not closed for intersection The CFLs are not closed for intersection. S1 → A1B1 A1 → aA1b | ε B1 → cB1 | ε S2 → A2B2 A2 → aA2 | ε B2 → bB2c | ε Docsity.com Theorem 14.4.2 • Proof 2: by counterexample • Let L be the non-CFL {xx | x ∈ {a,b}*} • We will show that L = {x ∈ {a,b}* | x ∉ L} is a CFL (next slide) • Thus we have a language L that is a CFL, and its complement L = L is not a CFL • So the CFLs are not closed for complement The CFLs are not closed for complement. Docsity.com {x ∈ {a,b}* | x ≠ ss for any s} • The language includes: – All odd-length strings – And all even-length strings with a somewhere in the first half, but a corresponding b in the second: – And all even-length strings with b somewhere in the first half, but a corresponding a in the second center i symbols j symbols i symbols j symbols a b . . . . . . . . . . . . Docsity.com • waxybz, where |w| = |y| = i and |x| = |z| = j • Since the x and y parts can be any strings, we can swap them in the picture: • This is {way | |w| = |y|}, concatenated with {xbz | |x| = |z|} center i symbols j symbols i symbols j symbols a b . . . . . . . . . . . . i symbols j symbols i symbols j symbols a b . . . . . . . . . . . . Docsity.com Pumping Parse Trees, Review • A pumping parse tree for a CFG G = (V, Σ, S, P) is a parse tree with two properties: 1 There is a node for some nonterminal symbol A, which has that same nonterminal symbol A as one of its descendants 2 The terminal string generated from the ancestor A is longer than the terminal string generated from the descendant A • We proved that every grammar for an infinite language generates a pumping parse tree • To make a general-purpose pumping lemma, we need to be more specific about those As… S u v w x y A A Docsity.com Lemma 14.5.1 For every grammar G = (V, Σ, S, P) , every minimum-size parse tree of height greater than |V| can be expressed as a pumping parse tree with the properties shown: S u v w x y A A height ≤ |V|+1 height ≥ |V|+1 Docsity.com S u v w x y A A height ≤ |V|+1 height ≥ |V|+1 • Choose any path from root to leaf with > |V| edges • Working from leaf back to root along that path, choose the first two nodes that repeat some A • As in Lemma 27.1.2, this is a pumping parse tree • Some nonterminal must have repeated within the first |V|+1 edges from the leaf, the height of the subtree generating vwx is ≤ |V|+1 Docsity.com The Value Of k • Our two proofs gave two different values for k • That doesn't matter • For any grammar G there is a bound k on the yield of a tree or subtree of height ≤ |V|+1 • We'll use the fact that such a k exists in proofs; we won't need an actual value • Just like the k in the pumping lemma for regular languages Docsity.com Lemma 14.5.3: The Pumping Lemma for Context-Free Languages • L is a CFL, so there is some CFG G with L(G) = L • Let k be as given for G by Lemma 14.5.2 • We are then given some z ∈ L with |z| ≥ k • Consider any minimum-size parse tree for z • It has height > |V|+1, so Lemma 14.5.1 applies • This is a parse tree for z (property 1), it is a pumping parse tree (properties 2 and 4), and the subtree generating vwx has height ≤ |V|+1 (property 3) For all context-free languages L there exists some k ∈ N such that for all z ∈ L with |z| ≥ k, there exist uvwxy such that: 1. z = uvwxy, 2. v and x are not both ε, 3. |vwx| ≤ k, and 4. for all i, uviwxiy ∈ A. Docsity.com Pumping Lemma Structure • As with the pumping lemma for regular languages, this has alternating "for all" and "there exist" clauses: 1 ∀ L … 2 ∃ k … 3 ∀ z … 4 ∃ uvwxy … 5 ∀ i … • Our proof showed how to construct the ∃ parts • Now we'll forget about the construction, and only use the ∃ For all context-free languages L there exists some k ∈ N such that for all z ∈ L with |z| ≥ k, there exist uvwxy such that: 1. z = uvwxy, 2. v and x are not both ε, 3. |vwx| ≤ k, and 4. for all i, uviwxiy ∈ A. Docsity.com Pumping-Lemma Proofs • The pumping lemma is very useful for proving that languages are not context free • For example, {anbncn}… Docsity.com {anbncn} Is Not Context Free 1 Proof is by contradiction using the pumping lemma for context-free languages. Assume that L = {anbncn} is context free, so the pumping lemma holds for L. Let k be as given by the pumping lemma. 2 Choose z = akbkck. Now z ∈ L and |z| ≥ k as required. 3 Let u, v, w, x, and y be as given by the pumping lemma, so that uvwxy = akbkck, v and x are not both ε, |vwx| ≤ k, and for all i, uviwxiy ∈ L. 4 Now consider pumping with i = 2. The substrings v and x cannot contain more than one kind of symbol each—otherwise the string uv2wx2y would not even be in L(a*b*c*). So the substrings v and x must fall within the string akbkck in one of these ways… Docsity.com {anbncn}, Continued But in all these cases, since v and x are not both ε, pumping changes the number of one or two of the symbols, but not all three. So uv2wx2y ∉ L. 5 This contradicts the pumping lemma. By contradiction, L = {anbncn} is not context free. ak bk ck 1. v x 2. v x 3. v x 4. v x 5. v x 6. v x Docsity.com • Proof: by contradiction using the pumping lemma • Assume L = {anbmcn | m ≤ n} is a CFL • Let k be as given by the pumping lemma • Choose z = akbkck, so we have z ∈ L and |z| ≥ k • Let u, v, w, x, and y be as given by the lemma • Now uvwxy = akbkck, v and x are not both ε, |vwx| ≤ k , and for all i, uviwxiy ∈ L • Now consider pumping with i = 2 • v and x cannot contain more than one kind of symbol each; otherwise uv2wx2y ∉ L(a*b*c*) • That leaves 6 cases… Theorem 14.6 The language {anbmcn | m ≤ n} is not context free. Docsity.com ak bk ck 1. v x 2. v x 3. v x 4. v x 5. v x 6. v x • But cases 1-5 have uv2wx2y ∉ L : – Case 1 has more as than cs – Case 2 has more as than cs, or more bs than cs, or both – Case 3 has more bs than as and more bs than cs – Case 4 has more bs than as, or more cs than as, or both – Case 5 has more cs than as and more cs than bs • And case 6 contradicts |vwx|≤k • By contradiction, L = {anbmcn | m ≤ n} is not a CFL Docsity.com Outline • 14.1 Pumping Parse Trees • 14.2 The Language {anbncn} • 14.3 Closure Properties For CFLs • 14.4 Non-Closure Properties • 14.5 A Pumping Lemma • 14.6 Pumping-Lemma Proofs • 14.7 The Languages {xx} Docsity.com • For cases 1-5, choose i=0 – Then uv0wx0y is some sakbk where |s| < 2k – The last symbol of the first half is an a, but the last symbol of the second half is a b – So uv0wx0y ∉ L ak bk ak bk 1. v x 2. v x 3. v x 4. v x 5. v x 6. v x 7. v x 8. v x 9. v x 10. v x 11. v x 12. v x 13. v x Docsity.com • For cases 6-8, choose i=0 – Then uv0wx0y is some aksbk where |s| < 2k – This can't be rr for any string r; because if r starts with k as and ends with k bs, we must have |r|≥2k and so |rr|≥4k, while our |aksbk |<4k – So uv0wx0y ∉ L ak bk ak bk 1. v x 2. v x 3. v x 4. v x 5. v x 6. v x 7. v x 8. v x 9. v x 10. v x 11. v x 12. v x 13. v x Docsity.com • For cases 9-13, choose i=0 – Then uv0wx0y is some akbks where |s| < 2k – The first symbol of the first half is an a, but the first symbol of the second half is a b – So uv0wx0y ∉ L • We have a contradiction in every case, so L is not a CFL ak bk ak bk 1. v x 2. v x 3. v x 4. v x 5. v x 6. v x 7. v x 8. v x 9. v x 10. v x 11. v x 12. v x 13. v x Docsity.com
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved