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