Computer Science, asked by tdeerajbabu1234, 5 months ago

Let us take an example to convert CFG to CNF. Consider the given grammar G1:
S → ASB A → aAS|a|ε B → SbS|A|bb​

Answers

Answered by shariqhamadmi
0

A context free grammar (CFG) is in Chomsky Normal Form (CNF) if all production rules satisfy one of the following conditions:

A non-terminal generating a terminal (e.g.; X->x)

A non-terminal generating two non-terminals (e.g.; X->YZ)

Start symbol generating ε. (e.g.; S-> ε)

Answered by kumaranish200a
0

Answer:

Explanation:

Step 1. As start symbol S appears on the RHS, we will create a new production rule S0->S. Therefore, the grammar will become:

S0->S

S → ASB

A → aAS|a|ε

B → SbS|A|bb

Step 2. As grammar contains null production A-> ε, its removal from the grammar yields:

S0->S

S → ASB|SB

A → aAS|aS|a

B → SbS| A|ε|bb

Now, it creates null production B→ ε, its removal from the grammar yields:

S0->S

S → AS|ASB| SB| S

A → aAS|aS|a

B → SbS| A|bb

Now, it creates unit production B->A, its removal from the grammar yields:

S0->S

S → AS|ASB| SB| S

A → aAS|aS|a

B → SbS|bb|aAS|aS|a

Also, removal of unit production S0->S from grammar yields:

S0-> AS|ASB| SB| S

S → AS|ASB| SB| S

A → aAS|aS|a

B → SbS|bb|aAS|aS|a

Also, removal of unit production S->S and S0->S from grammar yields:

S0-> AS|ASB| SB

S → AS|ASB| SB

A → aAS|aS|a

B → SbS|bb|aAS|aS|a

Step 3. In production rule A->aAS |aS and B-> SbS|aAS|aS, terminals a and b exist on RHS with non-terminates. Removing them from RHS:

S0-> AS|ASB| SB

S → AS|ASB| SB

A → XAS|XS|a

B → SYS|bb|XAS|XS|a

X →a

Y→b

Also, B->bb can’t be part of CNF, removing it from grammar yields:

S0-> AS|ASB| SB

S → AS|ASB| SB

A → XAS|XS|a

B → SYS|VV|XAS|XS|a

X → a

Y → b

V → b

Step 4: In production rule S0->ASB, RHS has more than two symbols, removing it from grammar yields:

S0-> AS|PB| SB

S → AS|ASB| SB

A → XAS|XS|a

B → SYS|VV|XAS|XS|a

X → a

Y → b

V → b

P → AS

Similarly, S->ASB has more than two symbols, removing it from grammar yields:

S0-> AS|PB| SB

S → AS|QB| SB

A → XAS|XS|a

B → SYS|VV|XAS|XS|a

X → a

Y → b

V → b

P → AS

Q → AS

Similarly, A->XAS has more than two symbols, removing it from grammar yields:

S0-> AS|PB| SB

S → AS|QB| SB

A → RS|XS|a

B → SYS|VV|XAS|XS|a

X → a

Y → b

V → b

P → AS

Q → AS

R → XA

Similarly, B->SYS has more than two symbols, removing it from grammar yields:

S0 -> AS|PB| SB

S → AS|QB| SB

A → RS|XS|a

B → TS|VV|XAS|XS|a

X → a

Y → b

V → b

P → AS

Q → AS

R → XA

T → SY

Similarly, B->XAX has more than two symbols, removing it from grammar yields:

S0-> AS|PB| SB

S → AS|QB| SB

A → RS|XS|a

B → TS|VV|US|XS|a

X → a

Y → b

V → b

P → AS

Q → AS

R → XA

T → SY

U → XA

Similar questions