Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q0, Z0, F) dove: Q insieme finito di stati S alfabeto finito di input 3. G alfabeto di pila.

Slides:



Advertisements
Presentazioni simili
Automi finiti deterministici (DFA) (1)
Advertisements

Automi temporizzati.
LIMITI:DEFINIZIONI E TEOREMI
Strutture dati per insiemi disgiunti
Alfabeti, Stringhe e Linguaggi
Sintassi (prima parte)
LR Parser Giuseppe Morelli. La maggior parte dei parser Bottom-Up è costituita dai cosiddetti parser LR(k) dove: L indica il verso dellanalisi della stringa.
Linguaggi Regolari e Linguaggi Liberi
Costruzione delle tabelle di parsing LR canoniche
Costruzione di tabelle di Parsing SLR
Automi e Linguaggi Regolari Alberto Cuesta Cañada.
Sistemi di Lindenmayer
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
= 2x – 3 x Definizione e caratteristiche
4. Automi temporizzati Il comportamento dei sistemi ad eventi temporizzati non è definito semplicemente da una sequenza di eventi o di valori dello stato,
Algoritmi e Dimostrazioni Stefano Berardi
MACCHINE DI TURING Le macchine di Turing sono dispositivi astratti per la manipolazione di simboli, ideati nel 1936 dal matematico e logico britannico.
Algoritmi e Strutture Dati
Analisi e Sintesi di circuiti sequenziali
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Il problema del minimo albero ricoprente in un grafo con archi privati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Energia e potenza nei circuiti elettrici
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e strutture dati
Le forze conservative g P2 P1 U= energia potenziale
Modelli simulativi per le Scienze Cognitive
Modelli simulativi per le Scienze Cognitive
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
Alfabeti, Stringhe e Linguaggi Def: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono.
1 Implementazione di Linguaggi 2 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman Compilers Principles,Techniques and Tools,
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
GLI INSIEMI Presentazione a cura della Prof.ssa anNUNZIAta DI BIASE
Logica Matematica Seconda lezione.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale
Introduzione ai linguaggi formali e alle stringhe
Facoltà di Ingegneria Corso di Laurea: Insegnamento: Lezione n°: Titolo: Docenti: INGEGNERIA AUTOMAZIONE II 2 LINGUAGGI FORMALI ED AUTOMI PROF. ALESSANDRO.
TEORIA DEGLI INSIEMI INIZIO.
DAI NUMERI NATURALI AI RAZIONALI E OLTRE La misura.
ESTENSIONI SEMPLICI e TEOREMA DELL’ELEMENTO PRIMITIVO
Università degli studi di Lecce
Valutare la difficoltà dei problemi
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 3 - Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Linguaggi di programmazione: panoramica Linguaggi di programmazione ad alto livello: – –Programmazione procedurale – –Programmazione object oriented –
Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 3 Mappe genetiche.
Grammatiche non contestuali (1)
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Macchine di Turing (1) Il modello di base ha un controllo finito, un nastro di input diviso in celle e una testa di lettura che esamina una cella alla.
Corso di Matematica Discreta 4
Espressioni regolari (1)
Automi temporizzati.
In generale, con il termine di grammatica si intende un formalismo che permette di definire un insieme di stringhe mediante l’imposizione di un particolare.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
GLI INSIEMI SI INDICA CON IL NOME INSIEME MATEMATICO
TEORIA ELEMENTARE DEGLI INSIEMI
Elementi di Topologia in R
Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab.
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Metodi di ricerca approssimata dello zero di una funzione F(z) = 0.
Teoria dei Sistemi di Trasporto Tematica 4: Elementi minimi di teoria della probabilità.
Transcript della presentazione:

Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q0, Z0, F) dove: Q insieme finito di stati S alfabeto finito di input 3. G alfabeto di pila d: Q  (S  {e})  G  2 QG* q0 stato iniziale Z0 simbolo di inizio pila 7. F  = Q insieme degli stati finali (eventualmente vuoto). La descrizione istantanea di un PDA è (q,w,g) dove 1. q è lo stato 2. w è la stringa ancora da leggere 3. g è il contenuto della pila. Dato un PDA M = (Q, S, G, d, q0, Z0, F), (q, aw, Za) |-M (p, w, ba) se d(q, a, Z) contiene (p, b). L(M) accettato a stati finali è {w | (q0, w, Z0) |-M* (p, e, g), p  F} N(M) accettato a pila vuota è {w | (q0, w, Z0) |-M* (p, e, e), p  Q}.

