You are on page 1of 49

23.3.

2011

Sveuilite u Osijeku, Rijeci, Splitu i Zagrebu


Zajedniki sveuilini poslijediplomski doktorski studij matematike

Standardni kolegij

Matematika logika i raunarstvo


Drugi semestar

Dio I:
Regularni jezici
Robert Manger, oujak 2011

Sadraj dijela I
1. Konani automati
2. Regularni izrazi
3. Nedeterminizam
4. Svojstva regularnih jezika
5. Primjene konanih automata

TR-I

Regularni jezici

23.3.2011

1.0 Uvod u konane automate


U ovom poglavlju upoznat demo se s konanim
automatima. Rije je o najjednostavnijem modelu
raunanja.
Govorit demo i o formalnim jezicima, te o prikazu
konanih automata pomodu dijagrama.
Konani automat treba zamiljati kao model za
raunalo bez memorije. Tonije reeno, njegova
memorija je fiksne veliine i ne moe se prilagoditi
veliini ulaznih podataka.
Bez obzira na ogranienje mogudnosti, konani
automat moe rijeiti neke jednostavnije probleme
koji se svode na prepoznavanje nekih vrsta jezika.
TR-I

Regularni jezici

1.1 Alfabet, rije, jezik

Alfabet je konani skup ije elemente zovemo znakovi.


Rije (string) je konani niz znakova.
Jezik je skup rijei.
Duljina rijei je broj znakova u njoj.
Prazna rije je rije s duljinom 0.
Primjer: promatramo alfabet = {0, 1}.

TR-I

Tada su 010, 110, 0011, rijei nad .


L1 = {010, 110, 1111} je konani jezik nad .
L2 = {, 1, 11, 111, 1111, } je beskonani jezik nad .
Skup svih mogudih rijei nad je
* = {, 0, 1, 00, 01, 10, 11, } .
Regularni jezici

23.3.2011

1.2 Opis konanog automata (1)


Konani
automat (finite
automaton)
KA je stroj koji
obrauje rijei.
KA se sastoji se od etiri dijela:
Ulazne trake koja sadri jednu rije.
Glave koja ita ulaznu rije znak po znak.
Memorije koja se moe nadi u jednom od konano mnogo
stanja govorimo o tekudem stanju automata.
Kontrolne jedinice koja ovisno o tekudem stanju i upravo
proitanom znaku prebacuje automat u novo stanje.
TR-I

Regularni jezici

1.2 Opis konanog automata (2)


Nain rada KA.
1.
2.
3.
4.
5.

Postavi automat u poetno stanje, a glavu na poetak trake.


Ako smo preli preko kraja rijei, tada zaustavi automat.
Proitaj idudi znak iz ulazne rijei.
Promijeni stanje ovisno o tekudem stanju i proitanom znaku.
Idi na korak 2.

Svrha KA je prepoznavanje rijei iz nekog jezika.


Neka od stanja nazivaju se prihvadajuda (accept).
Ostala stanja su odbacujuda (reject).

Automat je prihvatio rije ako i samo ako se zaustavio u


prihvadajudem stanju.
TR-I

Regularni jezici

23.3.2011

1.3 Prikaz KA pomodu dijagrama (1)


Stanja se crtaju kao vorovi (krugovi).
Prijelazi iz stanja u stanje crtaju se kao lukovi
(strelice).
Na svakom luku upisan je znak koji uzrokuje
dotini prijelaz.
Poetno stanje je oznaeno ulaznom strelicom
koja stie niotkuda.
Prihvadajude stanje je oznaeno dvostrukim
rubom kruga.
TR-I

Regularni jezici

1.3 Prikaz KA pomodu dijagrama (2)


Primjer 1.1. Slika sadri dijagram KA s tri stanja A, B i
C. polazno stanje je A, jedino prihvadajude stanje je C.
Ovaj KA prihvada sve rijei sastavljene od 0 i 1 s dvije
uzastopne nule bilo gdje.

TR-I

Regularni jezici

23.3.2011

1.3 Prikaz KA pomodu dijagrama (3)


Primjer 1.2. Koje rijei prihvada KA opisan
dijagramom na sljededoj slici?
Odgovor: sve rijei sastavljene od 0 i 1 s
neparnim brojem jedinica.

TR-I

Regularni jezici

1.4 Oblikovanje KA (1)


Bavimo se pitanjem: kako za zadani jezik oblikovati KA
koji prepoznaje rijei iz tog jezika.
Ne postoji recept, potrebna je inventivnost i iskustvo.
Primjer 1.3. Pokuajmo sagraditi KA koji prepoznaje
sve binarne rijei koje poinju s 00.
Oito, treba proitati prva dva znaka, a ostale ignorirati.
vor C je primjer zamke koja se koristi kad neproitani
dio rijei treba ignorirati.

TR-I

Regularni jezici

10

23.3.2011

1.4 Oblikovanje KA (2)


Primjer 1.4. Neto tei zadatak je prepoznavanje
binarnih rijei koje zavravaju s 00.
Opet moraju postojati tri stanja A, B, C. A je
polazno, C prihvadajude, a 0 nas prebacuje iz A u B
ili iz B u C. Ako proitamo znak 1, to nas vrada u
polazno stanje.

TR-I

Regularni jezici

11

1.4 Oblikovanje KA (3)


Primjer 1.5. Sad demo oblikovati KA za prepoznavanje
binarnih rijei gdje nule i jedinice alterniraju.
Jedno rjeenje je na slici ispod. Napravili smo dva
simetrina pod-automata s vezama izmeu i zamkom
u sredini.

TR-I

Regularni jezici

12

23.3.2011

1.4 Oblikovanje KA (4)


No moe se konstruirati i
jednostavnije rjeenje
kao na slici desno.
Primjer 1.5 pokazuje
da, makar jedan KA
prepoznaje samo jedan
jezik, za zadani jezik
moe postojati vie KA
koji ga prepoznaju.
No moe se desiti da za zadani jezik ne postoji ni
jedan KA koji ga prepoznaje.
TR-I

Regularni jezici

13

1.4 Oblikovanje KA (5)


Primjer 1.6. Na kraju demo oblikovati KA za
prepoznavanje binarnih rijei koje poinju i
zavravaju istim znakom.
Potrebno je zapamtiti
poetni znak. U tu
vrhu razdvajamo KA
na dva dijela.
Izmeu razdvojenih
dijelova nema
naknadnih veza jer bi
inae KA zaboravio
prvi proitani znak.
TR-I

Regularni jezici

14

23.3.2011

1.5 Prikaz KA pomodu tablice prijelaza


Umjesto pomodu dijagrama, FA se moe prikazati
pomodu tablice.
Redci odgovaraju mogudim stanjima, a stupci
mogudim ulaznim znakovima.
Element tablice sadri novo stanje u koje automat
prelazi ako se nalazio u zadanom stanju i proitan je
Ulaz
zadani znak.
0
1
Na primjer, KA iz Primjera
S
A
C
1.6 ima ovakvu tablicu.
Stanje A
A
B
Prikaz pomodu tablice je
B
A
B
C
D
C
pogodan ako KA elimo
D
D
C
simulirati na raunalu. Regularni jezici
TR-I
15

