Sei sulla pagina 1di 50

Linguaggi regolari e automi a stati finiti

A.A. 2014-2015

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Automi a stati finiti

Gli automi a stati finiti sono usati come modello per


Software per la progettazione di circuiti digitali.
Ricerca di parole chiave in un file o sul web.
Software per verificare sistemi a stati finiti, come protocolli di
comunicazione.
Analizzatore lessicale di un compilatore.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempi
Esempio: automa a stati finiti per un interruttore on/off
Push
Start
off

on

Push

Esempio: automa a stati finiti che riconosce la stringa then


Start

h
t

A.A. 2014-2015

e
th

n
the

Linguaggi regolari e automi a stati finiti

then

Concetti di base
Alfabeto: Insieme finito e non vuoto di simboli
Esempio: = {0, 1} alfabeto binario
Esempio: = {a, b, c, . . . , z} insieme di tutte le lettere
minuscole
Esempio: Insieme di tutti i caratteri ASCII

Stringa: Sequenza fnita di simboli da un alfabeto , e.g.


0011001
Stringa vuota: La stringa con zero occorrenze di simboli da

La stringa vuota e denotata con 

Nota: Lalfabeto e sempre finito

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Concetti di base

Lunghezza di una stringa: Numero di simboli nella stringa.


|w | denota la lunghezza della stringa w
|0110| = 4, || = 0
Potenze di un alfabeto: k = insieme delle stringhe di lunghezza
k con simboli da
Esempio: = {0, 1}
1 = {0, 1}
2 = {00, 01, 10, 11}
0 = {}
Domanda: Quante stringhe ci sono in 3 ?

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Concetti di base
Linsieme di tutte le stringhe su e denotato da
= 0 1 2
Anche:
+ = 1 2 3
= + {}
Concatenazione: Se x e y sono stringhe, allora xy e la stringa
ottenuta rimpiazzando una copia di y immediatamente dopo una
copia di x
x = a1 a2 . . . ai , y = b1 b2 . . . bj
xy = a1 a2 . . . ai b1 b2 . . . bj
Esempio: x = 01101, y = 110, xy = 01101110
Nota: Per ogni stringa x
x = x = x
A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Linguaggi

Definizione: Se e un alfabeto, e L , allora L e un


linguaggio Esempi di linguaggi:
Linsieme delle parole italiane legali
Linsieme dei programmi C legali
Linsieme delle stringhe che consistono di n zero seguiti da n uno
{, 01, 0011, 000111, . . .}

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Altri esempi

Linsieme delle stringhe con un numero uguale di zero e di uno


{, 01, 10, 0011, 0101, 1001, . . .}
LP = insieme dei numeri binari il cui valore e primo
{10, 11, 101, 111, 1011, . . .}
Il linguaggio vuoto
Il linguaggio {} consiste della stringa vuota
Nota: =
6 {}

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Problemi

La stringa w e un elemento di un linguaggio L?


Esempio: Dato un numero binario,
e primo? = e un elemento di LP ?
La stringa 11101 appartiene a LP ? Che risorse computazionali
sono necessarie per rispondere a questa domanda?
Di solito non pensiamo ai problemi come a problemi di
decisione con risposta si/no, ma come qualcosa che trasforma
un input in un output.
Esempio: la costruzione di un token a partire da un lessema.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Descrittori di insiemi

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Descrittori di insiemi

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Operazioni sui linguaggi


Unione:
L M = {w | w L o w M}
Intersezione:
L M = {w | w L e w M}
Concatenazione:
L.M = {w | w = xy , x L, y M}
Potenze:
L0 = {}, L1 = L, Lk+1 = L.Lk = Lk .L
Chiusura di Kleene:

