130 likes | 253 Views
COSC 3340: Introduction to Theory of Computation. University of Houston Dr. Verma Lecture 10. Chomsky Normal Form (CNF). Rules of CFG G are in one of two forms: (i) A a (ii) A BC, B S and C S + Only one rule of the form S is allowed if in L(G).
E N D
COSC 3340: Introduction to Theory of Computation University of Houston Dr. Verma Lecture 10 UofH - COSC 3340 - Dr. Verma
Chomsky Normal Form (CNF) • Rules of CFG G are in one of two forms: (i) A a (ii) A BC, B S and C S + Only one rule of the form S is allowed if in L(G). • Easier to reason with in proofs • Leads to more efficient algorithms • Credited to Prof. Noam Chomsky at MIT Reading Assignment: Converting a CFG to CNF. UofH - COSC 3340 - Dr. Verma
Exercises • Are the following CFG's in CNF? (i) SaSb | (ii) SaS | Sb | (iii) SAS | SB | Aa Bb (iv) SAS | SB Aa | Bb UofH - COSC 3340 - Dr. Verma
Closure properties of CFL's • CFL's are closed under: (i) Union (ii) Concatenation (iii) Kleene Star • What about intersection and complement? UofH - COSC 3340 - Dr. Verma
The setting • L1= L(G1) where G1 = (V1, T, P1, S1) • L2 = L(G2) where G2 = (V2, T, P2, S2) • Assume wlog that V1V2 = UofH - COSC 3340 - Dr. Verma
Closure under Union -- Example • L1 = { anbn | n 0 } • L2 = { bnan | n 0 } • G1 ? • Ans: S1aS1b | • G2? • Ans: S2bS2a | • How to make grammar for L1L2? • Ans: Idea: Add new start symbol S and rules SS1| S2 UofH - COSC 3340 - Dr. Verma
Closure under Union General construction • Let G = (V, T, P, S) where • V = V1V2 { S }, • SV1V2 • P = P1P2 { SS1 | S2 } UofH - COSC 3340 - Dr. Verma
Closure under concatenation Example • L1 = { anbn | n 0 } • L2 = { bnan | n 0 } • Is L1L2 = { anb{2n}an | n >= 0 } ? • Ans: No! It is { anb{n+m}am | n, m 0 } • How to make grammar for L1L2 ? • Idea: Add new start symbol and rule SS1S2 UofH - COSC 3340 - Dr. Verma
Closure under concatenation General construction • Let G = (V, T, P, S) where • V = V1V2 { S }, • SV1V2 • P = P1P2 { SS1S2 } UofH - COSC 3340 - Dr. Verma
Closure under kleene star Examples • L1 = {anbn | n 0} • What is (L1)*? • Ans: { a{n1}b{n1} ... a{nk}b{nk} | k 0 and ni 0 for all i } • L2 = { a{n2} | n 1 } • What is (L2)*? • Ans: a*.Why? • How to make grammar for (L1)*? • Idea: Add new start symbol S and rules SSS1 | . UofH - COSC 3340 - Dr. Verma
Closure under kleene star General construction • Let G = (V, T, P, S) where • V = V1 { S }, • SV1 • P = P1 { SSS1| } UofH - COSC 3340 - Dr. Verma
Tips for Designing CFG's • Use closure properties -- divide and conquer • Analyze strings – Is order important? Number? Do we need recursion? • Flat versus hierarchical? • Are any possibilities (strings) missing? • Is the grammar generating too many strings? UofH - COSC 3340 - Dr. Verma