1.6 Formalna definicija KA (1)


Automati koje smo do sada prouavali zapravo se
zovu deterministiki konani automati DKA.
DKA se moe strogo definirati kao ureena 5-torka
(Q, , q0, T, ), gdje je:

TR-I

Q konaan skup stanja,


alfabet za ulazne znakove,
q0 je polazno stanje, q0 je element od Q
T je skup prihvadajudih stanja, T je podskup od Q
je funkcija prijelaza (transition function) koja preslikava
stanje i znak u stanje. Dakle: : Q Q .

Regularni jezici

16

23.3.2011

1.6 Formalna definicija KA (2)


Kao primjer, automat iz Primjera 1.6 je ureena
5-torka (Q, , q0, T, ), gdje je:

Q = { S, A, B, C, D },
= { 0, 1},
Q0 = S,
T = { A, C }
je opisana tablicom prijelaza sa slajda 15.

TR-I

Regularni jezici

17

Sadraj dijela I
1. Konani automati
2. Regularni izrazi
3. Nedeterminizam
4. Svojstva regularnih jezika
5. Primjene konanih automata

TR-I

Regularni jezici

18

23.3.2011

2.0 Uvod u regularne izraze (1)


U ovom poglavlju upoznat demo regularne izraze. Oni
slue za precizno definiranje jezika nad odabranim
alfabetom. Osnovna ideja je da se jezik opie
svojevrsnim algebarskim izrazom.
Regularni izrazi nisu univerzalni nain opisivanja
jezika, naime postoje brojni jezici koji se ne mogu
tako opisati.
Vidjet demo da regularni izrazi ustvari mogu opisati
tono one jezike koji se mogu prepoznati konanim
automatima.
U tom smislu, regularni jezici mogu se smatrati
nekom vrstom alternativnog prikaza istog modela
raunanja kojeg daju konani
automati.
TR-I
Regularni jezici
19

2.0 Uvod u regularne izraze (2)


Kao ilustraciju upotrebe regularnih izraza, zamislimo
da unutar nekog teksta moramo prepoznati rijei
odreenog tipa, na primjer decimalne brojeve.
Za decimalni broj traimo da se on sastoji od
neobaveznog minusa, niza znamenki, neobavezne
decimalne toke i (ako je bilo toke) dodatnog
neobaveznog niza znamenki.
To preciznije opisujemo regularnim izrazom:
(- )DD*( .D*)
Simbol D znai znamenka i moe se raspisati kao:
(0 1 2 3 4 5 6 7 8 9) .
TR-I

Regularni jezici

20

10

23.3.2011

2.1 Graa i znaenje regularnog izr (1)


Regularni izraz RI opisuje skup rijei, dakle jezik.
Operandi u RI su znakovi ili rijei nad odabranim
alfabetom , ali shvadeni kao jezici.
Ako je operand rije, podrazumijeva se jezik sastavljen od
te jedne rijei.
Ako je operand znak, tada je to jezik ija jedina rije se
sastoji samo od tog znaka.

Operacije u RI mogu biti: unija, konkatenacija i


zvjezdica. One od zadanih jezika rade nove jezike.
Osim znakova iz alfabeta , u RI se pojavljuje i 5
posebnih znakova: * ( ) .
Regularni izraz se interpretira (izvrednjava) prema
sljededim pravilima.
TR-I

Regularni jezici

21

2.1 Graa i znaenje regularnog izr (2)


Zagrade ( i ) slue za grupiranje odnosno upravljanje
redoslijedom izvravanja operacija.
Znak oznaava uniju i esto ga itamo kao ili. Dakle, izraz
0 1 znai nula ili jedinica.
Konkatenacija se oznaava pisanjem dvaju izraza jednog do
drugog bez razmaka. Dakle, (0 1)0 odgovara paru 00 i 10.
Kao i dosad, znai praznu rije. Dakle, izraz (0 1)(0 )
odgovara etirima rijeima: 00, 0, 10, 1.
Zvjezdica * znai nula ili vie kopija. Na primjer, izraz a*
odgovara skupu svih mogudih nizova a-ova, dakle {, a, aa,
aaa, }. Takoer, (0 1)* odgovara svim mogudim binarnim
rijeima, dakle to je isto to (0 1) (0 1)(0 1)
Ako nema zagrada, podrazumijeva se ovakav prioritet
operacija: prvo zvjezdica, zatim konkatenacija, zatim unija.
TR-I

Regularni jezici

22

11

23.3.2011

2.2 Nekoliko primjera RI (1)


Primjer 2.1. Izraz
(01)*
odgovara skupu
{, 01, 0101, 010101, }.
Primjer 2.2. Promatramo jezik koji se sastoji od svih
binarnih rijei duljine barem 2 koje poinju i
zavravaju s istim znakom. Taj jezik je definiran
sljededim izrazom:
0(0 1)*0 1(0 1)*1
TR-I

Regularni jezici

23

2.2 Nekoliko primjera RI (2)


Primjer 2.3. Promatramo izraz:
( (0 1)*1 )(00)*00
Jezik kojeg taj izraz opisuje je skup svih binarnih rijei
koje zavravaju s parnim brojem nula.
Mogli bismo (krivo) pomisliti da se isti rezultat
dobiva i jednostavnijim izrazom
(0 1)*(00)*00
No sad dobivamo neto drugo: bilo koju rije koja
zavrava s barem dvije nule.
TR-I

Regularni jezici

24

12

23.3.2011

2.3 Definicije regularnih operacija


Rekli smo da se tri regularne operacije unutar RI
primjenjuju na pod-izraze koji su sami po sebi jezici.
Iz prethodnih primjera otprilike smo vidjeli to te
operacije rade, no sad demo ih precizno definirati.
Neka su R i S dva pod-izraza. Tada je:
R S skupovna unija od R i S, dakle skup svih rijei koje
su ili u R ili u S.
Konkatenacija RS je skup svih rijei koje se mogu dobiti
lijepljenjem jedne rijei iz R s jednom rijei iz S.
R* je skup svih rijei koje se dobivaju lijepljenjem
proizvoljnog broja primjeraka proizvoljnih rijei iz R.
Operacija zvjezdica moe se i rekurzivno definirati:
1.
2.
TR-I

je element od R*.
Ako je x element od R* i y od R, tada je xy element od R*.
Regularni jezici

25

2.4 Formalna definicija RI (1)


Pojam regularnog izraza moe se strogo definirati uz
pomod sljedede rekurzivne (induktivne) definicije.
Zadan je alfabet koji ne sadri znakove * ( ) . Niz
znakova R je regularni izraz nad alfabetom ako je R:
1.
2.
3.
4.
5.
6.
TR-I

Prazan niz znakova,


,
Znak a iz alfabeta ,
(R1 R2) gdje su R1 i R2 regularni izrazi,
R1R2 gdje su R1 i R2 regularni izrazi,
(R1)* gdje je R1 regularni izraz.
Regularni jezici

26

13

23.3.2011