[
L =
Li
i=0

Chiusura positiva di Kleene:

[
L+ =
Li
i=1
A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esercizi

Applicare le operazioni di concatenazione, unione, intersezione


e potenza ai seguenti linguaggi:
{an b n | n 0}
{an b m c p | n = m + p e n, m, p 0}
{(ab)n (cd)n | n 0}
{an b m c m d n | n, m 0}
{b m a2k b m an | n 0 e m, k 0}
{an b m c p d q | n + m = p + q e n, m, p, q 0}

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Specifica dei linguaggi


Ci sono vari modi di specificare un linguaggio
Grammatiche:
Una regola come E E + E specifica unespressione
aritmetica
Coda Persona.Coda
dice che una coda e costituita da una persona seguita da una
coda.
Automi:
Macchina astratta in grado di verificare se una frase e ben
scritta in un determinato linguaggio, per esempio:
Start

h
t

A.A. 2014-2015

e
th

n
the

Linguaggi regolari e automi a stati finiti

then

Automi a stati finiti deterministici

Un DFA e una quintupla


A = (Q, , , q0 , F )

Q e un insieme finito di stati


e un alfabeto finito (= simboli in input)
e una funzione di transizione Q Q
q0 Q e lo stato iniziale
F Q e un insieme di stati finali

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Sistemi per la descrizione dei DFA


Esempio:
Lautoma A = ({q0 , q1 , q2 }, {0, 1}, , q0 , {q1 }) come tabella di
transizione:
0
q2
q1
q2

q0
?q1
q2

1
q0
q1
q1

Lautoma come diagramma di transizione:


1
Start

q0

0
0

q2

A.A. 2014-2015

q1

0, 1

Linguaggi regolari e automi a stati finiti

Accettazione o riconoscimento
Un automa a stati finiti (FA) accetta o riconosce una stringa
w = a1 a2 an se esiste un cammino nel diagramma di transizione
che
1

Inizia nello stato iniziale

Finisce in uno stato finale (di accettazione)

Ha una sequenza di etichette a1 a2 an

Esempio: Lautoma a stati finiti


1
Start

q0

0
0

q2

q1

0, 1

accetta ad esempio la stringa 1001011 e tutte le stringhe del


linguaggio: L = {x01y | x, y {0, 1} }
A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Linguaggio accettato o riconosciuto

La funzione di transizione puo essere estesa a che opera su


stati e stringhe (invece che su stati e simboli)
) = q
Base:
(q,

x), a)
Induzione:
(q, xa) = ((q,
Formalmente, il linguaggio accettato da A e
0, w ) F }
L(A) = {w | (q
I linguaggi accettati da automi a stati finiti sono chiamati
linguaggi regolari

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Costruzione di un automa
Consideriamo il linguaggio dei numeri binari:
L = ({0} {1}{0, 1} ){.}{0, 1}+

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Costruzione di un automa

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Nota
Lo stato q5 ha la caratteristica di essere raggiunto, a partire dallo
stato iniziale, dalle stringhe che non sono nel linguaggio, pertanto
e uno stato di fallimento. Uno stato di questo tipo puo anche
essere sottinteso, tenendo comunque presente che fa parte
dellautoma deterministico.
Possiamo pertanto disegnare il diagramma di transizione nel modo
seguente:

Dora in poi useremo questa convenzione, intendendo sottinteso


uno stato di fallimento, quando nella definizione della funzione di
transizione di un automa deterministico manca qualche clausola (o
manca qualche arco nel diagramma di transizione).
A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio

Esempio: DFA che accetta tutte e sole le stringhe con un numero


pari di zero e un numero pari di uno
1

Start

q0

q1
0

0
0

0
q2

q3
1

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio

Rappresentazione tabulare dellautoma

? q0
q1
q2
q3

A.A. 2014-2015

0
q2
q3
q0
q1

1
q1
q0
q3
q2

Linguaggi regolari e automi a stati finiti

Esercizi

Costruire un DFA per ognuno dei seguenti linguaggi sullalfabeto


{0, 1}:
Insieme di tutte le strighe che finiscono con 00.
Insieme di tutte le stringhe con tre zeri consecutivi.
Insieme delle stringhe con 011 come sottostringa.
Insieme delle stringhe che cominciano o finiscono (o entrambe
le cose) con 01.
Insieme di tutte le stringhe che iniziano con almeno due 0 e
terminano con almeno due 1.
Insieme delle stringhe che contengono un numero di 1
divisibile per 5.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esercizi

Costruire un DFA per ognuno dei seguenti linguaggi sullalfabeto


{a, b}:
{an b n | 0 n 3}.
Insieme di tutte le stringhe che non presentano b consecutivi e
in cui tutte le sequenze di a siano di lunghezza pari.
Insieme delle stringhe che contengono un numero di a
multiplo di tre.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Automi a stati finiti non deterministici (NFA)


Un NFA puo essere in vari stati nello stesso momento, oppure,
visto in un altro modo, puo scommettere su quale sara il
prossimo stato
Esempio: un automa che accetta tutte e solo le stringhe che
finiscono in 01.
0, 1
Start

q0

q1

q2

Ecco cosa succede quando lautoma elabora linput 00101


q0

q0
q1

q0

(stuck)

q0

q1

0
A.A. 2014-2015

q0

q1
q2

q0

q2

(stuck)
0

Linguaggi regolari e automi a stati finiti

Definizione formale di NFA

Formalmente, un NFA e una quintupla


A = (Q, , , q0 , F )
Q e un insieme finito di stati
e un alfabeto finito
e una funzione di transizione da Q allinsieme dei
sottoinsiemi di Q ( : Q 2Q )
q0 Q e lo stato iniziale
F Q e un insieme di stati finali

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio
L NFA visto prima
0, 1
Start

q0

q1

q2

e
({q0 , q1 , q2 }, {0, 1}, , q0 , {q2 })
dove e la funzione di transizione

q0
q1
?q2

0
{q0 , q1 }

A.A. 2014-2015

1
{q0 }
{q2 }

Linguaggi regolari e automi a stati finiti

Esempio

Funzione di transizione estesa .

Base:
(q, ) = {q}
Induzione:
[
xa) =
(q,
(p, a)

p(q,x)

0 , 00101)
Esercizio: Calcolare (q
Formalmente, il linguaggio accettato da un NFA A e
0 , w ) F 6= }
L(A) = {w | (q

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Equivalenza di DFA e NFA


Gli NFA sono di solito piu facili da definire.
Sorprendentemente, per ogni NFA N ce un DFA D, tale che
L(D) = L(N), e viceversa.
Questo comporta una costruzione a sottonsiemi, ed e un
esempio di algoritmo di costruzione di un automa B a partire da
un altro automa A.
Dato un NFA
N = (QN , , N , q0 , FN )
costruiremo un DFA
D = (QD , , D , {q0 }, FD )
tale che
L(D) = L(N)
.
A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Equivalenza di DFA e NFA

I dettagli della costruzione a sottoinsiemi:


QD = {S | S QN }.
FD = {S QN : S FN 6= }
Per ogni S QN e a ,
D (S, a) =

N (p, a)

pS

Nota: |QD | = 2|QN | , anche se la maggior parte degli stati in QD


sono garbage, cioe non raggiungibili dallo stato iniziale.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio
Costruiamo D dall NFA
0, 1
Start

q0

{q0 }
{q1 }
?{q2 }
{q0 , q1 }
?{q0 , q2 }
?{q1 , q2 }
?{q0 , q1 , q2 }

A.A. 2014-2015

q1

{q0 , q1 }

{q0 , q1 }
{q0 , q1 }

{q0 , q1 }

q2

{q0 }
{q2 }

{q0 , q2 }
{q0 }
{q2 }
{q0 , q2 }

Linguaggi regolari e automi a stati finiti

Nota
Gli stati dellautoma D corrispondono a sottoinsiemi di stati
dellautoma N, ma avremmo potuto dare agli stati di D un nome
diverso, per esempio A F .

A
B
C
?D
E
?F
?G
?H

A.A. 2014-2015

0
A
E
A
A
E
E
A
E

1
A
B
D
A
F
B
D
F

Linguaggi regolari e automi a stati finiti

Crescita esponenziale degli stati


Possiamo spesso evitare la crescita esponenziale degli stati
costruendo la tabella di transizione per D solo per stati accessibili
come segue:
Base: S = {q0 } e accessibile in D
Induzione:
Se lo stato S e accessibile, lo sono anche gli stati in
S
a D (S, a).
Esempio: Il DFA con stati accessibili solamente.
1
Start
{q0}

0
0

{q0, q1}

{q0, q2}

0
1

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Crescita esponenziale degli stati

Esiste un NFA N con n + 1 stati che non ha nessun DFA


equivalente con meno di 2n stati
0, 1

Start

q0

q1

0, 1

q2

0, 1

0, 1

0, 1

L(N) = {x1c2 c3 cn : x {0, 1} , ci {0, 1}}

Vediamo come esempio il caso n = 3.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

qn

Crescita esponenziale degli stati

0
A

0,1

q0

q1 0,1 q2 0,1

0
0

B
C
D
E

q3

F
D

E
1

[q0]

[q0,q1]

[q0,q2]

[q0,q1,q2]

[q0,q3]
[q0,q1,q3]
[q0,q2]
[q
]
[q0,q1]
[q0,q3]
0
[q0,q1,q2] [q0,q2,q3] [q0,q1,q2,q3]
[q0,q1,q3] [q0,q2]
[q0,q1,q2]

[q0,q1,q3]
G [q0,q2,q3] [q0,q3]
H [q0,q1,q2,q3] [q0,q2,q3] [q0,q1,q2,q3]

0
1

[q0]
[q0,q1]

1
0

H 0

A.A. 2014-2015

Il numero di stati dellautoma


deterministico 23

Linguaggi regolari e automi a stati finiti

Equivalenza tra DFA e NFA

Teorema 2.11: Sia D il DFA ottenuto da un NFA N con la


costruzione a sottoinsiemi. Allora L(D) = L(N).
Teorema 2.12: Un linguaggio L e accettato da un DFA se e solo
se L e accettato da un NFA.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

FA con transizioni epsilon

-NFA che raggiunge uno stato finale esaminando testi che


contengono almeno una delle parole chiave {ebay, web}

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Definizione ed esempio
Un -NFA e una quintupla (Q, , , q0 , F ) dove e una funzione
da Q ( {}) allinsieme dei sottoinsiemi di Q
: Q ( {}) 2Q
Esempio: Un -NFA che accetta numeri decimali con o senza segno
e una parte decimale opzionale.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio
La quintupla che definisce formalmente l-NFA :
E = ({A, B, C , D, E , F }, {., +, , 0, 1, . . . , 9} , A, {E , F })
dove la tabella delle transizioni per e

A
B
C
D
?E
?F


{B}

{E }
{E }

+,{B}

A.A. 2014-2015

{F }

{C }

{D}

{F }

1, . . . , 9

{D}

{D}

{F }

Linguaggi regolari e automi a stati finiti

Epsilon-chiusura

La -chiusura di uno stato e un insieme di stati che contiene lo


stato stessso e tutti gli stati da esso raggiungibili tramite una
sequenza  
Definizione induttiva di ECLOSE(q)
Base:
q ECLOSE(q)
Induzione:
p ECLOSE(q) and r (p, ) r ECLOSE(q)

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio di epsilon-chiusura

Per esempio,
ECLOSE(1) = {1, 2, 3, 4, 6}

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Linguaggio accettato da un -NFA


Definizione induttiva di per automi -NFA
Base:
) = ECLOSE(q)
(q,
Induzione:
[

xa) =
(q,

ECLOSE(p)

p((q,x),a)

Nota: Se I e un insieme
di stati, (I , a) e usato come
S
abbreviazione per pI (p, a)
Formalmente, il linguaggio accettato da un -NFA E e
0 , w ) F 6= }
L(E ) = {w | (q
0 , 5.6) per lNFA dei numeri decimali
Esercizio: calcolare (q
A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Da -NFA a DFA
Dato un -NFA
E = (QE , , E , q0 , FE )
costruiremo un DFA
D = (QD , , D , qD , FD )
tale che
L(D) = L(E )
Dettagli della costruzione:
QD = {S : S QE e S = ECLOSE(S)}
qD = ECLOSE(q0 )
FD = {S | S QD e S FE 6= }
D (S, a) =
[
[
{ECLOSE(p) | p
(t, a)}
tS
A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio: costruzione di un -NFA e del FA equivalente

Un -NFA che accetta numeri decimali consiste di:


1

Un segno + o -, opzionale

Una stringa di cifre decimali

un punto decimale

unaltra stringa di cifre decimali

Una delle stringhe (2) e (4) e opzionale

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esempio

-NFA E
0,1,...,9
Start

q0 ,+,-

q1

0,1,...,9

q2

0,1,...,9

0,1,...,9

q3

.
q4

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

q5

Esempio
DFA D corrispondente ad E
0,1,...,9

{q0, q }
1

+,-

{q }
1

0,1,...,9

0,1,...,9

{q , q }
1

{q2, q3, q5}


0,1,...,9

.
Start

{q2}
0,1,...,9

{q3, q5}

0,1,...,9

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Equivalenza tra -NFA e DFA

Teorema 2.22: Un linguaggio L e accettato da un -NFA E se e


solo se L e accettato da un DFA.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esercizi

Disegnare il diagramma di transizione di automi finiti


deterministici che riconoscano i linguaggi sullalfabeto {a, b} che
soddisfano una delle seguenti condizioni:
1

ogni occorrenza del carattere a sia seguita immediatamente da


almeno due occorrenze del carattere b.

ogni occorrenza del carattere a sia seguita immediatamente da


esattamente due occorrenze del carattere b.

inizino con almeno due a e terminino con almeno due b.

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti

Esercizi
Costruire gli automi a stati finiti deterministici equivalenti ai
seguenti automi non deterministici:

A.A. 2014-2015

Linguaggi regolari e automi a stati finiti