Automi a pila (2) Esempio. Si abbia il PDA M = ({q1, q2}, {0,1}, {R,B,G}, d, q1, R, Ø) dove d è: d(q1, 0, R) = {(q1, BR)} d(q1, 1, R) = {(q1, GR)} d(q1, 0, B) = {(q1, BB), (q2, e)} d(q1, 1, B) = {(q1, GB)} d(q1, 0, G) = {(q1, BG)} d(q1, 1, G) = {(q1, GG), (q2, e)} d(q2, 0, B) = {(q2, e)} d(q1, 1, G) = {(q2, e)} d(q1, e, R) = {(q2, e)} d(q2, e, R) = {(q2, e)} Il PDA accetta L = {wwR | w  (0+1)* }.

Automi a pila (3) Un PDA M = (Q, S, G, d, q0, Z0, F) è deterministico se vale: 1. Se d(q, e, Z) non vuoto, allora d(q, a, Z) vuoto per ogni a  S (non c’è una scelta tra una e -mossa e una mossa su input a) 2. d(q, a, Z) non contiene più di un elemento (per ogni a c’è una sola mossa). PDA deterministici e PDA non deterministici non sono equivalenti: non c’è un PDA che accetta L = {wwR | w  (0+1)* }. Teorema. I linguaggi accettati per stati finali sono esattamente quelli accettati per pila vuota. Prova. Se L è L(M2) per un PDA M2 allora è N(M1) per un PDA M1. M1 cancella la pila quando M2 entra in uno stato finale. Un nuovo marcatore di pila sotto quello originario impedisce che l’automa accetti senza che sia entrato in uno stato finale di M2. Se L è N(M1) per un PDA M1 allora è L(M2) per un PDA M2 . Quando M1 svuota la pila rimane nella pila il nuovo marcatore e l’automa entra in uno stato finale.

Automi a pila (4) Teorema. Se L è un CFL allora esiste un PDA M tale che L = N(M). Prova. Sia G = (V,T, P, S) in GNF. Prendiamo M = ({q}, T, V, d, q, S, ) dove d(q, a, A) contiene (q, g) quando A  ag è in P. Si dimostra S ÞG* xa se e solo se (q,x,S) |-M* (q, e, a). Prendendo a = e si ha S ÞG* x se e solo se (q,x,S) |-M* (q, e, e) ossia x  L se e solo se x  N(M). Teorema. Se L è N(M) per PDA M, allora L è un CFL. Prova. Sia M = (Q, S, G, d, q0, Z0 , ). Prendiamo G = (V, S, P, S) dove gli elementi di V sono della forma [q,A,p] con p, q  Q e A  G. P è l’insieme delle produzioni S  [q0, Z0 , q] per ogni q  Q [q, A, qm+1]  a [q1, B1, q2] … [qm, Bm, qm+1] se d(q,a,A) contiene (q1, B1 … Bm). Si dimostra [q, A, p] ÞG* x se e solo se (q, x, A) |-M* (p, e, e).

Pumping lemma per linguaggi non contestuali (1) Lemma. Sia L un CFL. Allora c’è una costante n (che dipende solo da L) tale che se z è in L e |z| >= n allora si può scrivere z= uvwxy con |vx|>= 1 |vwx|<= n per ogni i>= 0 uviwxiy è in L.

