You are on page 1of 6

Prevodjenje Programskih jezika

teorija
Pojam konanog automata
Primer:

Slika 1
Postoje gotovi alati koji proveravaju da li niska pripada jeziku regularnih izraza u kome se nalazi.
Jedan takav, apstraktan alat je i konacni automat.
Konacni automati se sastoje od stanja i grana prelaska iz stanja u stanje.
- Stanja (0,1,2)
- Grane prelaska (a, b, a|b)
Stanja delimo na:
- pocetna stanja (moze ih biti vise, u praksi se najcesce srece slucaj sa samo jednim ulaznim
stanjem. Oznacavamo ih ulaznom strelicom bez prethodnog stanja.)
- zavrsna stanja (moze ih biti vise I najcesce ih I ima vise. Oznacavamo ih tako sto ih dva
puta zaokruzimo. Kada rec prodje kroz automat I dodje do zavrsnog stanja
onda kazemo da automat prihvata rec.)
- ostala stanja automata
Grane delimo na prelazne (kada idemo iz stanja u neko drugo stanje), I povratne (kada ostajemo u
istom stanju).
Konacni automati se dele na deterministicke I nedeterministicke.
Deterministicki automati su oni kod kojih iz svakog stanja po svakom slovu imamo tacno odredjen
prelazak, odnosno ne mozemo doci u situaciju da iz jednog stanja imamo vise puteva po istom
slovu. Na Slici 1 se jasno vidi da automat u stanju 0 ima dve opcije za procitano slovo ''a'' ili ce
ostati u stanju 0 ili ce preci u stanje 1. U slucaju da se javi ovakva situacija, automat je
nedeterministicki.
Nedeterminizam se javlja ukoliko naidjemo na sledecu situaciju:

Slika 2

Ukoliko u konacnom automatu, za neku rec, postoji putanja od pocetnog (ulaznog) do zavrsnog
stanja automata, mozemo reci da automat prihvata tu rec. Bitno je naglasiti da to moze biti bilo koja
putanja. Automat moze imati vise razlicitih putanja za istu rec. Sustina je da se stigne do zavrsnog
stanja. Kako automat moze imati vise zavrsnih stanja, nije bitno do kog zavrsnog stanja ce rec doci
da bi bila prihvacena ako dodje do bilo kog od zavrsnih stanja, automat je prihvata.
Primer implementacije ovakve strukture bi bio sledeci kod:
t = 0;
while((c=getchar())!='\n'){
switch(t)
case 0:
if(c==a0){
t=1;
break;
}
case 1:
if(c==b){
t=2;
break;
}

}
Prednost nedeterministickog automata
- Bliskost sa regularnim izrazom.
Regulatorni izrazi su cesto takvi da njihovo direktno implementiranje zahteva
nedeterminizam. Primer je operator +, gde se slovo koje stoji ispred moze ponavljati jednom
ili vise puta. U automatu bi to znacilo da mozemo da prihvatimo ako se pojavi jednom I
odmah predjemo u sledece stanje, kao I da prihvatamo mogucnost da se javlja vise puta, pa
ostajemo u istom stanju dok ne predjemo dalje. Takav primer je dat na slici 2.
- Od svakog nedeterministickog automata mozemo napraviti deterministicki.
Postupkom koji se zove determinizacija mozemo jednoznacno odrediti stanja sa vise prelaza
po istom slovu I time dobiti deterministicki automat.
Daljom minimalizacijom mozemo dobiti Minimalni Deterministicki Konacni Automat
(MDKA)
Konacni automati opisuju istu klasu kao regularni izrazi. Sve sto mozemo predstaviti regularnim
izrazom mozemo automatom, I obratno.
Definicija konacnog automata
Konacni automat je uredjena petorka koja se sastoji od
- Ulazne azbuke stanja
- Skupa stanja Q
- Skupa pocetnih stanja I
- Skupa zavrsnih stanja F
- Skupa relacija prelaska
Kod deterministickih automata, umesto relacija koristimo funkcije prelaska jer je automat
jednoznacno odredjen.

Definisanje jezika konacnog automata


q'

q''

gde : q ' , q' ' Q a w pripada skupu *

(*Napomena!: Zbog teskoca u izradi skripte, prelaze po nekom slovu cu


oznacavati vektorima)

Ovde su q' I q'' dva stanja iz skupa stanja Q, a slovo ili rec koja se javlja na ulazu.
=a1 a2 a3 ... an
q '=q 0
a1 q1
a2 q 3 ...qn =q ' '

akko q1, q2,. .. ,q n tako da (q(i 1) ,a 1 ,qi ) za 1in

U ovom slucaju, je rec sa ulaza koja se sastoji iz vise slova. Izraz kaze da je moguce stici od
stanja q' do stanja q'' ako i samo ako postoje takva stanja {q (1,2,...,n)} da je iz prethodnog stanja i1, preko odgovarajuceg procitanog slova moguce stici do sledeceg stanja, i gde ta relacija
sastavljena od (q(i 1) ,a 1 ,qi ) pripada skupu relacija .
Jezik konacnog automata
Jezik automata definisemo kao skup svih reci koje automat prihvata, odnosno skup reci cijim
citanjem i kretanjem po automatu mozemo stici do zavrsnog stanja.

