Sunteți pe pagina 1din 10

UNIVERSITATEA VALAHIA DIN TRGOVITE

FACULTATEA DE INGINERIE ELECTRIC


SPECIALIZAREA: AUTOMATIC AVANSAT, PRODUCTIC cI INFORMATIC INDUSTRIAL









AUTOMATE FINITE NON-DETERMINISTE
(AFND)










COORDONATOR : MASTERAND :



Introducere


Un automat finit (AF) sau o "main cu un numr finit de stri" este un model de
comportament compus din stri, tranziii i aciuni. O stare stocheaz informaii despre
trecut, adic reflect schimbrile intrrii de la iniializarea sistemului pn n momentul de fa.
O tranziie indic o schimbare de stare i este descris de o condiie care este nevoie s fie
ndeplinit pentru a declana tranziia. O aciune este o descriere a unei activiti ce urmeaz
a fi executat la un anumit moment i este de mai multe tipuri (de intrare, de ieire, de intrare
date, de tranziie).
Un automat finit poate fi prezentat printr-o diagram de stare, numit uneori i reea de
tranziie. O astfel de diagram este un graf direcionat, n care nodurile sunt strile automatului
i arcele sunt tranziii. Nodurile sunt etichetate cu litera q urmat de indici, iar arcele pot fi
etichetate cu simboluri dintr-un alfabet dat, , numit alfabet de intrare. Mulimea strilor unui
automat finit este notat cu Q.
Un automat finit are o stare iniial unic, indicat printr-o sgeat neetichetat, i n stri
finale (n 0). O stare final este reprezentat prin dou cercuri concentrice. Automatul finit poate
fi determinist sau non-determinist.
Din orice stare a unui automat finit determinist (AFD), A, pleac o unic tranziie pentru
fiecare simbol din alfabet i A nu poate trece de la o stare la alta fr s citeasc un simbol. Prin
renunarea la aceste restricii se obine o clas mai larg de automate finite, numite automate
finite non-deterministe (AFND).

















Automate finite non - deterministe (AFND)


Funcia de tranziie a unui automat finit determinist este:
: S S
aceasta avnd proprietatea c |(s, a)| 1, ()(s, a) S .
n cele ce urmeaz vom considera schimbarea acestei condiii pentru a permite non-
determinismul n funcia de tranziie . Acest lucru nseamn c (s,a) poate s nu fie unic.

1. Interpretare

Schimbarea de la S la P(S), ca i codomeniu pentru are, n mod clar, implicaii foarte
mari asupra modului de definire a prelungirii funciei de tranziie i, implicit, asupra modului de
definire a termenului limbaj acceptat de un automat finit non-determinist.
nainte ns de a considera aceste noiuni, vom descrie o interpretare fizic a modului
n care este privit non-determinismul n acest context.
S considerm tranziia (

, 0 ) = {

}, pentru maina urmtoare:



Vom privi aceast tranziie ca modelnd afirmaia:
Dac se citete 0 cnd suntem n starea

atunci sau starea

sau starea

pot aprea ca fiind


starea urmtoare.
Este important s ne amintim c:
a) Exact una dintre aceste stri este aleas.
b) Nu se poate prezice care dintre ele este aleas.
Astfel, dac (s, a) = R S, aflat n starea s i citind a, urmtoarea stare a automatului va fi o
stare (necunoscut) din R.
Non-determinismul (n sensul utilizat aici) nu trebuie gndit ca un proces aleator.
Chiar dac metodele aleatoare sau probabiliste definesc un tip particular de non-
determinism, conceptul de alegere non-determinist pe care dorim s-l utilizm exclude orice
posibilitate de modelare prin procese stohastice (s menionm, totui, c exist i conceptul de
automat probabilistic sau stohastic, intens studiat, ns n afara scopului pe care l avem n acest
moment).
Revenind la exemplul simplu pe care l-am dat mai nainte, starea iniial,

, poate
tranzita la strile

, n ambele cazuri tranziiile fiind etichetate cu 0. n mod analog,

are
tranziii etichetate cu 1 i la starea

i la starea

.

1.1. Definiie
Se numete automat finit non-determinist (AFN) un 5uplu
A=(S, , ,

, F)
unde :
y S este o mulime nevid finit, mulimea strilor automatului;
y este o mulime nevid finit, alfabetul de intrare;
y s S 0 este un element distins din S numit stare iniial;
y F S este mulimea strilor finale;
y : S P (S) este funcia de tranziie (non-determinist).