2.4 Formalna definicija RI (2)


Primjedbe uz prethodnu definiciju:

U sluaju 1 vrijednost RI je prazan jezik.


U sluaju 2 RI je jezik s jednom rijei koja je prazna.
U sluaju 3 RI je jezik s jednom rijei duljine 1.
U sluajevima 4, 5 i 6 vrijednost RI se rauna kao unija,
konkatenacija, odnosno zvjezdica odgovarajudih podizraza.
Zagrade u 4, 5 i 6 mogu se ispustiti ako su nepotrebne.
Definicija ne uvodi neprazne rijei kao mogude operande
u izrazu. To je zato to se svaka takva rije moe shvatiti
kao konkatenacija znakova.
TR-I

Regularni jezici

27

2.5 Regularne operacije nad


proizvoljnim jezicima (1)
Regularne operacije mogu se izvravati nad
proizvoljnim jezicima, ne samo onima koji su
dobiveni kao pod-izrazi u RI.
Zbog mogude sloenosti takvih jezika, dobiveni
rezultat ne mora nuno biti izraziv kao RI.
Ideju koritenja regularnih operacija na eksplicitno
zadanim jezicima ilustrirat demo pomodu dva
primjera.

TR-I

Regularni jezici

28

14

23.3.2011

2.5 Regularne operacije nad


proizvoljnim jezicima (2)
Primjer 2.4. Za jezike
L = {ma, pa},
M = {be, bop}
vrijedi:
L M = {ma, pa, be, bop},
LM = {mabe, mabop, pabe, pabop},
L* = {, ma, pa, mama, ., pamamapa, }.

TR-I

Regularni jezici

29

2.5 Regularne operacije nad


proizvoljnim jezicima (3)
Primjer 2.5. Skup svih mogudih rijei nad alfabetom
oznaavali smo sa *. Sad vidimo da to zapravo
nije bila neka posebno dogovorena oznaka nego
primjena operacije zvjezdica.
Zaista, ako shvatimo kao jezik sastavljen od jednoslovanih rijei, tada primjena zvjezdice na taj jezik
daje bilo koju rije nad ukljuujudi i praznu rije .

TR-I

Regularni jezici

30

15

23.3.2011

2.6 Veza izmeu RI i KA (1)


Za prethodne primjere RI relativno lako bismo mogli
konstruirati KA koji prepoznaje tono taj isti jezik
kojeg opisuje RI.
Primjer 2.6. Jezik zadan izrazom
(0 1)*00(0 1)*
ine binarne rijei s dvije uzastopne nule bilo gdje.
Taj jezik prepoznaje KA iz Primjera 1.1.

TR-I

Regularni jezici

31

2.6 Veza izmeu RI i KA (2)


Obratno, ako imamo zadan KA i znamo opisati jezik
kojeg on prepoznaje, tada taj jezik moemo i
preciznije definirati kao RI.
Primjer 2.7. KA iz Primjera 1.4 prepoznaje rijei koje
zavravaju s 00. Isti jezik moemo definirati izrazom
(0 1)*00.

TR-I

Regularni jezici

32

16

23.3.2011

2.6 Veza izmeu RI i KA (3)


Ova obostrana veza izmeu RI i KA nije sluajna. U
idudem poglavlju dokazat demo da vrijedi:
Teorem (Kleene): Jezik se moe prepoznati pomodu KA
ako i samo ako se on moe opisati pomodu RI.
Dokaz Kleene-ovog teorema je konstruktivan i moe se
shvatiti kao algoritam za pretvorbu RI u KA i obratno.
Jezik kojeg prepoznaje neki KA, ili ekvivalentno jezik
kojeg opisuje neki RI, zove se regularni jezik.
Regularni jezici su najjednostavnija vrsta jezika. Vidjet
demo da golema vedina jezika nije regularna. Dakle
postoje brojni jezici koji se ne mogu zapisati kao RI te
se ne mogu prepoznati pomodu KA.
TR-I

Regularni jezici

33

Sadraj dijela I
1. Konani automati
2. Regularni izrazi
3. Nedeterminizam
4. Svojstva regularnih jezika
5. Primjene konanih automata

TR-I

Regularni jezici

34

17

23.3.2011

3.0 Uvod u nedeterminizam


U ovom poglavlju upoznajemo se s nedeterminizmom
i nedeterministikim konanim automatima.
Nedeterminizam je fleksibilniji nain raunanja gdje
ishod pojedine raunske operacije nije jednoznano
odreen.
Nedeterminizam treba shvatiti kao misaoni koncept
koji pomae u teorijskim razmatranjima i omoguduje
jednostavnije dokazivanje teorema. To demo pokazati
na primjeru Kleene-ovog teorema.
Kao svojevrsno iznenaenje, otkrit demo da nedeterministiki KA imaju istu raunalnu snagu kao i
deterministiki, to jest oni i dalje prepoznaju isti skup
jezika.
TR-I
Regularni jezici
35

3.1 Svojstva nedeterministikih KA


Kod nedeterministikog KA (NKA) iz jednog stanja za isti
znak alfabeta moe postojati nula, jedan ili vie mogudih
prijelaza.
Ako automat doe u stanje gdje za uitani znak ima vie
mogudih prijelaza, tada kaemo da se on grana.
Ako automat doe u stanje gdje za uitani znak nema
nikakvog prijelaza, kaemo da on umire.
Mogude je da neke grane vode u prihvadajude a neke u
odbacujude stanje. Kako znamo da li je rije prihvadena?
NKA prihvada ulaznu rije ako postoji neki izbor prijelaza
koji ita cijelu rije i zavrava u prihvadajudem stanju.
Za prihvadanje je dovoljna jedna prihvadajuda grana, a
za odbijanje ni jedna grana ne smije biti prihvadajuda.
TR-I

Regularni jezici

36

18

23.3.2011

3.2 Nekoliko primjera NKA (1)


Primjer 3.1. Koji jezik prepoznaje ovaj NKA?
Rije 0110 se prihvada jer automat moe odabrati granu
AACD.
No 101010 se odbacuje jer bilo koja grana koja ide u stanje
B ili C umire.

Ovaj NKA prihvada tono one binarne rijei koje


sadre 00 ili 11 kao podrijei.

TR-I

Regularni jezici

37

3.2 Nekoliko primjera NKA (2)


Primjer 3.2. to radi ovaj NKA?
On prihvada sve binarne rijei koje zavravaju s 101.
Da bi prihvatio rije iz jezika, automat ostaje u
stanju A sve dok nedeterministiki ne pogodi pravu
jedinicu za koju se treba pomaknuti u stanje B.

TR-I

Regularni jezici

38

19

23.3.2011

3.2 Nekoliko primjera NKA (3)


Primjer 3.3. Ovaj put se sluimo nedeterminizmom
da bi istovremeno traili po dva obrasca.
NKA prepoznaje jezik zadan regularnim izrazom
a* (ab)*

TR-I

Regularni jezici

39

3.3 Kako objasniti nedeterminizam?