L(a)={qi I , qf F ,q i
w qf }
Jezik automata L(a) definisemo kao skup reci za koje postoje pocetno I zavrsno stanje
takvi da je od pocetnog do krajnjeg stanja moguce stici prelaskom po .
Konfiguracije automata
Konfiguracija automata predstavlja uredjeni par Q (trenutno stanje u kome se nalazimo I sta
je jos ostalo na ulazu (*)).
(q ' , a )(q ' ' , ) akko (q ' , q' ' ,a)

Rad sa konfiguracijama cemo pokazati na primeru, radi lakseg razumevanja:


= (0,1)
Q = (A,B)
I = (A)
F = (A)
= (A,1,B) (B,1,A) (A,0,A) (B,0,B)
konfiguracije za = 010 (rec na ulazu je 010)
(A, 010)
(A, 10)
- procitali smo 0, ostajemo u stanju A sa 10 na ulazu
(B, 0)
- procitali smo 1, prelazimo u stanje B sa 0 na ulazu
(B, )
- procitali smo 0, ostajemo u stanju B sa praznom reci

Pojmovi determinizacije I potpunosti automata


Automat je deterministicki ako iz istog stanja po istom slovu imamo najvise 1 prelaz.
( p ,a ,q 1 )
( p ,a ,q 2 )

q1 =q2

Automat je potpun ako:

q 'Q a q' 'Q( q' ,a ,q '' )


odnosno ako za svako stanje postoji grana po svakom slovu.
Definicija : Svaki automat se moze upotpuniti!

Slika 3 - upotpunjen automat sa Slike 1

Da bi upotpunili automat sa
slike 1, koji nije imao prelaz
po slovu a iz stanja 1,
uvodimo stanje greske (Gr).
Stanje greske je
NEZAVRSNO stanje, ne
mozemo prihvatiti rec ako
dodje u stanje greske.
Medjutim, stanje greske se po
svim slovima vraca u samo
sebe, jer smo vec odbacili rec,
samo omogucavamo izbor po
svakom slovu. Iz stanja
greske se ne moze preci u
neko drugo stanje, sta god da
procitamo ostacemo u stanju
greske.

Bulovske operacije nad automatima


Nad konacnim automatima mozemo izvoditi I bulovske operacije, kao sto to mozemo I sa
regularnim izrazima. Evo nekih primera:
-Komplement automata
L'(A) = * \ L(A)
odnosno, komplement automata A sadrzi sve one reci koje mozemo dobiti
kombinovanjem ulazne azbuke a koje jezik automata A ne sadrzi, odnosno automat
ne prihvata.
Ukoliko je automat deterministicki I potpun, komplement mozemo pronaci tako sto
izvrsimo zamenu zavrsnih I nezavrsnih stanja nezavrsna postaju zavrsna a zavrsna
postaju nezavrsna. VODITI RACUNA o tome da je ovo moguce SAMO ukoliko je
automat DETERMINISTICKI I POTPUN.
-Proizvod automata
Navescemo primer nad automatom koji prepoznaje sve brojeve koji se
zavrsavaju nulom.
Radicemo proizvod sledecih automata:

Dobijeni proizvod je sledeci:


Novi skup stanja u proizvodu ce biti Dekartov
proizvod stanja ova dva automata. Prelaske
generisemo tako sto gledamo sta se desava u
oba automata po istom prelasku, tj.
Sa procitanom nulom u prvom automatu iz
stanja A ostajemo u stanju A, a u drugom
automatu prelazimo iz stanja X u stanje Y. Tako
da cemo u proizvodu prelaziti iz stanja (A, X) u
stanje (A,Y) po grani 0. Analogno pronalazimo
ostale prelaze.
Na osnovu ovog dijagrama proizvoda mozemo
odrediti I sledece:
- presek : (A,Y) jedino stanje (A,Y) sadrzi zavrsna stanja oba
automata

- uniju: (A,X) (A,Y) (B,Y) -bar jedno zavrsno stanje


- razliku: (A,X) -zavrsno stanje prvog, nezavrsna stanja drugog

Automat sa prelazima
Regularni izraz koji odgovara ovom automatu je a*b*
Do sada su dozvoljeni prelasci izgledali ovako:
QQ
Sada dozvoljavamo I sledeci skup relacija prelazaka:
Q{ }Q
odnosno sada dozvoljavamo da nam se u azbuci ulaznih slova nadje I , odnosno prazan karakter.
Prelaz po se moze vrsiti u bilo kom trenutku. Na nasem konacnom automatu to znaci sledece:
mozemo prvo citati a, jednom ili vise puta, medjutim, sada nam omogucava da predjemo u stanje
1 I bez procitanog a.
Svaki automat sa prelazom mozemo transformisati u automat bez prelaza, opisujuci isti jezik!
Trazena transformacija gornjeg automata bi izgledala ovako:
Trazimo izraz oblika
a
gde cemo ovaj oblik zameniti samo granom po a.
Stanja iz kojih mozemo stici do starih zavrsnih stanja citajuci
samo postaju nova zavrsna stanja u transformaciji.

Tompsonova konstrukcija
Tompsonov algoritam sluzi za konstruisanje automata sa prelazima na osnovu datog regularnog
izraza. Konstruisuci deo po deo I spajajuci delove na propisan nacin mozemo dobiti potpuno
matematicki ekvivalentan automat.

You might also like