Apuntes
El llenguatge és el llenguatge de les cadenes que són palíndroms sobre l’alfabet .
Aquí teniu una CFG que genera aquest llenguatge:
Aquesta CFG utilitza una regla recursiva per generar les cadenes palíndromes.
La regla permet generar la cadena buida, que és un palíndrom.
Les regles i permeten afegir dos caràcters a la cadena.
Les regles permeten afegegir dos caràcters iguals a la cadena.
Així, la CFG generarà les cadenes de l’alfabet que formen paraules de .
Exercici 1.6 Determinau el llenguatge generat per la gramàtica
És aquesta gramàtica ambigua? En cas que ho sigui, cercau una gramàtica inambigua que generi el mateix llenguatge.
Aquesta gramàtica genera el següent llenguatge:
Sí, aquesta gramàtica és ambigua, ja que hi ha més d’una forma de generar una paraula en el llenguatge. Per exemple, la paraula “abc” es pot generar a través de la producció o a través de la producció .
Per fer la gramàtica inambigua, es pot utilitzar una gramàtica factorial:
Aquesta gramàtica genera el mateix llenguatge que la gramàtica original, però ara és inambigua, ja que només hi ha una forma de generar una paraula en el llenguatge.
Exercici 1.7 Considerau la gramàtica donada per les produccions següents
Demostrau que
Podem demostrar que mitjançant una construcció inductiva.
Base de l’inducció:
Si , llavors , on és un nombre no negatiu, i això està en , ja que és una producció en . Passos inductius:
Suposeu que per a tot , on és un nombre parell no negatiu, tenim que per a tot amb parell no negatiu.
Llavors, per a , podem demostrar que per a tot amb parell no negatiu, ja que tenim la producció en .
Això demostra que .
Taller
Per resoldre aquesta exercici de gramàtiques, cal seguir els següents passos:
- Trobar la gramàtica per al llenguatge
El llenguatge és el conjunt de totes les cadenes que comencen amb una o més seguides de parelles . Això significa que per a qualsevol , el llenguatge conté les següents paraules:
Per a generar aquestes paraules, podem definir una gramàtica amb el següent conjunt de regles:
Aquesta gramàtica comença amb l’axioma , que es pot transformar en una i una variable . La variable també es pot transformar en una i la variable , que a la seva vegada pot generar parelles de manera recursiva fins que s’arriba a l’èpsilon. Així, la gramàtica genera exactament el llenguatge .
- Trobar la gramàtica per al llenguatge
El llenguatge és el conjunt de totes les cadenes que comencen amb una o més , seguides de zero o més , seguides de zero o més , on el nombre de i el nombre de són iguals. Això significa que per a qualsevol i , el llenguatge conté les següents paraules:
Per a generar aquestes paraules, podem definir una gramàtica amb el següent conjunt de regles:
Aquesta gramàtica comença amb l’axioma , que pot generar parelles de manera recursiva fins que s’arriba a la mateixa quantitat de i , o bé es transforma en la variable . La variable pot generar qualsevol nombre de , seguit de l’èpsilon. Així, la gramàtica genera exactament el llenguatge .
- Trobar la gramàtica per al llenguatge
El llenguatge és el conjunt de totes les cadenes que comencen amb una o més , seguides de zero o més , seguides de zero o més . Això significa que per a qualsevol , i , el llenguatge conté les següents paraules:
Per a generar aquestes paraules, podem definir una gramàtica amb el següent conjunt de regles:
Aquesta gramàtica és similar a la gramàtica , però en aquest cas la variable pot generar qualsevol combinació de , i , fins que s’arriba a
Per a generar les paraules del llenguatge , podem seguir aquests passos:
- Començar amb ‘s.
- Afegir ‘s.
- Afegir ‘s.
Podem usar aquesta idea per a construir una gramàtica que generi el llenguatge . Definim l’axioma i les següents regles:
La regla inicial permet que la gramàtica generi una cadena amb una part d’ i una part de . La variable genera zero o més ‘s, i la variable genera zero o més ‘s seguits d’un nombre igual de ‘s. Això assegura que la quantitat d''s i ‘s sigui la mateixa.
Per exemple, la paraula es pot generar amb les següents derivacions:
D’aquesta manera, la gramàtica generada és capaç de generar totes les paraules del llenguatge .