Ima vie naina kako si moemo zornije predoiti
nain rada NKA.
1. Zamiljamo da automat sluajno odabire jedan od
mogudih prijelaza. Pritom on ima ludu sredu, jer uvijek
pogodi onu mogudnost koja vodi ka prihvadanju ako takva
mogudnost postoji.
2. Zamiljamo NKA kao paralelni stroj. Kad god postoji vie
mogudnosti, stroj se multiplicira i nastavlja rad u vie
primjeraka (ili vie paralelnih procesa).
3. Zamiljamo da NKA sistematski ispituje sve mogudnosti
postupkom backtracking-a. Dakle stroj najprije istrauje
jednu granu, zatim se vrada na prethodno mjesto izbora
da bi istraio drugu granu, i tako dalje, sve dok ne istrai
sve grane.
TR-I

Regularni jezici

40

20

23.3.2011

3.4 - prijelazi (1)


Od sada demo doputati i -prijelaze, dakle prijelaze
oznaene praznom rijei. Oni omoguduju automatu da
promijeni stanje bez troenja ulaznog znaka.
Na primjer, ako je jezik kojeg promatramo unija od dva
jednostavnija jezika, tada -prijelaz dozvoljava automatu
da pogodi u kojem dijelu unije treba traiti ulaznu rije.
Primjer 3.4. Na slici je NKA koji prihvada sve binarne
rijei s nulom na kraju, ili rijei od samih jedinica.

TR-I

Regularni jezici

41

3.4 - prijelazi (2)


Primjer 3.5. Evo jo jednog NKA koji prepoznaje jezik
a* (ab)*
dakle to je drugo rjeenje za problem iz Primjera 3.3.

TR-I

Regularni jezici

42

21

23.3.2011

3.5 Formalna definicija NKA (1)


NKA se moe strogo definirati kao ureena 5-torka
(Q, , q0, T, ), gdje je:

TR-I

Q konaan skup stanja,


alfabet za ulazne znakove,
q0 je polazno stanje, q0 je element od Q
T je skup prihvadajudih stanja, T je podskup od Q
je funkcija prijelaza (transition function) koja preslikava
stanje i znak u skup stanja. Dakle:
: Q ( U {}) 2Q (podskupovi od Q).

Regularni jezici

43

3.5 Formalna definicija NKA (2)


Jedina razlika definicije NKA u odnosu na definiciju
DKA je funkcija prijelaza , koja sad vie ne
odreuje novo stanje na jednoznaan nain, nego
umjesto toga daje skup mogudih novih stanja.
Za NKA iz Primjera 3.4 imamo:
(A,1) = {A}, (B,) = {A,C}, (D,0) = ,
i tako dalje.

TR-I

Regularni jezici

44

22

23.3.2011

3.6 Ponovo Kleene-ov teorem (1)


Unato svojoj ivopisnosti, nedeterminizam zapravo ne
daje nikakav doprinos raunalnoj snazi KA. Naime:
Teorem 3.1 (Kleene). Za odabrani jezik L sljedede tri
tvrdnje su ekvivalentne:
1. Postoji DKA koji prepoznaje L,
2. Postoji NKA koji prepoznaje L,
3. Postoji RI koji opisuje L.

Dokaz teorema moe se svesti na etiri implikacije:


(3) (2) (1) (2) (3) .
Implikacija (1) (2) je trivijalna. Za ostale tri izloit
demo skice konstruktivnih dokaza (konverzije).
Opirni dokaz teorema moe se nadi u knjizi Sipser,
Poglavlja 1.2 i 1.3. Obavezno prouiti za pristupni ispit!
TR-I

Regularni jezici

45

3.6 Ponovo Kleene-ov teorem (2)


Primijetimo da pojam prepoznavanje jezika donekle
razlikuje (u praktinom smislu) za sluaj DKA odn NKA.
Kod DKA prepoznavanje znai da de simulirani DKA za svaku
ulaznu rije nakon konano mnogo koraka eksplicitno
odgovoriti da li on prihvada tu rije ili je odbija.
Kod NKA prepoznavanje opet znai da de simulirani NKA rije
iz jezika prihvatiti nakon konano mnogo koraka. No odbijanje
rijei koja nije u jeziku definirano je na implicitan
(nekonstruktivan) nain, pa se ne moe stvarno simulirati
(moglo bi trajati beskonano dugo).

Ova razlika nije toliko bitna kod KA no postat de puno


vanija na primjer kod Turingovih strojeva. Tamo demo
uz pojam prepoznavanje jezika koristiti i dodatni
pojam: odluivanje jezika.
TR-I

Regularni jezici

46

23

23.3.2011

3.7 Konverzija RI u NKA (1)


U skladu s rekurzivnom definicijom RI sa slajda 26, naa
konstrukcija NKA na osnovu RI takoer je rekurzivna.
Opdi tijek konverzije RI u NKA ugrubo ide ovako.
Ako je RI prazan niz znakova, ili je samo , ili je samo jedan
znak iz alfabeta, tada stvori odgovarajudi jednostavni NKA.
Ako je RI unija oblika R S. tada kombiniraj NKA-e za R i S.
Ako je RI konkatenacija oblika RS, kombiniraj NKA-e za R i S.
Ako je RI rezultat operacije zvjezdica oblika R*, tada
nadogradi NKA za R.

U nastavku demo redom opisati kako izgledaju


odgovarajudi jednostavni NKA-i te kako da se naprave
traene kombinacije i nadogradnje.
TR-I

Regularni jezici

47

3.7 Konverzija RI u NKA (2)


Za RI koji je prazan jezik, ili je samo , ili je samo
jedan znak c iz alfabeta, treba odabrati jedan od
sljededa tri automata.

TR-I

Regularni jezici

48

24

23.3.2011

3.7 Konverzija RI u NKA (3)


Neka je MR NKA za R i MS NKA za S. Tada se NKA za
R S konstruira ovako. Stvorimo novo polazno
stanje s -prijelazima prema polaznim stanjima od
MR i MS . Automat pogaa da li je ulazna rije u R ili
u S.

TR-I

Regularni jezici

49

3.7 Konverzija RI u NKA (4)


Neka je MR NKA za R i MS NKA za S. Konstrukcija NKA
za RS izgleda ovako. Stavimo -prijelaze iz svih
prihvadajudih stanja u MR prema polaznom stanju u
MS . Nakon toga prihvadajuda stanja u MR pretvorimo
u odbacujuda.

TR-I

Regularni jezici

50

25

23.3.2011

3.7 Konverzija RI u NKA (5)


Neka je MR NKA za R. Tada se NKA za R* moe
konstruirati na sljededi nain. Dodamo novo polazno
stanje koje de biti jedino prihvadajude stanje.
Stavljamo -prijelaz iz tog novog stanja prema
polaznom stanju od MR. Stavljamo -prijelaze iz svih
prihvadajudih stanja od MR prema novom polaznom
stanju. Nakon toga sva prihvadajuda stanja u MR
pretvorimo u odbacujuda.

TR-I

Regularni jezici

51

3.7 Konverzija RI u NKA (6)


