LT1-1.automi a stati finiti
Transcript
LT1-1.automi a stati finiti
Corso di Linguaggi e Traduttori 1 AA 2004-05 AUTOMI A STATI FINITI 1 1 Definizione di Automa a Stati Finiti (ASF) ASF I I stato iniziale F stato finale F simbolo corrente stringa di ingresso simboli già letti simboli ancora da leggere 2 2 Definizione di Automa a Stati Finiti (ASF) Ø Formalmente definiamo un automa a stati finiti M mediante una quintupla ( Q , Σ , δ , s , F ) dove: § Q è un insieme finito non vuoto di stati § Σ è un insieme finito non vuoto di simboli detto alfabeto di ingresso § δ è la funzione di transizione § s ∈ Q è lo stato iniziale § F ⊆ Q è l’insieme degli stati finali 3 3 Definizione di Automa a Stati Finiti (ASF) Ø Un automa a stati finiti può essere deterministico oppure non-deterministico ( Q , Σ , δ , s 0 , F ) 4 4 ASF deterministici ASF Deterministici Ø Dato lo stato corrente e il simbolo in ingresso, lo stato successivo è univocamente determinato Ø La funzione di transizione di un automa deterministico avrà quindi la forma: δ : Q × Σ → Q 5 5 ASF deterministici ASF Deterministici Ø Rappresentazione grafica di un ASF deterministico ? Q = {q0,q1,q2} ? Σ = {0,1} q0 1 0 1 δ(q1,0) = q1, δ(q1,1) = q2 δ(q2,0) = ε, δ(q2,1) = ε ? s0 = q0 (stato iniziale) 1 q ? δ(q0,0) = q1, δ (q0,1) = q0 q2 ? F = {q2} 0 6 6 Funzionamento di un ASF Deterministico ASF deterministici 0. Partendo dallo stato iniziale s 0 l'automa legge il primo simbolo della stringa di ingresso 1. Se la funzione di transizione δ non prevede uno stato successivo la stringa viene rigettata, altrimenti la computazione prosegue e l'automa passa allo stato indicato da δ 2. Se la stringa di ingresso contiene ancora simboli si legge il simbolo successivo e si ripete il passo 1 3. La stringa viene accettata se lo stato corrente appartiene all’insieme F degli stati finali, altrimenti viene rigettata 7 7 ASF deterministici Funzione di Transizione Estesa per un ASF Deterministico Ø Al fine di poter dare una definizione formale dell’insieme delle stringhe T(M) accettate da un automa a stati finiti deterministico M, introduciamo la funzione di transizione estesa definita come segue: δˆ (q, ε ) = q ˆ δ (q, ax ) = δˆ (δ (q , a ), x ) q ∈ Q , a ∈ Σ, x ∈ Σ* NB Il simbolo Σ * denota l'insieme di tutte le stringhe che si possono formare a partire dai simboli di Σ. Tale insieme è ovviamente infinito e contiene anche la stringa nulla indicata per convenzione con ε. 8 8 Linguaggio di un ASF Deterministico ASF deterministici Ø A questo punto siamo in grado di dare una definizione formale che definisce l'insieme di tutte le stringhe accettate da un automa deterministico M (ovvero il linguaggio T associato ad M): { + T ( M ) = w w ∈ Σ , δˆ (s 0 , w ) ∈ F } NB Per convenzione escludiamo dal linguaggio la stringa nulla, imponendo che w ∈ Σ +. Il simbolo Σ + denota l'insieme di tutte le stringhe che si possono formare a partire dai simboli di Σ, ad eccezione della stringa nulla. 9 9 ASF non deterministici ASF Non Deterministici Ø Dato lo stato corrente e il simbolo in ingresso, ci possono essere diversi possibili stati successivi Ø La funzione di transizione di un automa non deterministico avrà quindi la forma: δ : Q × Σ → 2 Q 10 10 ASF non deterministici ASF Non Deterministici Ø Rappresentaz. grafica di un ASF non deterministico ? Q = {q0,q1,q2} 0,1 q0 0 1 q1 0,1 ? Σ = {0,1} ? δ(q0,0) = {q0}, δ(q0,1) = {q1,q0} δ(q1,0) = {q2,q1}, δ (q1,1) = {q2} δ(q2,0) = {q2}, δ(q2,1) = ε ? s0 = q0 (stato iniziale) ? F = {q2} q2 0 11 11 ASF non deterministici Funzionamento di un ASF Non Deterministico 0. Partendo dallo stato iniziale s 0 l'automa legge il primo simbolo della stringa di ingresso 1. Se la funzione di transizione δ non prevede uno stato successivo la computazione corrente viene terminata e la stringa viene rigettata 2. La computazione prosegue in parallelo a partire da tutti gli stati previsti da δ 3. Se la stringa di ingresso contiene ancora simboli si legge il simbolo successivo e si ripetono i passi 1-2 4. La stringa viene accettata se in una qualunque delle computazioni attive lo stato corrente appartiene all’insieme F degli stati finali, altrimenti viene rigettata 12 12 ASF non deterministici Funzione di transizione Estesa per un ASF Non Deterministico Ø Al fine di poter dare una definizione formale dell’insieme delle stringhe T(M) accettate da un automa a stati finiti non deterministico M, introduciamo la funzione di transizione estesa definita come segue: δˆ(q, ε ) = {q} δˆ(q, ax) = Uδˆ( s, x) s∈δ ( q, a) q ∈ Q, a ∈ Σ, x ∈ Σ* NB Il simbolo Σ * denota l'insieme di tutte le stringhe che si possono formare a partire dai simboli di Σ. Tale insieme è ovviamente infinito e contiene anche la stringa nulla indicata per convenzione con ε. 13 13 ASF non deterministici Linguaggio di un ASF Non Deterministico Ø A questo punto siamo in grado di dare una definizione formale che definisce l'insieme di tutte le stringhe accettate da un automa non deterministico M (ovvero il linguaggio T associato ad M): { + T ( M ) = w w ∈ Σ , δˆ (s0 , w ) ∩ F ≠ ∅ } NB Per convenzione escludiamo dal linguaggio la stringa nulla, imponendo che w ∈ Σ +. Il simbolo Σ + denota l'insieme di tutte le stringhe che si possono formare a partire dai simboli di Σ, ad eccezione della stringa nulla. 14 14 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici Ø Per ogni automa non deterministico ne esiste sempre uno deterministico avente lo stesso comportamento Ø Esiste sempre la possibilità di convertire un automa da non deterministico a deterministico 15 15 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici Ø Il criterio che guida la conversione è quello di rappresentare insiemi di stati dell'ASF non deterministico come stati dell'ASF deterministico corrispondente Ø Ricordando che il numero massimo di sottoinsiemi che si possono formare a partire da un insieme dato di dimensione N è 2N, al più l'ASF deterministico corrispondente avrà 2N – 1 stati (*) (*) Notiamo che l'insieme vuoto non va considerato 16 16 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici Ø Consideriamo il seguente ASF non deterministico M: ? Q = {q0,q1,q2} 0,1 q0 0 1 q1 0,1 ? Σ = {0,1} ? δ(q0,0) = {q0}, δ(q0,1) = {q1,q0} δ(q1,0) = {q2,q1}, δ (q1,1) = {q2} δ(q2,0) = {q2}, δ(q2,1) = ε ? s0 = q0 (stato iniziale) ? F = {q2} q2 0 17 17 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici Ø Vogliamo trovare un ASF deterministico M' caratterizzato dalla quintupla {K , Σ , ∆ , s ′0 , F ′} Ø Analizziamo separatamente i singoli elementi: § K per costruzione avrà cardinalità al più 2|Q|-1 § Σ è ovviamente lo stesso di quello di M § ∆ è la nuova funzione di transizione § s'0 è il nuovo stato iniziale § F' è il nuovo insieme di stati finali 18 18 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici Ø L'insieme degli stati K dipende da ∆ § Un insieme di stati di M presente in ∆ da origine ad uno stato di M' Ø Lo stato iniziale s'0 di M' non dipende da ∆ § Lo stato iniziale di M' è la codifica dello stato iniziale di M Ø L'insieme degli stati finali dipende da ∆ § Uno stato di M' è finale se contiene almeno uno stato finale di M 19 19 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici Ø Per semplicità di notazione utilizziamo una codifica “binaria” degli stati di M': {q2,q1,q0} → k7, {q2,q1 } → k6, {q2,q0} → k5 , {q2} → k4, {q1,q0 } → k3, {q1 } → k2, {q0} → k1 Ø Codifica dello stato iniziale di M' s'0 = {q0} = k1 Ø Il problema principale è ovviamente quello di determinare la funzione di transizione ∆ di M' 20 20 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici Ø Codifica di ∆ (partiamo dallo stato iniziale k1) ∆(k1,0) = δ(q0,0) = {q0} = k1 ∆(k1,1) = δ(q0,1) = {q1,q0} = k3 ∆(k3,0) = δ(q1,0) ∪ δ(q0,0) = {q2,q1} ∪ {q0} = k7 ∆(k3,1) = δ(q1,1) ∪ δ(q0,1) = {q2} ∪ {q1,q0} = k7 ∆(k7,0) = δ(q2,0) ∪ δ(q1,0) ∪ δ(q0,0) = {q2} ∪ {q2,q1} ∪ {q0} = k7 ∆(k7,1) = δ(q2,1) ∪ δ(q1,1) ∪ δ(q0,1) = ε ∪ {q2} ∪ {q1,q0} = k7 NB In questo caso particolare M' ha 3 stati. In generale potevamo aspettarci che M' avesse al più 2|Q| – 1 = 23 – 1 = 7 stati. 21 21 Conversione Non D. → Deterministico Conversione di ASF da non deterministici a deterministici ? K = {k1,k3,k7} ? Σ = {0,1} 0 k1 ? ∆(k1,0) = k1, ∆(k1,1) = k3 ∆(k3,0) = k7, ∆(k3,1) = k7 1 k3 0,1 ∆(k7,0) = k7, ∆(k7,1) = k7 ? s'0 = k1 (stato iniziale) ? F' = {k7} k7 0,1 22 22