Lec 8 : Computation Theory Chomsky Normal Form 1 Chomsky Normal Form Definition Chomsky Normal Form (CNF) A grammar is in Chomsky Normal Form (CNF), if it has only productions of the form: A → B C or A→a with A, B, C V and aT. This means all rules are consisting of either a single terminal on the production, or they are binary, consisting of two variables. Conversion of a CFG into Chomsky Normal Form Here is the algorithm to convert a given CFG into CNF. 1. Make the initial grammar G free of λ-productions, unit-productions, and useless variables and productions.You have rules now, which contain one terminal on the productions or at least two symbols from V T on the productions. 2. We substitute terminals ai, which appear in complex PRODUCTIONS (with more than one symbol), with new variables C1, C2,... Add these C1, C2,... to V to form V'. Lec 8 : Computation Theory Chomsky Normal Form 2 We have to add matching new productions: Ci → ai to P to form P'. Productions in P' have either a single terminal on the productions, or at least 2 variables: A → a or A → V1 ... Vn with Vi V' for i=1,...,n and n≥2 3. We split up the non-terminal productions in P' and make them "binary". We introduce new variables D1, D2, ... which we add to V'. Every A → V1 ... Vn in P' is now substituted with a set of new productions: A → V1 D1 D1 → V2 D2 D2 → V3 D3 ... Dn-1 → Vn-1 Vn The grammar is now in Chomsky NF: Example 1: Transform a CFG into Chomsky Normal Form the grammar G with V={S, A, B}, T={a, b} and productions P S→A Lec 8 : Computation Theory Chomsky Normal Form A→aBa|a B → b A b | b |D S→aBa|a B→bAb|b S → C1 B C1 | a B → C2 A C2| b C1→a C2→b S → C1 D1 | a B → C2 D2 | b D1→ B C1 D2 → A C2 C1→ a C2→ b H.W : Transform a CFG into Chomsky normal form (CNF) S →Y X Z \ Y Y →0Y1\01 X →aXb\ Z →bZ 3