Primjer 3.6. Prethodni algoritam konverzije RI u
NKA primjenjujemo na RI
0 10* .
Najprije stvaramo NKA-e za 0, 1 i 0*, zatim
kombiniramo zadnja dva i konano spojimo
dijelove.

TR-I

Regularni jezici

52

26

23.3.2011

3.8 Konverzija NKA u DKA (1)


Pratimo nain rada zadanog NKA. U svakom koraku
obrade zadane rijei pratimo skup stanja u kojima bi
se NKA mogao nalaziti. Skup stanja u jednom koraku
moe se odrediti ako ved znamo skup stanja u
prethodnom koraku.
Primjer 3.7. Promatramo ponaanje NKA iz Primjera
3.1 na ulaznoj rijei 10100.
Automat je na poetku u stanju A. Nakon itanja znaka 1 on
moe biti u stanju A ili C.
to se desi kad se uita 0? Ako je automat bio u stanju A, on
moe odabrati da ode u stanje A ili B. No ako je bio u C, on
umire. Dakle, nakon drugog znaka skup mogudih stanja je
{A,B}.
TR-I

Regularni jezici

53

3.8 Konverzija NKA u DKA (2)


Prilikom itanja tredeg znaka, ako je automat bio u stanju A
on odlazi u {A,C}, no ako je bio u B on umire.
Daljnjom simulacijom rada automata dobivamo itav niz
skupova stanja koji izgleda ovako:
{A} 1 {A,C} 0 {A,B} 1 {A,C} 0 {A,B} 0 {A,B,D} .
Da li automat prihvada rije 10100 ? Da, on se nakon itanja
zadnjeg znaka moe nalaziti u prihvadajudem stanju D.

Konverzija NKA u DKA zasniva se na tome da za zadani


NKA napravimo DKA ija stanja odgovaraju skupovima
stanja polaznog NKA. Ako NKA ima k stanja, tada DKA
ima najvie 2k stanja to je velik no ipak konaan broj.
Konverzija NKA (za sada bez -prijelaza) u DKA moe se
ovako saeti.
TR-I

Regularni jezici

54

27

23.3.2011

3.8 Konverzija NKA u DKA (3)


1. Oblikujemo skup stanja za DKA, tako da svako stanje od DKA
odgovara jednom mogudem skupu stanja od NKA.
2. Poetno stanje u DKA je {q0}, gdje je q0 polazno stanje u
NKA.
3. Dok god nekom stanju u DKA nedostaje prijelaz za neki znak:
izraunaj prijelaz na nain kao u prethodnom primjeru.
4. U DKA proglasi prihvadajudim stanjem svaki skup koji sadri
bar jedno originalno prihvadajude stanje iz NKA.

Opisani algoritam stvorit de veliki DKA u kojem su


mnoga stanja nepotrebna zato to se odgovarajudi
skup stanja ne moe pojaviti u NKA. Ta nepotrebna
stanja prepoznaju se kao vorovi na dijagramu od DKA
do kojih nema usmjerenog puta od poetnog vora.
TR-I

Regularni jezici

55

3.8 Konverzija NKA u DKA (4)


Nedostupne vorove lako moemo otkriti nekim od
algoritama za traenje putova u usmjerenom grafu,
na primjer breadth-first search. Izbacivanjem takvih
vorova DKA de se znatno pojednostaviti.
Primjer 3.8. DKA na
sljededoj slici dobiven je
primjenom prethodnog
algoritma na NKA iz
Primjera 3.1.
Nemogudi skupovi stanja
(nedostupni vorovi) ved
su uklonjeni.
TR-I

Regularni jezici

56

28

23.3.2011

3.8 Konverzija NKA u DKA (5)


Prethodni algoritam radi korektno samo ako na
polaznom NKA nema -prijelaza. U sluaju -prijelaza
postupak je malo kompliciraniji.
Konverzija NKA (s -prijelazima) u DKA ide ovako.
Napravi isto kao u prethodnom algoritmu, ali uz sljedede
modifikcije:
1. Poetno stanje u DKA je stanje koje odgovara skupu u
kojem je poetno stanje q0 iz NKA i sva stanja dostupna
iz q0 preko -prijelaza u NKA.
2. Kad raunamo stanja dostupna iz nekog zadanog stanja,
dodajemo i stanja koja su dostupna preko -prijelaza
nakon ciljnog stanja.
TR-I

Regularni jezici

57

3.8 Konverzija NKA u DKA (6)


Primjer 3.9. Sljededa
slika prikazuje rezultat
primjene modificiranog
algoritma konverzije na
NKA iz Primjera 3.4.
Poetno stanje u DKA
sastoji se od B i od dva
stanja A i C koje
moemo dosegnuti prijelazima iz A. Dakle
poetno stanje u DKA
je {A,B,C}.
TR-I

Regularni jezici

58

29

23.3.2011

3.8 Konverzija NKA u RI (1)


Za potrebe konverzije promatramo jo opdenitiju vrstu
automata, a to je generalizirani konani automat
GKA. Rije je o NKA gdje je svaki prijelaz zadan
regularnim izrazom, a ne znakom. Obini NKA moe
se smatrati specijalnim sluajem GKA.
Da bi konverzija bila jednostavnija, pretpostavit demo
da polazni NKA ima dodatna svojstva:
Postoji samo jedno prihvadajude stanje.
Ne postoji prijelaz iz prihvadajudeg stanja.
Ne postoji prijelaz u polazno stanje (ak ni petlja).

Proizvoljni NKA moe se lako svesti na ovakav oblik


uvoenjem dodatnih stanja i -prijelaza (provjerite
sami za vjebu!)
TR-I

Regularni jezici

59

3.8 Konverzija NKA u RI (2)


Postupak konverzije dalje se svodi na postepeno
transformiranje GKA. U svakom koraku jedno stanje
(koje nije ni polazno ni prihvadajude) uklanja se i GKA.
Uklonjeno stanje i njegovi prijelazi zamjenjuju se
prijelazima koji imaju isti uinak.
Na primjer, ako imamo prijelaz a iz stanja A u stanje B,
prijelaz B iz stanja B u stanje B, te prijelaz C iz stanja B
u stanje C, isti uinak moemo postidi prijelazom ab*c
iz A u C.

TR-I

Regularni jezici

60

30

23.3.2011

3.8 Konverzija NKA u RI (3)


Ako dva prijelaza povezuju isti par stanja, tada se oni
mogu spojiti u jedan prijelaz pomodu operacije unije.
Postupak zavrava onda kad u GKA ostanu samo dva
stanja: poetno i prihvadajude. Oznaka na jedinom
prijelazu izmeu ta dva stanja predstavlja RI koji
odgovara polaznom NKA.
Konverzija NKA u RI moe se ovako saeti.
1. Svedi zadani NKA u traeni oblik (nema prijelaza u poetno
stanje, nema prijelaza iz jedinstvenog prihvadajudeg stanja).
2. Dok postoji vie od dva stanja radi:
Izbaci jedno stanje i nadomjesti ga odgovarajudim
prijelazima.
3. Proitaj RI koji pie na jedinom preostalom prijelazu.
TR-I

Regularni jezici

61