Pentru exemplul dat anterior, funcia de tranziie, descris tabelar, este:
0 1

} {

}

S ne reamintim c, atunci cnd am vorbit despre limbajul recunoscut de un automat finit
determinist, am avut nevoie de prelungirea funciei de tranziie la cuvinte peste alfabetul de
intrare, pe care am notat-o cu aceeai liter, ns :S * S.
ntr-un automat determinist complet, pornind din starea iniial, orice cuvnt w *,
poate fi gndit ca traversnd o secven (drum) unic de stri ale automatului.
ntr-un automat non-determinist, aceast secven poate s nu mai fie unic: pot exista
mai multe iruri de stri care s corespund unui singur cuvnt w.




1.2. Exemplu
Considerm automatul non-determinist avnd urmtorul graf de tranziie:

Pentru cuvntul w = 010 peste alfabetul de intrare {0,1}, arborele descrie urmtoarele
calcule posibile:
y 5 drumuri posibile indexate cu w;
y 3 drumuri care accept cuvntul w (se termin ntr-o stare final q2);
y 2 drumuri care resping cuvntul w (ntruct se termin ntr-o stare ne-final q1);
i atunci apare ntrebarea: Este 010 acceptat sau nu?
Din punct de vedere informal, faptul c w * este acceptat de automatul finit
nondeterminist A se poate descrie astfel: w este acceptat de A dac exist mcar un drum n
graful de tranziie al lui A care s fie etichetat cu w i sa se termine ntr-o stare final q F.

1.3. Definiia limbajului recunoscut de un AFND
Fie A=(S, , ,

, F) un automat finit non-determinist. Definim limbajul acceptat de A,


notat prin L(A), este limbajul
L( A ) = { w * | (

, w) F }.
n cele ce urmeaz vom ncerca s demonstrm c, din punct de vedere al limbajului
acceptat, nu se ctig nimic (n sensul c nu exist limbaje acceptate de un AFN care s nu fie
acceptate de un AFD).

1.4. Teorem
Pentru orice automat finit non-determinist A=(S, , ,

, F), exist un automat finit


determinist A=(S, , ,

, F) astfel nct L(A) = L(A).


S ilustrm ideea din spatele demonstraiei printr-un exemplu.
Considerm graful de tranziie al AFN-ului descris n exemplul de mai sus.

Putem grupa strile dup arcele care intr i ies din ele n modul urmtor:

Obinem astfel un automat care este determinist i este echivalent cu cel non-determinist
(adic accept acelai limbaj).
S indicm cteva etape ale demonstraiei teoremei:
Fie

= (

, ,

) un automat non-determinist care accept limbajul


L(

) *. Vom construi un automat finit determinist

= (

, ,

) astfel nct
L(

) = L(

).
Ideea este de a asocia unei singure stri din S
d
o anumit submulime de stri din S
nd
. Mai
precis, dac R

, i vom pune n coresponden o stare

dac exist w * astfel


nct

, w) = R.
Odat ce am definit toate strile din

n acest mod, definim funcia de tranziie

astfel:
pentru orice stare

avem corespunztor o submulime

.
Atunci vom pune

, a)=

unde

i corespunde lui

prin procedeul indicat


mai nainte.
Singurul lucru care ar mai trebui demonstrat ar fi c () w *,

, w)=


T=

w

. Demonstraia se obine uor, utiliznd inducia dup lungimea cuvntului w.

2. Expresii regulate

n seciunile precedente, am definit limbaje care sunt recunoscute (acceptate) de automate
finite (non-)deterministe i am constatat c AFN-urile au aceeai putere de acceptare cu a
AFD-urilor.
Aceste limbaje sunt uor de implementat n programe pe calculator. Totui, nu este
(ntotdeauna) convenabil s le specificm ca secvene (drumuri) n graful de tranziie al unui
automat finit. De exemplu, cnd vrem s gsim drumul (ruta) pe care a fost acceptat un cuvnt
din limbaj sau atunci cnd declarm simboluri pentru anumii identificatori, este prea complex
definirea unui automat finit n acest scop.
Atunci, este mai bine s alegem o expresie n form secvenial, definit succint i uor
de neles. Astfel de instrumente se numesc expresii regulate i au fost introduse pentru prima
dat de Kleene*. n practic, expresiile regulate sunt foarte des utilizate ca interfee utilizator
pentru a specifica limbajele regulate. n schimb, automatele finite se folosesc mai uor ca
reprezentri interne pe calculator pentru stocarea limbajelor regulate.

