Professional Documents
Culture Documents
Comp CFL 10
Comp CFL 10
Problems Lewis-Papadimitriou Construct context free grammars to accept the following languages. Problem 5. Problem 6. (2.4b) {w | w starts and ends with the same symbol} (2.4c) {w | |w| is odd}
(2.4d) {w | |w| is odd and its middle symbol is 0} {w#x | wR is a substring of x, where w, x {a, b}*} {0n1n | n>0} U {0n12n | n>0}
Problem 10. {0i1j2k | ij or jk} Problem 11. Binary strings with twice as many 1s as 0s. Problems Linz Problem 12. (134/8c): Find a Context-Free Grammar for the following language: L = {anbmck : k = n + m } Problem 13. (134/8c): L = {anbmck : k n + m } (Variation on a theme). Ambiguity Problem 14. Explain why the grammar below is ambiguous. S 0A | 1B A 0AA | 1S | 1 B 1BB | 0S | 0 Problem 15. Given the following ambiguous context free grammar S Ab | aaB A a | Aa Bb (a) Find the string s generated by the grammar that has two leftmost derivations. Show the derivations. (b) Show the two derivation trees for the string s. (c) Find an equivalent unambiguous context-free grammar. (d) Give the unique leftmost derivation and derivation tree for the string s generated from the unambiguous grammar above.
Let M be the PDA that accepts even-length palindromes over {a, b}. That is,
b B/ a A/ /
q1
q0
q1
(a, b/c stands for a, bc) a) Give the transition table of M. b) Trace all computation of the strings ab, abb, abbbb in M. c) Show that aaaa, baab L (M). d) Show that aaa, ab L (M).
Problem 2.
CH8 3k
Construct a PDA that accepts the set of palindromes over {a, b}.
Problem 3.
CH8 15a
Let M be the PDA in example 8.1.1. the PDA that accepts the language
b B/ a A/ c /
q1
A successful computation records the string w on the stack as it is processed. Once the c is encountered, the accepting state q1 is entered and the stack contains a string representing wR. The computation is completed by matching the remaining input with the elements of the stack. Trace the computation that accepts bbcbb.
NPDA EXAMPLES
Sipser Construct non-deterministic pushdown automata to accept the following languages. (Note: has the same meaning as ) Example 1. Example 2. Example 3. Example 4. Linz Example 5. Example 6. Example 7. L = {anb2n: n 0} L = {R: {a,b}*, {a,b}} Construct the NPDA corresponding to the grammar S aABB | aAA A aBB | a B bBB | A (Problem 5 on page 194, Linz) DPDA EXAMPLES Sipser Construct deterministic pushdown automata to accept the following languages. {10n1n | n>0} U {110n12n | n>0} Binary strings that contain an equal number of 1s and 0s. Binary strings with twice as many 1s as 0s. {1n0n | n > 0} {0n12n | n 0} {1n0n | n>0} U {0n12n | n 0} (0+1)* - {ww | w in {0,1}*} (complement of ww)
Example 8.
Example 9.
Example 10.
Example 11.
Binary strings that start and end with the same symbol and have the same number of 0s as 1s.
(Problem 2 on page 199.) Problems Linz Problem 16. (134/8c): Find a Context-Free Grammar for the following language: L = {anbmck : k = n + m } Problem 17. (134/8c): L = {anbmck : k n + m } (Variation on a theme).
Ambiguity Problem 18. Explain why the grammar below is ambiguous. S 0A | 1B A 0AA | 1S | 1 B 1BB | 0S | 0
L = { a i b 2i a i i 0 }
Problem 4. (CH8 18a Sudkamp) Prove that the language
L = {a i b 2i c j i, j 0} is context-free.
Problem 5.
(17 page 220, Linz) We want to prove that the language L = {anbn: n 0 and n is not a multiple of 5} is a context-free language.
{1k0i1i0j1j0k | i, j, k > 0} {w#x | w is a substring of x, where w, x are in {0,1}*}. {0i1i0j1i | i, j > 0} The complement of {(0n1n)m| m, n > 0}.
Problem 10. 2.18 a. (Lewis-Papadimitriou): A = {0n1n0n1n | n >= 0}. Problem 11. 2.18 b (Lewis-Papadimitriou): B = {0n#02n#03n | n >= 0}. Problem 12. 2.18 c (Lewis-Papadimitriou): C = { w#x | w is a substring of x, where w, x {a, b}*}.
SOLUTIONS
CONTEXT-FREE GRAMMARS, CFG
Sudkamp examples Problem 1. 3.2.1 Which language generates the grammar G given by the productions S aSa | aBa B bB | b Solution L(G) = { an bm an | n > 0, m > 0}. The rule S aSa recursively builds an equal number of as on each end of the string. The recursion is terminated by the application of the rule S aBa, ensuring at least one leading and one trailing a. The recursive B rule then generates any number of bs. To remove the variable B from the string and obtain a sentence of the language, the rule B b must be applied, forcing the presence of at least one b.
Problem 2. 3.2.2 Find a CFG that generates the language L(G) = { an bm cm d2n | n 0, m > 0}. Solution The relationship between the number of leading as and trailing ds in the language indicates that the recursive rule is needed to generate them. The same is true for bs and cs. Derivations in the grammar S aSdd | A A bAc | bc
generate strings in an outside-to-inside manner. The S rules produce the as and ds while the A rules generate bs and cs. The rule A bc, whose application terminates the recursion, ensures the presence of the substring bc in every string in the language. 3.2.4 Problem 3. Find a CFG that generates the language L(G) = { an bm | 0 n m 2n}. Solution S aSb | aSbb | The first recursive rule of G generates a trailing b for every a, while the second generates two bs for each a. Thus there is at least one b for every a and at most two, as specified in the language.
3.2.5 Problem 4. Consider the grammar S abScB | B bB | b What language does it generate? Solution The recursive S rule generates an equal number of abs and cBs. The B rules generate b+. In a derivation, each occurrence of B may produce a different number of bs. For example in the derivation S abScB ababScBcB ababcBcB ababcbcB ababcbcbB ababcbcbb, the first occurrence of B generates a single b and the second occurrence produces bb. The language of the grammar consists of the set L(G) = { (ab)n (cbm)n | n 0, m > 0}.
10
Problems Lewis-Papadimitriou Construct context free grammars to accept the following languages. = {0, 1} Problem 5. Solution S 0A0 | 1A1 A 0A | 1A | (2.4b) {w | w starts and ends with the same symbol}
Problem 6. Solution
S 0A | 1 A 0S | 1S |
Problem 7. Solution
Problem 8. Solution
The following grammar generates language L, where S is the start variable. S AT A aAa | bAb | #T T aT | bT | The strings in the language have the form w#uwRv, where u and v are strings of the form (a + b)* (any string made from symbols a and b). The variable T generates the strings u and v, while variable A generates the string w#uwR and the variable S generates the desired string w#uwRv.
11
Problem 9. Solution
{0i1j2k | ij or jk}
12
Problem 12.
Solution Let G be the grammar with productions: S aSc | B B bBc | Claim: L(G) = L Proof: Consider the following derivation: S * anScn anBcn * anbmBcmcn anbmc(n + m) (where the first * applies S aSc n times, the second B bBc m times) Since all words in L(G) must follow this pattern in their derivations, it is clear that L(G) L Consider w L, w = anbmc(n+m) for some n, m 0 The derivation S * anScn anBcn * anbmBcmcn anbmc(n + m) clearly produces w for any n, m. L L(G) L = L(G) G is a CFG for L
F bFc | U aUc | V V bVc | bB Note: L(E) = {anbmck : k = n + m } (from 4(a) in Linz book)
Let L1 = {anbmck : k < n + m }, L2 = {anbmck : k > n + m } Claim: L(G) = L = L1 L2 Proof: Consider the leftmost productions following S EcC S EcC * anbmc(n+m)cC * anbmc(n+m)cckC anbmc(n+m)cck = anbmc(n+m+k+1) (where the first * follows from 4(a), the second from k repetitions of { C cC }) Since (n+m) < (n+m+k+1), L(EcC) L2 L Consider the leftmost productions following S aAE S aAE * aakAE aakE * aakanbmc(n+m)c = a(n+k+1)bmc(n+m) (where the first * follows from k repetitions of { A aA }, the second from 4(a)) Since (n+m+k+1) > (n+m), L(aAE) L1 L Consider the leftmost productions following S AU S AU * akAU akU * akanUcn akanVcn * akanbmVcmcn akanbmbBcmcn * akanbmbbjBcmcn akanbmbbjcmcn = a(k+n)b(m+j+1)c(m+n) (where the first, second, third and fourth * are k, n, m, and j repetitions of { A aA }, { U aUc }, { V bVc }, and { B bB }, respectively)
14
Since ((k+n)+(m+j+1)) > (m+n), L(AU) L1 L L(G) = L(S) = L(EcC) L(aAE) L(AU) L1 L2 = L Consider w L1, w = anbmc(n+m+k) for some n, m, k, with k > 0 Then w has the leftmost derivation: S EcC * anbmc(n+m)cC * anbmc(n+m)cc(k-1)C anbmc(n+m)cck(k-1) = anbmc(n+m+k) = w L2 L(G) Consider w L2, w = a(n+j)b(m+k)c(n+m) for some j, k, m, n, with j+k > 0 If k = 0, w has the leftmost derivation: S aAE * aa(j-1)AE aa(j-1)E * aa(j-1)anEcn aa(j-1)anFcn * aa(j1) n m
If k > 0, then w has the leftmost derivation: S AU * ajAU ajU * ajanUcn ajanVcn * ajanbmVcmcn ajanbmbBcmcn ajanbmbb(k-1)Bcmcn ajanbmbb(k-1)cmcn = a(j+n)b(m+k)c(m+n) = w L1 (k > 0) L(G) L1 L(G) L = L1 L2 L(G) L = L(G)
15
Ambiguity
Problem 14. Explain why the grammar below is ambiguous. S 0A | 1B A 0AA | 1S | 1 B 1BB | 0S | 0 Solution The grammar is ambiguous because we can find strings which have multiple derivations: S 0A00AA001S10011B1001101 S 0A00AA0011S00110A001101 Problem 15.
Given the following ambiguous context free grammar S Ab | aaB A a | Aa Bb
Solution Find the string s generated by the grammar that has two leftmost derivations. Show the derivations. The string s = aab has the following two leftmost derivations S aaBaab S AB AaB aaB aab (b) Show the two derivation trees for the string s. The two derivation trees of string aab are shown below. (a)
16
(c) Find an equivalent unambiguous context-free grammar. The equivalent unambiguous grammar is following S Ab A a | Aa This grammar is not ambiguous because at any derivation step there is only one choice to make. This grammar is equivalent to the previous one, because both grammars generate the same language: all the strings that start with one or more a, and end with a single b. (d) Give the unique leftmost derivation and derivation tree for the string s generated from the unambiguous grammar above. With the new grammar the unique leftmost derivation and derivation tree of the string aab are shown below.
17
Let M be the PDA that accepts even-length palindromes over {a, b}. That is,
b B/ a A/ /
q1
q0
q1
(a, b/c stands for a, bc) a) Give the transition table of M. b) Trace all computation of the strings ab, abb, abbbb in M. c) Show that aaaa, baab L (M). d) Show that aaa, ab L (M).
18
q0
a
q0 /A
b
q 0 /B
q1 /
q1
q1 A/
q1 B/
Notation: The PDA consults the current state, input symbol, and the symbol on
the top of the stack to determine the machine transition. The transition function lists all possible transitions for a given state, symbol, and stack top combination. The value of the transition function
(qi , a, A) = {[q j , B],[qk , C ]}
indicates that two transitions are possible when automaton is in state qi scanning an A with A on top of the stack. The transition
[q j , B] ( qi , a, A)
[new state, new stack top] (current state, current input, current stack top)
a, A B qi
qj
19
b) Trace all computation of the strings ab, abb, abbbb in M. Computations for ab:
[q 0 , ab, ] |- [q 0 , b, A]
|- [q 0 , , BA] |- [q1 , , BA]
[q 0 , ab, ] |- [q 0 , b, A] |- [q1 , b, A]
Rejected.
Rejected.
Computations for abb: [q 0 , abb, ] |- [q 0 , bb, A] |- [q 0 , b, BA] |- [q 0 , , BBA] |- [q1 , , BBA] Rejected. [q 0 , abb, ] |- [q 0 , bb, A] |- [q 0 , b, BA] |- [q1 , b, BA] |- [q1 , , A] Rejected. [q 0 , abb, ] |- [q 0 , bb, A] |- [q1 , bb, A] Rejected. [q 0 , abb, ] |- [q1 , abb, ] Rejected.
Computations for abbb: c) Show that aaaa, baab L (M). Both aaaa, baab are accepted by this PDA, so they are in L (M). [q 0 , aaaa, ] |- [q 0 , aaa, A] |- [q 0 , aa, AA] |- [q1 , aa, AA] |- [q1 , a, A] |- [q1 , , ] Accepted. [q 0 , baab, ] |- [q 0 , aab, B] |- [q 0 , ab, AB] |- [q1 , ab, AB] |- [q1 , b, B] |- [q1 , , ] Accepted.
20
d) Show that aaa, ab L (M). The computations for string aaa: [q 0 , aaa, ] |- [q 0 , aa, A] |- [q 0 , a, AA] |- [q 0 , , AAA] |- [q1 , , AAA] Rejected. [q 0 , aaa, ] |- [q 0 , aa, A] |- [q 0 , a, AA] |- [q1 , a, AA] |- [q1 , , A] Rejected. [q 0 , aaa, ] |- [q 0 , aa, A] |- [q1 , aa, A] |- [q1 , a, ] Rejected. [q 0 , aaa, ] |- [q1 , aaa, ] Rejected.
The computations for ab are shown in part b). There is none of the computations accepting the strings, so they are not in L (M).
21
Problem 2.
Construct a PDA that accepts the set of palindromes over {a, b}.
Solution:
b / a / /
b B/ a A/
q1
(q 0 , a, ) = {[ q0 , A], [q1 , ]} (q 0 , b, ) = {[q 0 , B], [q1 , ]} (q 0 , , ) = {[q1 , ]} (q1 , a, A) = {[q1 , ]} (q1 , b, B) = {[q1 , ]}
22
Problem 3.
CH8 15a
Let M be the PDA in example 8.1.1. the PDA that accepts the language
L = {wcw R w {a, b} } .
The stack is used to record the string w as it is processed. Stack symbols A and B represent input a and b respectively.
b /B a /A
q0
b B/ a A/ c /
q1
A successful computation records the string w on the stack as it is processed. Once the c is encountered, the accepting state q1 is entered and the stack contains a string representing wR. The computation is completed by matching the remaining input with the elements of the stack. Trace the computation that accepts bbcbb.
Solution:
23
NPDA EXAMPLES (Sipser) Construct non-deterministic pushdown automata to accept the following languages. (Note: has the same meaning as )
Example 1. Solution
{1n0n | n>0}
Example 2. Solution
{0n12n | n>=0}
Example 3. Solution
24
Example 4. Solution
Linz
Equivalent with Sipser Example 2, in different notation. Remark: The notation a, b/c stands for a, bc
Example 5.
L = {anb2n: n 0}
Solution
b,a/ ,$/$
Example 6.
Solution
25
Example 7.
Construct the NPDA corresponding to the grammar S aABB | aAA A aBB | a B bBB | A
,$/S
DPDA EXAMPLES (Sipser) Construct deterministic pushdown automata to accept the following languages.
Example 8. Solution
26
Example 9. Solution
27
Example 11. Binary strings that start and end with the same symbol and have the same number of 0s as 1s. Solution
Example 12. Show that L = {anbm : m n + 2} is deterministic. (Problem 2 on page 199, Linz
Solution
a,/a b,a/
b,$/$
28
L = {anbjck: k = jn}.
case 1
b c
case 2
case 3
aaaK3 bKbbcKc 1 24 { 1 3 4 ab 2
u vxy z
If i=0, uv xy z = a b case 4
m m vy m 2
aaa K3 bKbbcc Kc 1 24 { {{ 4 ab
u v x yz
29
0 0 m If i=0, uv xy z = a b
m v m2 y
case 5
case 6 v or y containing ab or bc If I > 0, uvixyiz would be aabbaabbcc Or aabbccbc Contrary to the assumption. Language is not context free.
Problem 2.
Solution
Assume that L = { wwRa|w| : w {a, b}*}is a context free language. Let w = a m b m , then ww R a and |vy| 1 such that case 1
a K 24 bb K ba K44 a ab 3 14 K 144 aa K 2 3
uvxy z
w
= a m b m b m a m a 2m L
30
case 2
If i=0, a
= 2m vx < w . So uv0xy0z L.
case 4
If i=0,
ww R = 4m vy < 2 a
= 4m . So uv0xy0z L.
case 5
If i=0, w R a
= 4m vy < 2 w = 4m . So uv0xy0z L.
31
Problem 3.
Using the pumping lemma prove that the language below is not context-free.
L = { a i b 2i a i i 0 }
Proof:
Assume that the language is context-free. By the pumping lemma, the string w = a k b 2 k a k , where k is the number specified by the pumping lemma, can be decomposed into substring uvwxy that satisfy the condition length (vwx) k, length (v) + length (x) > 0, and uv i wx i y L , (i 0) . Since the length (vwx) k, the vwx can have the following possibilities: Case 1: It contains a-s and b-s ( a i b j or b i a j , 0 < i + j k . Since length (vwx) k, it cannot
have a-s at both side of b-s,). Then uv 2 wx 2 y contains ababa. It will not be in L any more. Case 2: It is contained in one of a k , b 2 k or second a k . Since the repetition in uv 2 wx 2 y will increase one of the strings lengths of a k , b 2 k or second a k , the ratio of 1:2:1 will not be satisfied. Then uv 2 wx 2 y L . There is no decomposition L that satisfies the condition of pumping lemma. Therefore, L is not context free.
32
Problem 4.
CH8 18a
Proof:
A context-free language can be expressed by a context-free grammar. The context-free grammar below expresses the language L. G:
S AB A aAbb B cB
Also, if a language L can be accepted by a PDA, it will be a context-free language. We can construct a PDA to accept language L as below.
a /A / /
c /
q0
q1
q3
b A/
b /
q2
Problem 5.
We want to prove that the language L = {anbn: n 0 and n is not a multiple of 5} is a context-free language.
Solution
Consider the following two languages: L1 ={w : w is made from as and bs and the length of w is a multiple of ten}
33
L2 = {anbn: n 0} Let L1 denote the complement of L. We have that L = L1 L2. It is easy to see that L1 is a regular language, since we can easily build a finite automaton with 10 states that accepts any string in this language. Since L1 is regular it must be that L1 is regular too, since regular languages are closed under complement (Theorem 4.1). The language L2 is context-free ( the grammar is: S->aSb | ). Therefore, the language L = L1 L2 is also context-free, since context-free languages are closed under regular intersection (Theorem 8.5).
Problem 6. Solution
{1k0i1i0j1j0k | i, j, k > 0}
Problem 7. Solution
Not CF. Assume for the purpose of contradiction that it is. Then let the
pumping length be p. Consider the string s=0p1p#0p1p, which is in the language. If we decompose s into s=uvwxy as in the statement of the pumping lemma, there are three cases to consider.
If vwx is contained in the first half of the string s, then pumping up even once (that is, taking the string uv2wx2y) will give us a string
34
where the first half is longer than then second half, which means it can't be a substring of the second half.
If vwx is contained completely in the second half, then when we pump down (that is, take the string uwy). Then the second half will be shorter than the first half (since |vwx|>=1) and so the pumped down string will not be in the language.
If vwx overlaps with the symbol #, then it must be the case that the # is contained in w, or else pumping up would give too many # symbols. So either the v will be a string of 1's or the x will be a string of 0's or both (We need the fact that |vwx| <= p here). If v is a nonempty string of 1's then pumping up will give the left half more 1's then the right side, so the left side will not be a subset of the right side. If x is a nonempty string of zeros then pumping down will give the right side fewer zeros than the left so the left side will not be a subset of the right side.
In any case we come to the conclusion that no matter how we choose the decomposition, the conditions of the pumping lemma will be violated. So the language cannot be regular.
Problem 8. Solution
{0i1i0j1i | i, j > 0}
Not CF. Suppose it is. Then let the pumping length be p. Consider the string
s=0p1p01p, which is in the language. If we decompose s into s=uvwxy as in the statement of the pumping lemma, then an argument like the previous one shows that if vwx is anything but the lone zero between the ones, then pumping up will give you something that is not in the language. On the other hand if vwx is the lone zero, then pumping down will give you. 0p1p1p, which is not in the language. This contradicts the pumping lemma, so therefore the language is not context free.
35
Problem 9. Solution
CF. Here is a grammar that generates the language, with some comments on the side to explain what each non-terminal represents.
S ABA | A | AC C 01 | 0C1; B 0B1 | D | F; D 0 | 0D; F 1 | 1F;
Why this works: Since R=(00*11*)(00*11*)* is regular, the complement ~R includes all strings which are not even of the correct form. We can Union 0*1* complement... nondeterministically guess which pair mismatches.
Solution Not CF. Let p be the pumping length given by the pumping lemma. We show that s =
0p1p0p1p cannot be pumped. Let s = uvxyz. If either v or y contain more than one type of alphabet symbol, s` = uv2xy2z does not contain the symbols in the correct order. Hence s` A. If both v and y contain (at most) one type of alphabet symbol, uv2xy2z contains runs of 0s and 1s of unequal length. Hence s` A. Because s cannot be pumped in any way without violating the pumping lemma, A is not CF.
36
Solution Not CF. Let p be the pumping length given by the pumping lemma. We show that s =
0p#02p#03p cannot be pumped. Let s = uvxyz. Neither v nor y can contain #, otherwise s` = uv2xy2z contains more than two #s. Therefore, if we divide x into three segments by #s: 01p, 02p, 03p, at least one of the segments is not contained within either v or y. Hence, s` = uv2xy2z is not in B because the 1 : 2 : 3 length ratio of the segments is not maintained. Hence s` B. Because s cannot be pumped in any way without violating the pumping lemma, B is not CF.
Solution Not CF. Let p be the pumping length given by the pumping lemma.
We show that s = apbp#apbp cannot be pumped. Let s = uvxyz. Neither v nor y can contain #, otherwise s` = uv0xy0z does not contain # and therefore s` C. If both v and y are nonempty and occur on the LHS of the #, the string s` = uv2xy2z C because it is longer on the LHS than on the RHS. Similarly, if both strings occur on the RHS, the string s` = uv0xy0z C because, again, the LHS is longer than the RHS. If only one of v and y is nonempty ( |vy| > 0, therefore v and y can not be empty at the same time), treat them as if they both occurred on the same side of the # as above. The only remaining case will be where both v and y are nonempty and v is on the LHS, y on the RHS. However, |vxy| <= p, therefore, v can only contain bs and y can only
37
contain as. Hence s` = uv2xy2z C because it contains more bs on the LHS than on the RHS. Since s cannot be pumped in any way without violating the pumping lemma, C is not CF.
Referenser 1. Linz, An Introduction to Formal Languages and Automata, Jones & Bartlett 2000 2. Sipser, Introduction to the Theory of Computation, PWS 1997 3. Sudkamp, Languages and Machines, Addison Wesley 1998 4. Lewis-Papadimitriou, Elements of the Theory of Computation, Prentice Hall 1998
38