3.8 Konverzija NKA u RI (4)


Primjer 3.10. Konverziju NKA u RI ilustrirat demo na
NKA iz Primjera 3.3. Nakon to se taj NKA svede u
traeni oblik sa samo jednim prihvadajudim stanjem
on izgleda ovako.

TR-I

Regularni jezici

62

31

23.3.2011

3.8 Konverzija NKA u RI (5)


Izbacivanjem
stanja X
dobivamo:

Dalje
izbacujemo
stanje Z pa
dobivamo:
TR-I

Regularni jezici

63

3.8 Konverzija NKA u RI (6)


Na kraju izbacujemo stanje Y pa nam ostaje:

Lako se uvjeriti da je dobiveni RI


aa* a(ba)*b
ekvivalentan onome kojeg smo naveli u
Primjeru 3.3, a to je
a* (ab)*
TR-I

Regularni jezici

64

32

23.3.2011

Sadraj dijela I
1. Konani automati
2. Regularni izrazi
3. Nedeterminizam
4. Svojstva regularnih jezika
5. Primjene konanih automata

TR-I

Regularni jezici

65

4.0 Zato prouavamo svojstva


Raunalna snaga konanih automata prilino je
ograniena. Njihova mogudnost rjeavanja problema
svodi se na prepoznavanje regularnih jezika.
Regularni jezici su najjednostavnija vrsta jezika.
Golema vedina jezika nije regularna.
U ovom poglavlju uoit demo neka svojstva regularnih
jezika. Ta svojstva su nam zanimljiva zato jer ona
omoguduju da prepoznamo jezike koji nisu regularni i
ne mogu se obraivati konanim automatima.
Najvanija svojstva regularnih jezika su: zatvorenost
na razne skupovne operacije, svojstva vezana uz
takozvane razluive rijei, te uvena lema o
pumpanju.
TR-I
Regularni jezici
66

33

23.3.2011

4.1 Svojstva zatvorenosti (1)


Skup je zatvoren s obzirom na neku operaciju ako
primjena te operacije na bilo koje elemente iz skupa
opet daje elemente iz tog istog skupa.
Teorem 4.1. Skup regularnih jezika je zatvoren s
obzirom na regularne operacije (unija,
konkatenacija, zvjezdica).
Dakle, ako su L1 i L2 regularni jezici, tada su L1 L2,
L1 L2 i L1* takoer regularni jezici.
Dokaz teorema. Sluimo se regularnim izrazima. RI-i
za L1 i L2 mogu se na oigledan nain kombinirati
tako da tvore RI-e za kombinirane jezike. Na primjer,
RI za L1L2 dobije se lijepljenjem RI-a za L1 i RI-a za L2.
I tako dalje.
TR-I
Regularni jezici

67

4.1 Svojstva zatvorenosti (2)


Teorem 4.2. Skup regularnih jezika je zatvoren na
komplementiranje i s obzirom na presjek.
Dakle, ako je L regularan jezik, tada je regularan i
jezik LC koji se sastoji od svih rijei nad istim
alfabetom koje nisu u L.

Takoer, ako su L1 i L2 regularni jezici, tada je


regularan i jezik L1 L2 koji se sastoji od rijei koje
su zajednike za L1 i L2.

TR-I

Regularni jezici

68

34

23.3.2011

4.1 Svojstva zatvorenosti (3)


Dokaz teorema. Ako je L regularan, tada postoji
DKA koji ga prepoznaje. Promijenimo taj automat
tako da prihvadajuda stanja postanu odbacujuda i
obratno. Dobili smo DKA za LC.
Prema DeMorganovim pravilima, za presjek dvaju
jezika vrijedi:
L1 L2 = (L1C L2C)C
Ako su L1 i L2 regularni, tada zbog zatvorenosti
regularnih jezika na uniju i komplementiranje i
desna strana u gornjoj formuli mora biti regularna.
TR-I

Regularni jezici

69

4.2 Produktni konani automati (1)


Tvrdnja o zatvorenosti regularnih jezika na presjek
moe se i drukije dokazati tako da eksplicitno
konstruiramo odgovarajudi KA. Neka su zadani DKA-i
za jezike L1 i L2 . Konstruiramo takozvani produktni
automat koji prepoznaje L1 L2 .
Ideja produktnog automata je da on simulira
istovremeni rad dvaju jednostavnijih automata.
Njegova stanja su ureeni parovi stanja iz
jednostavnijih automata, poetno stanje je par
poetnih stanja, prihvadajuda stanja su parovi
prihvadajudih stanja.
TR-I

Regularni jezici

70

35

23.3.2011

4.2 Produktni konani automati (2)


Primjer 4.1. Neka je L1 skup rijei s parnim brojem
nula, a L2 skup rijei s parnim brojem jedinica. Tada
oba odgovarajuda KA imaju po dva stanja:

TR-I

Regularni jezici

71

4.2 Produktni konani automati (3)


Produktni KA koji prepoznaje presjek L1 L2 ima
etiri stanja:

TR-I

Regularni jezici

72

36

23.3.2011

4.2 Produktni konani automati (4)


Slijedi precizniji opis konstrukcije produktnog
automata.
Neka automat zadan 5-torkom
(Q1, , q1, T1, 1)
prepoznaje jezik L1 .
Neka automat zadan 5-torkom
(Q2, , q2, T2, 2)
prepoznaje jezik L2 .
Tada automat zadan s 5-torkom
(Q1Q2, , (q1,q2), T1T2, )
prepoznaje jezik L1 L2 . Ovdje je
((r,s),x) = (1(r,x), 2(s,x)) .

TR-I

Regularni jezici

73

4.3 Razluive rijei (1)


Prouavanje svojstava regularnih jezika ne bi imalo
nikakvog smisla da ne postoje jezici koji nisu regularni.
Primjer 4.2. Promatramo binarne rijei oblika 0n1n,
dakle nizove od n nula i n jedinica. Definiramo skup
B = { 0n1n | n0 } = { , 01, 0011, 000111, } .
Tada za jezik B ne postoji KA koji ga prepoznaje.
Intuitivni razlog za to je sljededi: da bi prihvatio rije iz
B automat bi morao brojati koliko ima nula a koliko
jedinica. No KA ima fiksiranu memoriju i u njoj se ne
moe pohraniti po volji veliki broj n. U nastavku
poglavlja slijedi strogi dokaz da B nije regularan.
TR-I

Regularni jezici

74

37

23.3.2011

4.3 Razluive rijei (2)


Da bi preciznije mogli izraziti ogranienja KA, uvodimo
pojam razluive rijei. Kaemo da su dvije rijei x i y
nerazluive u odnosu na jezik L ako za svaku rije z
vrijedi: xz L ako i samo ako yz L.
Inae su rijei razluive. Dakle, x i y razluive s obzirom
na L ako postoji sufiks z takav da xz L i yz L, ili
obratno.
Teorem 4.3. Neka je M deterministiki konani
automat koji prepoznaje jezik L. Neka su x i y
razluive rijei s obzirom na L. Tada M mora biti u
razliitim stanjima nakon uitavanja x odnosno y.
TR-I

