Homework 4 - Solution · Homework 4 - Solution Instructor: Prof. Wen-Guey Tzeng Due: 4-May-2015 1....
Transcript of Homework 4 - Solution · Homework 4 - Solution Instructor: Prof. Wen-Guey Tzeng Due: 4-May-2015 1....
DCP3122 Introduction to Formal Languages, Spring 2015 27-Apr-2015
Homework 4 - Solution
Instructor: Prof. Wen-Guey Tzeng Due: 4-May-2015
1. Draw the derivation tree corresponding to the following context-free grammarG = ({S}, {a, b}, S, P )with productions
S → aSa, S → bSb, S → λ.
A typical derivation in this grammar is S ⇒ aSa⇒ aaSaa⇒ aabSbaa⇒ aabbaa. It is clearthat L(G) = {wwR : w ∈ {a, b}∗}.Ans.
2. Find context-free grammars for the following languages (n ≥ 0, m ≥ 0, k ≥ 0).
(a) L = {anbm : n 6= m− 1}.(b) L = {w ∈ {a, b}∗ : na(v) ≥ nb(v), where v is any prefix of w}.(c) L = {anbmck : n = m or m 6= k}.
Ans.
(a) L = {anbm : n ≥ m > m− 1} ∪ {anbm : n ≤ m− 2 < m− 1}. A context-free grammarfor L is G = ({S, S1, A,B,B1}, {a, b}, S, P ) with the productions
S → AS1|S1B,S1 → aS1b|λ,A→ aA|λ,S2 → aS1b|λ,B → bbB1, B1 → bB1|λ.
(b) L = {w ∈ {a, b}∗ : na(w) = nb(w), na(v) ≥ nb(v), where v is any prefix of w} ∪ {w ∈{a, b}∗ : na(w) > nb(w), na(v) ≥ nb(v), where v is any prefix of w}. A context-freegrammar for L is G = ({S,A}, {a, b}, S, P ) with the productions
S → aSb|SS|A,A→ aA|λ.
1-1
(c) L = {anbmck : n = m} ∪ {anbmck : m 6= k}. A context-free grammar for L is G =({S,A,B,C,D,D1, D2, E, F}, {a, b, c}, S, P ) with the productions
S → AB|CD,A→ aAb|λ,B → cB|λ,C → aC|λ,D → ED1|D1F,D1 → bD1c|λ,E → bE|b, F → cF |c.
3. Show that L = {w ∈ {a, b, c}∗ : |w| = 3na(w)} is a context-free languages.Ans. A context-free grammar for L is G = ({S, F}, {a, b, c}, S, P ) with the productions
S → aSFSFS|FSaSFS|FSFSaS|λ,F → b|c.
4. Show that the following language is context-free.
L = {uvwvR : u, v, w ∈ {a, b}+, |u| = |w| = 2}.
Ans. A context-free grammar for L is G = ({S,A,B,C}, {a, b}, S, P ) with the productions
S → AB,
A→ aa|ab|ba|bb,B → aBa|bBb|aAa|bAb.
5. Show a derivation tree for the string aabbbb with the grammar S → AB|λ, A→ aB, B → Sb.Give a verbal description of the language generated by this grammar.Ans. This grammar produces the strings of the form anb2n, n ≥ 0, i.e., it generates thelanguage L(G) = {anb2n : n ≥ 0}.
1-2
6. Define what one might mean by properly nested parenthesis structures involving two kinds ofparentheses, say () and []. Intuitively, properly nested strings in this situation are ([]), ([[]]),and [()], but not ([)] or ((]]. Using your definition, give a context-free grammar for generatingall properly nested parentheses.Ans. A context-free grammar for generating all properly nested parentheses isG = ({S}, {(, ), [, ]}, S, P )with production
S → [S]|(S)|λ.
7. Construct an unambiguous grammar equivalent to the grammar: S → AB|aaB, A → a|Aa,B → b.Ans. This grammar produces the strings ab, aab, aaab, . . ., i.e., it generatesG = ({S,A}, {a, b}, S, P )with productions S → Ab,A→ a|Aa.
8. Show that the grammar S → aSbS|bSaS|λ is ambiguous.Ans. The string w = abab has the following two derivation trees:
9. Eliminate all useless productions from the grammar S → aS|AB, A → bA, B → AA. Whatlanguage does this grammar generate?Ans. This grammar generates the language with ”nothing”, i.e., L(G) = {}. A procedure ofeliminating all useless productions is as follows.
• Substitute B: S → aS|AAA, A→ bA.
• Remove useless variable A (since A has no way to get a terminal string): S → aS.
• Remove useless variable S (since S has no way to get a terminal string).
10. Eliminate all λ-productions from S → AaB|aaB, A→ λ, B → bbA|λ.Ans. A procedure of removing all λ-productions is as follows.
• The λ-production A → λ can be removed after adding new productions obtained bysubstituting λ for A where it occurs on the right: S → AaB|aaB|aB, B → bbA|λ|bb.• The λ-production B → λ can be removed after adding new productions obtained by
substituting λ for B where it occurs on the right: S → AaB|aaB|aB|Aa|aa|a, B →bbA|bb.
11. Eliminate all unit-productions, all useless productions, and all λ-productions from the gram-mar S → aA|aBB, A→ aaA|λ, B → bB|bbC, C → B.Ans. A removing procedure is as follows.
1-3
• Removing useless productions A → aBB, B → bB|bbC, and C → B since they cannotbe transformed into terminal strings: S → aA|aBB, A→ aaA|λ• Removing λ-productions to have S → aA|a, A→ aaA|aa.
• The result in the last step is the final answer since there is no any unit-production.
12. Eliminate all unit-productions from S → a|aA|B|C, A → aB|λ, B → Aa, C → cCD,D → ddd.Ans. We first eliminate all λ-productions and obtain
S → a|aA|B|C,A→ aB,
B → Aa|a,C → cCD,
D → ddd.
The we eliminate all unit-productions and obtain
S → a|aA|Aa|cCD,A→ aB,
B → Aa|a,C → cCD,
D → ddd.
13. Transform the grammar with productions S → abAB, A → bAB|λ, B → BAa|A|λ intoChomsky normal form.Ans. The transform procedure is as follows.
• Removing λ-productions:
– Removing A→ λ: S → abAB|abB, A→ bAB|bB, B → BAa|A|λ|Ba.
– RemovingB → λ: S → abAB|abB|abA|ab, A→ bAB|bB|bA|b, B → BAa|A|Ba|Aa|a.
• Removing unit-production B → A: S → abAB|abB|abA|ab, A → bAB|bB|bA|b, B →BAa|bAB|bB|bA|b|Ba|Aa|a.
• Convert the grammar into Chomsky normal form:
– Introduce new variables Sa for each a ∈ T :
S → SaSbAB|SaSbB|SaSbA|SaSb,A→ SbAB|SbB|SbA|Sb,B → BASa|SbAB|SbB|SbA|Sb|BSa|ASa|Sa,Sa → a,
Sb → b.
– Introduce additional variables to get the first two productions into normal form and
1-4
we get the final result
S → SaU |SaX|SaY |SaSb,A→ SbV |SbB|SbA|Sb,B → BZ|SbV |SbB|SbA|Sb|BSa|ASa|Sa,U → SbV,
V → AB,
X → SbB,
Y → SbA,
Z → ASa,
Sa → a,
Sb → b.
14. Use the CYK method to determine if the string w = aaabbbbab is in the language generatedby the grammar S → aSb|b.Ans. Firstly, we convert the grammar S → aSb|b into Chomsky normal form:
• S → ASB|b, A→ a,B → b.
• S → AX|b,X → SB,A→ a,B → b.
Then for w = w1w2 · · ·w9 = aaabbbbab, we have
V11 = {A}, V22 = {A}, V33 = {A}, V44 = {B,S}, V55 = {B,S},V66 = {B,S}, V77 = {B,S}, V88 = {A}, V99 = {B,S},
By using the equation
Vij =⋃
k∈{i,i+1,...,j−1}
{A→ BC, with B ∈ Vik, C ∈ Vk+1,j},
we have
V12 = {A : A→ BC,B ∈ V11, C ∈ V22} = {},V23 = {A : A→ BC,B ∈ V22, C ∈ V33} = {},V34 = {A : A→ BC,B ∈ V33, C ∈ V44} = {},V45 = {A : A→ BC,B ∈ V44, C ∈ V55} = {X},V56 = {A : A→ BC,B ∈ V55, C ∈ V66} = {X},V67 = {A : A→ BC,B ∈ V66, C ∈ V77} = {X},V78 = {A : A→ BC,B ∈ V77, C ∈ V88} = {},V89 = {A : A→ BC,B ∈ V88, C ∈ V99} = {};
V13 = {A : A→ BC,B ∈ V11, C ∈ V23} ∪ {A : A→ BC,B ∈ V12, C ∈ V33} = {},V24 = {A : A→ BC,B ∈ V22, C ∈ V34} ∪ {A : A→ BC,B ∈ V23, C ∈ V44} = {},V35 = {A : A→ BC,B ∈ V33, C ∈ V45} ∪ {A : A→ BC,B ∈ V34, C ∈ V55} = {},V46 = {A : A→ BC,B ∈ V44, C ∈ V56} ∪ {A : A→ BC,B ∈ V45, C ∈ V66} = {S},V57 = {A : A→ BC,B ∈ V55, C ∈ V67} ∪ {A : A→ BC,B ∈ V56, C ∈ V77} = {},V68 = {A : A→ BC,B ∈ V66, C ∈ V78} ∪ {A : A→ BC,B ∈ V67, C ∈ V88} = {},V79 = {A : A→ BC,B ∈ V77, C ∈ V89} ∪ {A : A→ BC,B ∈ V78, C ∈ V99} = {};
1-5
Continue this procedure, we have
V14 = {}, V25 = {}, V36 = {X}, V47 = {}, V58 = {}, V69 = {};V15 = {}, V26 = {S}, V37 = {}, V48 = {}, V59 = {};V16 = {}, V27 = {X}, V38 = {}, V49 = {};V17 = {S}, V28 = {}, V39 = {};V18 = {}, V29 = {};V19 = {}.
Because V19 = {}, we conclude that w is not in the language generated by the grammarS → aSb|b by using the CYK algorithm.
1-6