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:

  1. Introdurre un nuovo simbolo iniziale
  2. Eliminare le -regole aggiungendo alle regole padre i casi in cui è presente oppure no
  3. Eliminare le regole unitarie rimpiazzando il non-terminale a destra con il suo contenuto
  4. Dividi le regole per e in
  5. 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