Regularni jezici

75

4.3 Razluive rijei (3)


Dokaz teorema. Pretpostavimo suprotno, da rijei x i y
postavljaju M u isto stanje. Tada za bilo koju rije z
rijei xz i yz takoer stavljaju M u isto stanje. No
bududi da su x i y razluive, mogli bi odabrati z takav da
xz postavlja M u prihvadajude a yz u odbacujude stanje
ili obratno. Dakle, doli smo do kontradikcije.
Skup rijei zove se razluiv po parovima ako je svaki
par rijei iz tog skupa razluiv. Iz teorema slijedi:
Korolar. Neka je DL skup rijei razluiv po parovima u
odnosu na jezik L. Tada bilo koji DKA za L ima barem
|DL| stanja. Posebno, ako je DL beskonaan, tada L
nije regularan.
TR-I

Regularni jezici

76

38

23.3.2011

4.3 Razluive rijei (4)


Primjer 4.2 (nastavak). Opet gledamo jezik
B = { 0n1n | n0 } .
Tvrdimo da je skup
DB = {0j | j 0 }
razluiv po parovima u odnosu na B. Zaista, uzmimo
bilo koje dvije rijei iz je DB na primjer 0j i 0j, za j j.
Tada dodajudi sufiks 1j prvoj rijei dobivamo rije iz B,
dok druga rije s istim sufiksom nije u B. Dakle 0j i 0j
su razluive. Bududi da je je DB beskonaan, B po
prethodnom korolaru ne moe biti regularan.

TR-I

Regularni jezici

77

4.3 Razluive rijei (5)


Primjer 4.3. Promatramo opet jezik iz Primjera 4.1.
koji se sastoji od rijei koje istovremeno imaju parni
broj i nula i jedinica. U odnosu na taj jezik skup
{ , 0, 1, 01 }
je razluiv po parovima. To znai da DKA iz Primjera
4.1 ima najmanji mogudi broj stanja.
Moe se pokazati da vrijedi i obrat prethodnog
korolara. Dakle, ako je jezik neregularan, tada za njega
postoji beskonaan skup rijei razluivih po parovima.
To je dio takozvanog Myhill-Nerode-ovog teorema.
Usput budi reeno, konaan jezik mora biti regularan.
Zato su neregularni jezici uvijek beskonani.
TR-I

Regularni jezici

78

39

23.3.2011

4.4 Lema o pumpanju (1)


Lema o pumpanju kae da svaki regularni jezik ima u
sebi neku vrst ponovljivosti. Sluimo se ovakvom
notacijom. Za rije v, oznaka |v| predstavlja duljinu
od v, a na primjer v3 oznaava konkatenaciju od 3
primjerka od v, i tako dalje.
Teorem 4.4 (lema o pumpanju). Neka je A regularni
jezik kojeg prepoznaje neki DKA s k stanja. Tada se
bilo koja rije z iz A s barem k znakova moe razbiti
na konkatenaciju oblika z =uvw, gdje je:
v neprazna,
|uv| k,
uviw je u A za sve i 0 .
TR-I

Regularni jezici

79

4.4 Lema o pumpanju (2)


Dokaz leme o pumpanju. Za ulaznu rije z pratimo
niz stanja kroz koje DKA prolazi. S obzirom da u tom
nizu ima barem k prijelaza, mora postojati stanje
koje se ponavlja. Neka je q prvo stanje koje se
ponovilo. Razbijemo z na sljededi nain:
Rije u je dio do prve posjete stanju q.
Rije v je dio izmeu prve i druge posjete.
Rije w je ostatak ulaza.

TR-I

Regularni jezici

80

40

23.3.2011

4.4 Lema o pumpanju (3)


Vidimo da je DKA u istom stanju q bez obzira da li je
uitao u, uv, uv2, i tako dalje (to je deterministiki
automat). To znai da DKA stie u isto zavrno
(prihvadajude) stanje r bez obzira da li je proitao uw,
uvw, uv2w, i tako dalje. Dakle rije uviw je u A za
sve i 0.
Lema o pumpanju moe se i ovako izredi:
Neka je A regularni jezik. Tada postoji k > 0 takav da
se bilo koja rije z s barem k znakova moe razbiti na
konkatenaciju oblika z =uvw, gdje je:
v neprazna,
|uv| k,
uviw je u A za sve i 0 .
TR-I

Regularni jezici

81

4.4 Lema o pumpanju (4)


Lema o pumpanju ne slui zato da bi pokazala da je
neki jezik regularan, ved obratno, da bi pokazala da
neki jezik nije regularan. im u jeziku L pronaemo
rije z koja kri lemu, dokazali smo da L nije regularan.
Primjer 4.4. Promatramo opet jezik
B = { 0n1n | n0 }
iz Primjera 4.2. Pretpostavimo da je B regularan. Tada
bi se B mogao prepoznati pomodi nekog DKA s k
stanja. Promatramo rije z = 0k1k koja je u B.
Razbijamo B u skladu s lemom na z = uvw. Tada zbog
|uv| k slijedi da je v sastavljen iskljuivo od nula. No
tada uw nije u B jer ima manje nula od jedinica. To je
u kontradikciji s lemom.
TR-I
Regularni jezici
82

41

23.3.2011

4.4 Lema o pumpanju (5)


Primjer 4.5. Palindrom je rije koja izgleda isto kad
se ita u jednom ili drugom smjeru, na primjer
ana ili level. Neka je P skup palindroma nad
alfabetom {a, b}. Tada je P neregularan jezik.
Evo dokaza: pretpostavimo da je P regularan. Tada
se on moe prepoznati pomodu nekog DKA s recimo
k stanja. Promatramo rije z = akbak koja je u P.
Razbijemo z =uvw prema lemi. Tada, bududi je |uv|
k, slijedi da je v uvijek niz samih a-ova. Oito da ni
jedna od rijei uw, uv2w, i tako dalje, nije u P. To
je u kontradikciji s lemom.
TR-I

Regularni jezici

83

Sadraj dijela I
1. Konani automati
2. Regularni izrazi
3. Nedeterminizam
4. Svojstva regularnih jezika
5. Primjene konanih automata

TR-I

Regularni jezici

84

42

23.3.2011

5.0 Uvod u primjene KA


U prethodnim poglavljima dotakli smo neto teorije o
KA i njima povezanim regularnim jezicima odnosno RI.
U ovom poglavlju pokazat demo da KA i RI nisu
zanimljivi samo u teorijskom smislu. Postoje naime i
konkretni problemi koji se elegantno mogu opisati RIima te efikasno rijeiti primjenom KA.
KA koji se pojavljuju u primjenama obino su neto
kompliciraniji, na primjer oni mogu itati vie ulaznih
znakova odjednom ili mogu izvravati neke akcije.
U nastavku demo promatrati tri podruja primjene KA:
obrada teksta,
modeliranje ponaanja objekata,
leksika analiza.
TR-I

Regularni jezici

85

5.1 Obrada teksta (1)