Pumping lemma per linguaggi non contestuali (4) Il pumping lemma può essere usato per provare che un linguaggio non è non contestuale. Esempio. Prendiamo L = {aibici | i >= 1}. Supponiamo che sia non contestuale e che n sia la costante del lemma. Prendiamo z = anbncn e scriviamo z = uvwxy. Dove potrebbero essere in anbncn le stringhe v e x da pompare? Poiché |vwx|<= n, vx non può contenere istanze di a e di c poiché la a più a destra è n+1 posizioni più lontano dal c più a sinistra. Se v e x consistono di sole a allora uwy ha n b e n c ma non n a (le altre istanze di a sono in vx) e quindi uwy non è della forma aibici , una contraddizione. Analogamente se v e x consistono di sole b o sole c. Se vx ha a e b allora uwy ha più c che a e b. Similmente se vx contiene b e c.

Proprietà dei linguaggi non contestuali (1) Teorema. I linguaggi non contestuali sono chiusi per unione, concatenazione, chiusura di Kleene. Prova. Sia L1 non contestuale generato da G1 = (V1,T1, P1, S1) e L2 non contestuale generato da G2 = (V2,T2, P2, S2). Assumiamo V1 e V2 disgiunti e S3 , S4 , S5 non in V1  V2. Per L1  L2 prendiamo G3 = (V1  V2  { S3}, T1  T2, P3, S3) dove P3 = P1  P2  {S3  S1 , S3  S2}. Per L1 . L2 prendiamo G4 = (V1  V2  { S4}, T1  T2, P4, S4) dove P3 = P1  P2  {S4  S1 S2}. Per L1* prendiamo G5 = (V1  {S5}, T1, P5, S5) dove P3 = P1  {S5  S1 S5 , S5  e }. Teorema. I linguaggi non contestuali sono chiusi per sostituzione. Teorema. I linguaggi non contestuali sono chiusi per omomorfismo.

Proprietà dei linguaggi non contestuali (2) Esempio. Sia L un linguaggio di parole con un numero uguale di a e di b, sia La = {0n1n | n>= 1}, Lb = {wwR | w  (0+2)*}. Prendiamo per G la grammatica con produzioni S  a S b S | b S a S | e Per Ga prendiamo Sa  0 Sa 1 | 01 Per Gb prendiamo Sb  0 Sb 0 | 2 Sb 2 | e Sia f la sostituzione f(a) = La, f(b) = La. Allora f(L) è generato dalla grammatica con produzioni S  Sa S Sb S | Sb S Sa S | e

Proprietà dei linguaggi non contestuali (3) Teorema. I linguaggi non contestuali sono chiusi per omomorfismo inverso. Prova. Sia L = L(M). Si costruisce un PDA M’ che sull’input a genera la stringa h(a), simula M su h(a) e accetta a se M accetta h(a). Teorema. I linguaggi non contestuali non sono chiusi per intersezione. Prova. Prendiamo L1 = {aibici | i >= 1}, L2 = {aibicj | i >= 1, j >= 1}, L3 = {aibjcj | i >= 1, j >= 1}. Il linguaggio L1 = L2  L3 è l’intersezione di due CFL ma non è un CFL. Intersezione con gli insiemi regolari.

Proprietà dei linguaggi non contestuali (4) Teorema. Data una CFG G = (V,T, P, S) e x  T* è decidibile se x  L(G). Prova. Convertiamo G in G’ in forma normale di Greibach. Ogni produzione aggiunge un solo terminale e quindi se x ha una derivazione in G’ ne ha una in esattamente |x| passi. Se nessun non terminale in G’ ha più di k produzioni, allora ci sono al più k|x| Derivazioni da più a sinistra di stringhe di lunghezza |x|. Si possono provare sistematicamente. Questo algoritmo richiede un tempo esponenziale in |x|. Ne esiste uno di Cocke-Younger-Kasami in tempo cubico.