![]() |
|||||||||
![]() |
Linguaggi formaliUn linguaggio è un insieme di frasi. Un automa e' una macchina in grado di riconoscere un insieme di frasi. I linguaggi piu' interessanti per le applicazioni informatiche sono quelli di tipo 3 o di tipo 2, secondo la classificazione del linguista americano Noam Chomsky (1956). In questa pagina parleremo degli automi riconoscitori dei linguaggi di tipo 2. Questi automi sono denominati PDA (Push Down Automata) o riconoscitori a pila (stack). I PDA sono dotati di una pila che funge da memoria aggiuntiva e per questo si differenziano dagli automi a stati finiti (FA - Finite Automata) che possono riconoscere solo linguaggi di tipo 3. Senza memoria un PDA non potrebbe realizzare le operazioni di confronto e quindi non potrebbe fare conti su due quantità diverse. In altri termini mentre le
grammatiche di tipo 3 posso generare stringhe composte da un numero qualunque
di a e di b, es: aabbbbbbaaabb, esse non possono generare
stringhe che hanno p.e. n lettere a seguite da n
lettere b (in forma
compatta a
nbn) oppure, generare le stringhe
anb2n (stringhe in cui le b sono in numero
doppio rispetto alle a). Diciamo che le grammatiche di tipo 3
non possono effettuare questo tipo di 'controllo' sulle occorrenze di
a e di b.
Vedremo come i PDA possono raggiungere
questo obiettivo grazie alla memoria a pila. Questi automi che riconoscono
linguaggi di tipo 2 (liberi dal contesto - context free) sono molto
importanti perchè sono utilizzati per riconoscere la correttezza
sintattica (analisi sintattica) dei linguaggi di programmazione e per realizzare
i text-processors in genere.
Push Down Automata (PDA) Una parola o frase si dice palindrome se, pur leggendola in senso inverso rimane identica. Esempi: Roma amor, anilina. Quale sarà l'automa in grado di riconoscere le stringhe palindromi non banali? Dall'esempio notiamo che esiste una simmetria centrale, e quindi possiamo pensare che le stringhe palindromi siano generate da grammatiche di tipo 2.
Data la seguente stringa il nostro automa riconosce la sottostringa palindrome di lunghezza pari: abbbabaab.
|