Standardni problem koji se pojavljuje u obradi teksta
je pronalaenje svih pojava kratke rijei (obrasca) u
dugakoj rijei (tekst).
Na primjer, ako je obrazac ana, a tekst bananaramas
ana, tada postoje tri pojavljivanja obrasca u tekstu.
Osim to se pojavljuje u tekst-editorima, ovaj problem
se susrede i u biologiji: tekst predstavlja molekulu DNK
a obrazac neki gen koji traimo.
Naivni algoritam traenja obrasca u tekstu promatrao
bi svako slovo u tekstu kao mogudi poetak obrasca i
troio bi vrijeme proporcionalno umnoku dviju
duljina.
TR-I

Regularni jezici

86

43

23.3.2011

5.1 Obrada teksta (2)


Bolji algoritam dobiva se pomodu DKA koji prepoznaje
sve rijei koje zavravaju sa zadanim obrascem. Tada se
svaki znak teksta ita samo jednom, pa je vrijeme
proporcionalno duljini teksta. Ova ideja ini osnovu
poznatog algoritma Knuth Morris Pratt.
Primjer 5.1. elimo u nekom binarnom tekstu pronadi
sve pojave obrasca 1001. Konstruiramo sljededi DKA
koji prepoznaje sve rijei sa zavretkom 1001.

TR-I

Regularni jezici

87

5.1 Obrada teksta (3)


Ubacujemo tekst u DKA znak po znak. Kad god se
dosegne prihvadajude stanje q4, tekuda pozicija u
tekstu se ispisuje, pa se postupak nastavlja. Kad
doemo do kraja teksta, znat demo sva mjesta
pojavljivanja obrasca.
Problem traenja obrasca u tekstu moe se poopditi
tako da umjesto fiksirane kratke rijei zadamo RI
kao obrazac. Tada u tekstu treba pronadi sva mjesta
gdje se kao pod-rije pojavljuje neka rije iz jezika
kojeg odreuje RI.

TR-I

Regularni jezici

88

44

23.3.2011

5.1 Obrada teksta (4)


Na primjer, editor teksta vi u UNIX-u dozvoljava
korisniku zadavanje ovakvog RI kao kriterija za
pretraivanje:
aa*(b c)
Uz ovaj kriterij vi u tekstu trai bilo koji podniz
znakova s jednim ili vie a-ova na poetku i b-om ili com na kraju, na primjer:
ab, ac, aab, aac, aaab, aaac, .
Opdenitiji problem traenja obrasca u tekstu opet se
moe rijeiti pomodu KA, slino kao u Primjeru 5.1.
No sada moramo koristiti sloeniji DKA koji
prepoznaje jezik zadan RI-om.
TR-I

Regularni jezici

89

5.2 Modeliranje ponaanja objekta (1)


U softverskim sustavima esto se pojavljuju objekti
sa sloenim ponaanjem. Takav objekt se u svakom
trenutku nalazi u jednom od nekoliko stanja. Prijelaz
objekta iz jednog stanja u drugo potaknut je nekim
dogaajem u okolini objekta. Prilikom ulaska u novo
stanje, objekt obino obavlja ili pone obavljati neku
akciju.
Ponaanje objekta modelira se pomodu aktivnog KA
(finite-state machine). Rije je o donekle poopdenoj
vrsti DKA, gdje automat umjesto na slova iz alfabeta
reagira na dogaaje, te prilikom ulaska u stanje izvodi
akcije.
TR-I

Regularni jezici

90

45

23.3.2011

5.2 Modeliranje ponaanja objekta (2)


Aktivni KA prikazuje se dijagramom slino kao obini
DKA. Na lukovima su zapisani dogaaji, a u vorovima
piu akcije.
Primjer 5.2. Sljededi aktivni KA prikazuje ponaanje
jednosmjerne komunikacijske veze koja za potrebe
neke aplikacije alje poruke preko mree.

TR-I

Regularni jezici

91

5.2 Modeliranje ponaanja objekta (3)


Primjer 5.3. Sljededi aktivni KA
opisuje ponaanje virtualnog junaka
iz raunalne igre.

TR-I

Regularni jezici

92

46

23.3.2011

5.3 Leksika analiza (1)


Prvi korak u prevoenju programa pisanog u nekom
viem programskom jeziku naziva se leksika analiza.
To je proces kojim se izdvajaju kljune rijei,
identifikatori, operatori, operandi, , a eliminiraju
komentari.
Ulaz za leksiki analizator je izvorni tekst programa, a
izlaz je niz manjih rijei zvanih tokeni.
Strogo govoredi, token je kategorija kao na primjer
identifikator ili operator usporeivanja.
Konkretan primjerak tokena zove se leksem. Kljune
rijei u programskom jeziku su tokeni koji slue da
razdvajaju druge tokene.
TR-I

Regularni jezici

93

5.3 Leksika analiza (2)


Primjer 5.4. Za sljededi komad izvornog teksta
programa u Pascalu:
for i := 1 to max do
x[i] := 0;
leksiki analizator proizvodi sljededi niz tokena:

TR-I

Regularni jezici

94

47

23.3.2011

5.3 Leksika analiza (3)


Dananji programski jezici su sloeni i ne spadaju u
regularne jezike. Zato se leksika analiza ne moe u
potpunosti provoditi alatima i modelima koje smo
dosad prouavali. Ipak, neki aspekti programskog
jezika, na primjer sintaksa pojedinog tokena, mogu
se opisati RI-ima. Na primjer:
U poglavlju 2 vidjeli smo RI koji opisuje grau cijelog
broja.
Kljuna rije then opisana je trivijalnim RI-om then.
Identifikator moe imati oblik u skladu sa sljededim RI:
(A B Z a b z)
(A B Z a b z 0 1 9)*
dakle on poinje slovom a dalje slijede slova ili znamenke.
TR-I

Regularni jezici

95

5.3 Leksika analiza (4)


Rad leksikog analizatora treba zamiljati kao itanje
izvornog teksta programa i simultano prepoznavanje
tokena. Makar je poeljno da se itanje obavlja u
jednom prolasku, u stvarnosti je obino potrebna
neka vrsta backtrackinga.
Prepoznavanje tokena (ili tonije leksema) opisanog
zadanim RI-om svodi se na primjenu odgovarajudeg
KA-a. Zapravo je rije o aktivnom KA koji u sluaju
kad prepozna token obavlja i neku akciju, na primjer:
Za cijeli broj rauna njegovu vrijednost,
Za identifikator upisuje podatke u tablicu simbola.
TR-I

Regularni jezici

96

48

23.3.2011

5.3 Leksika analiza (5)


U UNIX-u postoji alat koji se zove Lex. To je
program koji automatski proizvodi leksiki
analizator sa traenim svojstvima.
Korisnik daje definicije tokena i akcije koje pojedini
token treba pokrenuti.
Na osnovu tih definicija Lex generira kod u C-u za
odgovarajudi analizator.
Nakon prevoenja C koda analizator je spreman za rad.
Na taj nain mogude je brzo isprobavati dizajn za neki
novi jezik i popraviti eventualne greke u tom dizajnu.

TR-I

Regularni jezici

97

49

You might also like