Forma normale di Chomsky
Una CFG è detta in forma normale di Chomsky se ogni sua regola è in una delle seguenti forme:
- , con : lo start symbol sta solo a sinistra e i non-terminali a destra stanno in coppia
- : ogni opzione di ha un solo terminale
- , se : lo start symbol è l'unico che può avere questa regola
Si può dimostrare che ogni linguaggio context-free è generato da una CFG in forma normale di Chomsky, infatti è possibile convertire una qualsiasi CFG in forma normale attraverso delle trasformazioni:
- Introdurre un nuovo simbolo iniziale
- Eliminare le -regole aggiungendo alle regole padre i casi in cui è presente oppure no
- Eliminare le regole unitarie rimpiazzando il non-terminale a destra con il suo contenuto
- Dividi le regole per e in
- Rimpiazza ogni terminale non solitario con una regola
L'ordine del quarto e quinto punto non causa problemi perchè la divisione include anche i terminali.
Per esempio1,
1
Verificabile con CFG to CNF