gokan
02-02-2004, 11:00
Salve ragazzi, sono alle prese con un esame di Informatica Teorica ed ho qualche dubbio sulla risoluzione di qualche esercizio
sulle grammatiche libere dal contesto (CFG).
L'esercizio dice che dato un linguaggio L={(a^n)(b^2n)(c^k)|n>=1,k>=1}, devo costruire una CFG che generi tale linguaggio.
Io l'ho risolvo così: creo prima di tutto una grammatica che generi le stringhe della forma (a^n)(b^2n), cioè A->abb|aAbb
Poi creò una grammatica che generi tutte le stringhe di c (B->cB|c) .A questo punto metto assieme le due grammatiche nell'assioma S->AB
In definitiva la grammatica cercata è:
S->AB
A->abb|aAbb
B->cB|c
Infatti le produzioni seguenti generano stringhe appartenenti al linguaggio L:
S=>AB=>aAbbB=>aAbbcB=>aaAbbbbcB=>aaAbbbbcc=>aaabbbbbbcc
Se dovessi costruire una grammatica che generi il linguaggio L={(a^2n)(c^k)(b^n)(c^h)|n>=1,k>=1,h>=1}, come mi devo muovere?
La difficoltà sta nel fatto che questa volta (a^2n) e (b^n) sono divisi da (c^k), quindi risulta più complicato tenerli legati.
sulle grammatiche libere dal contesto (CFG).
L'esercizio dice che dato un linguaggio L={(a^n)(b^2n)(c^k)|n>=1,k>=1}, devo costruire una CFG che generi tale linguaggio.
Io l'ho risolvo così: creo prima di tutto una grammatica che generi le stringhe della forma (a^n)(b^2n), cioè A->abb|aAbb
Poi creò una grammatica che generi tutte le stringhe di c (B->cB|c) .A questo punto metto assieme le due grammatiche nell'assioma S->AB
In definitiva la grammatica cercata è:
S->AB
A->abb|aAbb
B->cB|c
Infatti le produzioni seguenti generano stringhe appartenenti al linguaggio L:
S=>AB=>aAbbB=>aAbbcB=>aaAbbbbcB=>aaAbbbbcc=>aaabbbbbbcc
Se dovessi costruire una grammatica che generi il linguaggio L={(a^2n)(c^k)(b^n)(c^h)|n>=1,k>=1,h>=1}, come mi devo muovere?
La difficoltà sta nel fatto che questa volta (a^2n) e (b^n) sono divisi da (c^k), quindi risulta più complicato tenerli legati.