2.1. Teorem
O expresie regulat e peste un alfabet i limbajul L generat de aceasta se definesc
inductiv prin:
(1) e = este o expresie regulat care genereaz L = .
(2) e = este o expresie regulat care genereaz L = {}.
(3) e = a, cu a , este o expresie regulat care genereaz L = {a}.
Fie

expresii regulate, iar

., respectiv, limbajele generate de acestea.


Atunci:
(4) e = (

) este o expresie regulat care genereaz L =

.
(5) e = (

) este o expresie regulat care genereaz L =

..
(6) e =

este o expresie regulat care genereaz L = (L(

))*.
Presupunem c operaia * are ntietate fa de i +, iar are ntietate fa de +.
Perechile de paranteze se pot omite atunci cnd nu creaz confuzie. De asemenea,
omitem, de obicei, simbolul n expresiile regulate.





Exemple:
1. Fie = {a,b,c} i L * mulimea cuvintelor care conin abcc ca subcuvnt. Atunci L
poate fi generat de expresia regulat (a+ b+ c)*abcc(a+ b+ c)*.
2. Fie L {0,1}* mulimea tuturor cuvintelor care nu conin dou simboluri 1
consecutive. Atunci L este generat de (10 + 0)*(1 + ).
Spunem c dou expresii regulate sunt echivalente (notm

) peste dac
genereaz acelai limbaj.
Din modul de definire al limbajelor generate de expresiile regulate, este evident c
familia limbajelor generate de expresiile regulate coincide cu familia Reg () a limbajelor
regulate peste alfabetul (vezi i Cap.I, 3). S.C.Kleene a demonstrat n lucrarea sa c aceast
familie este egal cu familia limbajelor acceptate de AFD, adic expresiile regulate sunt
echivalente cu automatele finite, n ceea ce privete limbajele. Exist numeroi algoritmi de
transformare a expresiilor regulate n automate finite i invers.
Exist trei metode majore de transformare a unei expresii regulate ntr-un automat finit.
Prima dintre ele a fost elaborat de Thompson i const n transformarea unei expresii regulate
ntr-un AFN cu tranziii vide (tranziii etichetate cu , numite i tranziii spontane, adic
automatul poate trece dintr-o stare n alta (aparent) fr a introduce un simbol de intrare); metoda
este simpl i intuitiv, dar poate genera multe - tranziii iar automatul rezultat poate deveni
mult prea complex. n acest caz transformarea lui ntr-un AFD poate lua mult timp.
A doua metod a fost creat de Berry i Sethi i transform o expresie regulat ntr-un
AFN fr - tranziii; algoritmul se bazeaz pe teoria lui Brzozowski asupra derivarilor i pe
algoritmul de marcare al lui McNaughton i Yamada. Aceast a doua metod a fost mbuntit
apoi de Brggemann Klein . A treia metod este aceea de transformare a expresiei regulate
direct ntr-un AFD echivalent ; algoritmul const n: (1) transformarea unei expresii regulate ntr-
un AFN cu metodele de mai sus i (2) transformarea AFN n AFD.
n continuare, vom da o descriere succint a modului de transformare a unei expresii
regulate ntr-un AFN, urmnd-o pe aceea dat de A.Brggemann-Klein i D.Wood.
Fie e o expresie regulat peste . Inductiv, definim un AFN Me dup cum urmeaz:
(0)

= ({s},,,s,), unde (s,a) = , pentru toi a .


(1) M = ({s},,,s,{s}), unde (s,a) = , pentru toi a .
(2) Pentru a , Ma =({s,f},,,s,{f}), unde (s,a) = {f} este singura tranziie.

(3) Presupunem c

=(

, ,

),

=(

, ,

) i

= .

= (S, , ,

, F), unde S=

),

vor reprezenta aceeai stare;



F=

uac s

altfel



Pentru s S i a ,
(s,a)=

=(S, , ,

, F). unde


y se face o copie a lui s

, iar strile din

vor fi intrri pentru automatul nou format;


F=

uac s


Pentru s S i a ,
(s,a)=

=(S, , ,

, F), unde

, F= F

,
Pentru s S i a ,
(s,a)=




Aceste AFN-uri se numesc automatele lui Glushkov, dup cel care le-a definit iniial. O
proprietate mai deosebit a acestora este c nu exist tranziii care s se ntoarc la starea iniial.
Observaie: O expresie regulat e se numete determinist dac Me este un AFD.
Teorem: Dac e este o expresie regulat peste , atunci L(e) = L(

).