You are on page 1of 91

Poglavlje 3.

Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

59

Predavanje 06

3.7

Ekvivalentnost konacnih automata i regularnih izrazaKleeneov teorem

Do sada smo tretirali odnos izmedu konacnih automata i regularnih izraza samo intuitivno. Naime, prethodno smo imali neke primjere koji ilustriraju da se u odredenim
situacijama relativno jednostavno mogu izgraditi nedeterministicki konacni automati
koji prihvacaju jezike koji su zadani nekim regularnim izrazom. U ovom odjeljku
c emo Kleenovim teoremom formalizirati odnos izmedu konacnih automata i regularnih izraza. Na ovom mjestu c emo prvo pokazati da se za bilo koji regularni izraz r
moze izgraditi -NKA M tako da vrijedi L(M) = L(r).

3.7.1

Konstrukcija -NKA za zadani regularni izraz

Teorem 3.3. Za svaki regularni izraz r koji opisuje jezik L(r) nad nekim alfabetom
moguce je konstruirati -NKA M tako da vrijedi L(M) = L(r).
Dokaz. Prvo c emo opisati postupke konstrukcije -NKA koji prihvacaju jezike opisane
elementarnim regularnim izrazima , i a , a nakon toga slijedi opis postupaka
konstrukcije -NKA koji prihvacaju jezike opisane regularne izraze r1 + r2 , r1 r2 i r1 .

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

60

Postupak (1): Za regularni izraz koji definira jezik L() = konstruiramo -NKA
M:
M = ({q0 , q1 }, , , q0 , {q1 }),
gdje je (q, b) = za svaki q {q0 , q1 } i b ( {}). Dijagram stanja konstruiranog
-NKA M je prikazan na slici 3.13. Pocetno stanje je q0 , a prihvatljivo stanje je q1 .
Za bilo koji simbol b ( {}), skup (q0 , b) je prazan skup, pa ne postoji niti jedan
slijed prijelaza iz pocetnog stanja q0 u prihvatljivo stanje q1 . Prema tome, -NKA M
stavise, -NKA M ne prihvaca niti praznu rijec
ne prihvaca niti jedan niz sibola. Cak
, jer je pocetno stanje q0 neprihvatljivo.

q0

q1

(a) -NKA koji prihvaca jezik L() =

q0

q1

(b) -NKA koji prihvaca jezik L() = {}

q0

q1

(c) -NKA koji prihvaca jezik L(a) = {a}

Slika 3.13: -NKA za elementarne regularne izraze

Postupak (2): Za regularni izraz koji definira jezik L() = {} konstruiramo -NKA
M:
M = ({q0 , q1 }, , , q0 , { f }),
gdje je (q0 , ) = {q1 } i (r, b) = za r , q0 ili b , .
Dijagram stanja izgradenog -NKA M je prikazan na slici 3.13b. Pocetno stanje je
q0 , a prihvatljivo stanje je q1 . Prijelaz (q0 , ) = {q1 } omogucuje prihvacanje prazne
rijeci . Za bilo koji simbol a , skup (q0 , a) je prazan skup, pa zakljucujemo da
-NKA M prihvaca iskljucivo praznu rijec .
Postupak (3): Za regularni izraz a, a , koji definira jezik L(a) = {a}, konstruiramo
-NKA M:
M = ({q0 , q1 }, , , q0 , {q1 }),
gdje je (q0 , a) = {q2 } i (r, b) = za r , q0 ili b , a.
Dijagram stanja konstruiranog -NKA M je prikazan na slici 3.13c. Pocetno stanje
je q0 , a prihvatljivo stanje je q1 . Prijelaz (q0 , a) = {q1 } omogucuje prihvacanje rijeci
a, koja sadrzi samo jedan simbol. Za bilo koji b ( {}), za koji vrijedi b , a, skup
(q0 , b) je prazan skup, pa je omogucen prijelaz iz pocetnog stanja q0 u prihvatljivo

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

61

stanje q1 samo za simbol a. Naravno, buduci da i za praznu rijec ne postoji prijelaz


iz pocetnog stanja q0 u prihvatljivo stanje q1 , zakljucujemo da -NKA M ne prihvaca
niti praznu rijec . Osim toga, skup (q1 , b) je prazan za sve simbole b ( {}), pa
zakljucujemo da -NKA M prihvaca iskljucivo niz simbola a.
Postupak (4): U okviru ovog postupka opisujemo nacin konstrukcije -NKA za regularni izraz r1 + r2 , koji definira jezik L(r1 + r2 ) = L(r1 ) L(r2 ). Pretpostavimo da su
prethodno izgradeni -NKA M1 i M2 :
M1 = (Q1 , 1 , 1 , q1 , { f1 })

(3.10a)

M2 = (Q2 , 2 , 2 , q2 , { f2 })

(3.10b)

takvi da vrijedi:
L(M1 ) = L(r1 )

(3.11a)

L(M2 ) = L(r2 )

(3.11b)

Primijetimo da kod oba -NKA skup prihvatljivih stanja sadrzi samo jedno stanje.
Takoder, pretpostavit c emo da iz prihvatljivih stanja f1 i f2 nema prijelaza niti za jedan ulazni simbol. Drugim rijecima, vrijedi 1 ( f1 , a) = , za svako a (1 {}) i
2 ( f2 , b) = , za svako b (2 {}). Nadalje,ukoliko je to potrebno, promjenom
imena stanja mozemo postici da vrijedi Q1 Q2 = . Za regularni izraz r1 + r2 , koji
definira jezik L(r1 + r2 ) = L(r1 ) L(r2 ) konstruiramo novi -NKA M na sljedeci nacin:
M = (Q1 Q2 {q0 , f }, 1 2 , , q0 , { f }),
gdje je funkcija definirana na sljedeci nacin:
(q0 , ) = {q1 , q2 }
(q, a) = 1 (q, a), za svako a (1 {}) i za svako q (Q1 \ { f1 })
(q, b) = 2 (q, b), za svako b (2 {}) i za svako q (Q2 \ { f2 })
( f1 , ) = ( f2 , ) = { f }
Dijagram stanja konstruiranog -NKA M je prikazan na slici 3.14. Stanja automata
M ukljucuju stanja automata M1 i M2 , kao i dva dodatna stanja: novo pocetno stanje
q0 i novo prihvatljivo stanje f . Dakle,stanja q1 i q2 nisu vise pocetna stanja, te stanja f1
i f2 nisu vise prihvatljiva stanja. Prijelazi automata M sadrze sve prijelaze iz automata
M1 i M2 , kao i dodatne -prijelaze iz novog pocetnog stanja q0 u stanja q1 i q2 , te
-prijelaze iz stanja f1 i f2 u novo prihvatljivo stanje f .
Uzmimo npr. da automat M1 prihvaca neku rijec w,w L(M1 ). Tada, automat M
prihvaca tu rijec tako sto prvo primjenimo -prijelaz iz stanja q0 u stanje q1 , a zatim
se izvodi slijed prijelaza kojim automat M1 inace prihvaca rijec w. S druge strane, ako
automat M prihvaca neku rijec w, w L(M), tada je jedna od mogucnosti da slijed
prijelaza ukljucuje -prijelaz iz stanja q0 u stanje q1 i -prijelaz iz stanja f1 u stanje

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

62

M1

q1

f1

q0

M2

q2

f2

Slika 3.14: Konstrukcija -NKA koji prihvaca jezik L(r1 + r2 )

f . Druga mogucnost je da slijed prijelaza ukljucuje -prijelaz iz stanja q0 u stanje q2 i


-prijelaz iz stanja f2 u stanje f . Buduci da vrijedi Q1 Q2 = , slijed prijelaza koji
odgovara rijeci w mora zavrsiti u nekom od prihvatljivih stanja automata M1 ili M2 ,
tj. rijec w mora prihvacati automat M1 ili automat M2 . Prema tome, zakljucujemo da
automat M prihvaca rijec w ako i samo ako rijec w prihvaca automat M1 ili M2 .
Postupak (5): U okviru ovog postupka opisujemo nacin konstrukcije -NKA za regularni izraz r1 r2 , koji definira jezik L(r1 r2 ) = L(r1 )L(r2 ). Pretpostavimo da su prethodno
izgradeni -NKA M1 i M2 :
M1 = (Q1 , 1 , 1 , q1 , F1 )

(3.12a)

M2 = (Q2 , 2 , 2 , q2 , F2 )

(3.12b)

L(M1 ) = L(r1 )

(3.13a)

L(M2 ) = L(r2 )

(3.13b)

takvi da vrijedi:

Primijetimo da kod oba -NKA skup prihvatljivih stanja sadrzi samo jedno stanje.
Takoder, pretpostavit c emo da iz prihvatljivih stanja f1 i f2 nema prijelaza niti za jedan ulazni simbol. Drugim rijecima, vrijedi 1 ( f1 , a) = , za svako a (1 {}) i
2 ( f2 , b) = , za svako b (2 {}). Nadalje, ukoliko je to potrebno, promjenom
imena stanja mozemo postici da vrijedi Q1 Q2 = . Za regularni izraz r1 r2 koji
definira jezik L(r1 r2 ) = L(r1 )L(r2 ) konstruiramo -NKA M na sljedeci nacin:
M = (Q1 Q2 , 1 2 , , q1 , { f2 }),
gdje je funkcija prijelaza definirana na sljedeci nacin:
(q, a) = 1 (q, a), za svako a (1 {}) i za svako q (Q1 \ { f1 })

63

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

(q, b) = 2 (q, b), za svako b (2 {}) i za svako q Q2


( f1 , ) = {q2 }
Dijagram stanja konstruiranog -NKA M je prikazan na slici 3.15. Dakle, nije
potrebno dodavati nova stanja onima vec prisutnim u automatima M1 i M2 . Pocetno
stanje automata M je stanje q1 , tj. pocetno stanje automata M1 . Prihvatljivo stanje
automata M je prihvatljivo stanje automata M2 . Dakle, stanje q2 nije vise pocetno
stanje, a stanje f1 nije vise prihvatljivo stanje. Prijelazi automata M ukljucuju sve
prijelaze automata M1 i M2 , kao i novi -prijelaz od stanja f1 do stanja stanja q2 .
M1

q1

M2

f1

q2

f2

Slika 3.15: Konstrukcija -NKA M koji prihvaca jezik L(r1 r2 )

Pretpostavimo da za neku rijec w vrijedi w L(M1 )L(M2 ). Tada, rijec w mozemo


prikazati kao rijec w = w1 w2 koja nastaje nadovezivanjem rijeci w1 koju prihvaca automat M1 (w1 L(M1 )) i rijeci w2 koju prihvaca automat automat M2 (w2 L(M2 )). U
tom slucaju, automat M moze obraditi rijec w slijedom prijelaza od stanja q1 do stanja
f1 koristeci praznu rijec i simbole rijeci w1 , zatim primjenom -prijelaza od stanja f1
do stanja q2 , te na kraju obrade primjenom slijeda prijelaza od stanja q2 do stanja f2 , koristeci praznu rijec i simbole iz rijeci w2 . Prema tome, ako vrijedi w L(M1 )L(M2 ),
zakljucujemo da isto tako vrijedi w L(M)). S druge strane, ako automata M prihvaca
neku rijec w, w L(M), tada u odredenom trenutku procesa izracunavanja, automat
M mora primijeniti -prijelaz od stanja f1 do stanja q2 . Ako sa w1 oznacimo prefiks
rijeci w koji predstavlja niz simbola koji su konzumirani to tog trenutka primjene prijelaza, tada automat M1 mora prihvacati rijec w1 . Imajuci u vidu da nakon primjene
-prijelaza, slijed prijelaza moze ukljucivati samo one prijelaze koji pripadaju automatu
M2 , te imajuci u vidu da slijed prijelaza za taj preostali niz simbola kojeg c emo oznaciti
sa w2 , odgovara slijedu prijelaza od stanja q2 do prihvatljivog stanja f2 , zakljucujemo
da automat M2 mora prihvacati preostali dio simbola w2 , koji predstavlja sufiks rijeci
w. Prema tome, ako automat M prihvaca neku rijec w, w L(M), tada isto tako vrijedi
da automat M1 prihvaca rijec w1 , a automat M2 prihvaca rijec w2 . Drugim rijecima, ako
automat M prihvaca neku rijec w = w1 w2 , tada vrijedi w L(M1 )L(M2 ). Na temelju
prethodno recenog zakljucujemo da automat M prihvaca neku rijec w, w L(M), ako
i samo ako vrijedi w L(M1 )L(M2 ).
Postupak (6): U okviru ovog postupka opisujemo nacin konstrukcije -NKA za regularni izraz r1 , koji definira jezik L(r1 ) = L(r1 ) . Pretpostavimo da je prethodno
konstruiran -NKA M1 :
M1 = (Q1 , 1 , 1 , q1 , { f1 })

(3.14a)

64

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

za koji vrijedi
L(M1 ) = L(r1 )

(3.15a)

Pretpostavljamo da skup prihvatljivih stanja -NKA M1 sadrzi samo jedno stanje.


Takoder, pretpostavit c emo da iz prihvatljivog stanja f1 nema prijelaza niti za jedan
ulazni simbol, tj. vrijedi 1 ( f1 , a) = , za svako a (1 {}). Za regularni izraz r1
koji definira jezik L(r1 ) = L(r1 ) konstruiramo -NKA M = (Q, , , q0 , F) na sljedeci
nacin:
M = (Q1 {q0 , f }, 1 , , q0 , { f1 }),
gdje je funkcija prijelaza definirana na sljedeci nacin:
(q0 , ) = ( f1 , ) = {q1 , f }
(q, a) = 1 (q, a), za svako a (1 {}) i za svako q (Q1 \ { f1 })
Dijagram stanja izgradenog -NKA M koji prihvaca jezik L(M) = L(M1 ) je prikazan na slici 3.16. Skup stanja automata M se sastoji od svih stanja skupa Q1 i dva
dodatna stanja: novog pocetnog stanja q0 i novog prihvatljivog stanja f . Dakle, stanje
q1 nije vise pocetno stanje, a stanje f1 nije vise prihvatljivo stanje. Prijelazi automata
M su svi prijelazi automata M1 , zatim dodatni -prijelazi od stanja q0 do stanja q1 i f ,
kao i dodatni -prijelazi od stanja f1 do stanja q1 i f .

q0

M1

q1

f1

Slika 3.16: Konstrukcija -NKA M koji prihvaca jezik L(M1 )

Sada c emo pokazati da automat M prihvaca neku rijec w ako i samo ako vrijedi
w L(M1 ) .
Prvo c emo indukcijom pokazati da ako vrijedi w L(M1 ) , tada automat M prihvaca rijec w.
Osnovni slucaj. Automat M prihvaca praznu rijec , jer automat iz pocetnog stanja
s primjenom -prijelaza moze preci u prihvatljivo stanje.
Induktivni slucaj. Sada pretpostavimo da vrijedi x L(M1 ) i y L(M1 ).
Razmotrimo proces izracunavanja automata M za rijec w = xy. Nakon obrade rijeci
x, automat M c e preci u prihvatljivo stanje f1 , pa moze primijeniti -prijelaz do stanja

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

65

s1 . Zatim, konzumiranjem simbola rijeci y automat M c e preci u prihvatljivo stanje f1 ,


te na kraju moze iskoristiti -prijelaz do prihvatljivog stanja s. Prema tome, automat M
prihvaca rijec w = xy. Dakle, zakljucujemo da ako vrijedi w L(M1 ) , tada automat
M prihvaca rijec w.
Sada c emo indukcijom pokazati da ako automat M prihvaca neku rijec w, tada
vrijedi w L(M1 ) . Pri prihvacanju neke rijeci w automat M ulazi u stanje f odredeni
broj puta. Upravo c emo iskoristiti taj broj ulazaka automata M u stanje f da bismo
indukcijom dokazali gornju tvrdnju.
Osnovni slucaj. Ako automat M pri obradi neke rijeci w posjeti stanje f samo
jednom, tada vrijedi w = , tj. w L(M1 ) .
Induktivni slucaj. Ako automat M pri obradi neke rijeci u stanje f ude n ili manje
puta, n 1, tada je ta rijec iz skupa L(M1 ) .
Razmotrimo sada rijec w koju automat M prihvaca tako da pri njenoj obradi u stanje
f ulazi n + 1 puta. Neka je x prefiks rijeci w, te neka automat M prihvaca prefiks x
tako da u stanje f ulazi n-ti put. Nadalje, neka je y preostali dio rijeci w, tj. w = xy.
Prema indukcijskoj hipotezi vrijedi x L(M1 ) . Pri obradi rijeci y, automat M prelazi
u stanje q1 koristeci -prijelaz, a zatim konzumiranjem -prijelaza i simbola iz rijeci y
dolazi do stanja f1 , tj. vrijedi y L(M1 ). Iz x L(M1 ) i y L(M1 ) slijedi da za rijec
w = xy vrijedi w L(M1 ) . Dakle, zakljucujemo da ako automat M prihvaca neku rijec
w, tada vrijedi w L(M1 ) .

Primjer 3.8. Neka je potrebno izgraditi -NKA za sljedeci regularni izraz:
r = b(ab) + ab a
1: Regularni izraz r = b(ab) + ab a c emo prvo prikazati kao r = r1 + r2 , gdje su
r1 = b(ab) i r2 = ab a.
2: Regularni izraz r1 = b(ab) mozemo prikazati u obliku r1 = r3 r4 , gdje su r3 = b i
r4 = (ab) .
3: Za izraz r3 = b koristeci postupak (1) konstruiramo -NKA kao sto je prikazano na
slici 3.17a.
4: Izraz r4 = (ab) mozemo prikazati na sljedeci nacin: r4 = r5 , gdje je r5 = ab.
5: Izraz r5 = ab rastavljamo na sljdeci nacin:r5 = r6 r7 , gdje su r6 = a i r7 = b
6: Za izraze r6 = a i r7 = b koristeci postupak (3) konstruiramo -NKA kao sto je
prikazano na slikama 3.17b i 3.17c .
7: Za izraz r5 = ab koristeci postupak (5) konstruiramo -NKA kao sto je prikazano
na slici 3.17d.
8: Za izraz r4 = (ab) koristeci postupak (6) konstruiramo -NKA kao sto je prikazano
na slici 3.17e.

66

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

9: Za izraz r1 = b(ab) koristeci postupak (5) konstruiramo -NKA kao sto je prikazano na slici 3.17f.

q1

q2

q3

(a) -NKA za izraz r3 = b

q4

(b) -NKA za izraz r6 = a

q3

q4

q5

q6

(c) -NKA za izraz r7 = b

q5

q6

(d) -NKA za izraz r5 = r6 r7 = ab

q7

q3

q4

q5

q6

q8

(e) -NKA za izraz r4 = r5 = (ab)

q1

q2

q7

q3

q4

q5

q6

q8

(f) -NKA za izraz r1 = r3 r4 = b(ab)

Slika 3.17: Konstrukcija -NKA za regularni izraz r1 = b(ab)

10: Regularni izraz r2 = ab a mozemo rastaviti na sljedeci nacin: r2 = r8 r9 , gdje su


r8 = a i r9 = b a.
11: Za izraz r8 = a koristeci postupak (3) konstruiramo -NKA kao sto je prikazano na
slici 3.18a.
12: Izraz r9 = b a mozemo rastaviti na sljedeci nacin: r9 = r10 r11 , gdje su r10 = b i
r11 = a.
13: Za izraz r11 = a koristeci postupak (3) konstruiramo -NKA kao sto je prikazano
na slici 3.18b.

67

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

14: Izraz r10 = b rastavljamo na sljedeci nacin: r10 = r12


, gdje je r12 = b.

15: Za izraz r12 = b koristeci postupak (3) konstruiramo -NKA kao sto je prikazano
na slici 3.18c.
16: Za izraz r10 = b koristeci postupak (6) konstruiramo -NKA kao sto je prikazano
na slici 3.18d.
17: Za izraz r9 = b a koristeci postupak (5) konstruiramo -NKA kao sto je prikazano
na slici 3.18e.
18: Za izraz r2 = ab a koristeci postupak (5) konstruiramo -NKA kao sto je prikazano
na slici 3.18f.

q9

q10

q11

(a) -NKA za izraz r8 = a

q12

q13

(b) -NKA za izraz r11 =


a

q14

(c) -NKA za izraz r12 =


b

q15

q13

q14

q16

= b
(d) -NKA za izraz r10 = r12

q15

q13

q14

q16

q11

q12

(e) -NKA za izraz r9 = r10 r11 = b a

q9

q10

q15

q13

q14

q16

q11

q12

(f) -NKA za izraz r2 = r8 r9 = ab a

Slika 3.18: Konstrukcija -NKA za regularni izraz r2 = ab a

19: Konacno, za regularni izraz r = b(ab) + ab a konstruiramo -NKA na temelju


prethodno konstruiranih -NKA za izraze r1 = b(ab) i r2 = ab a, koji su prikazani
na slikama 3.17f i 3.18f, respektivno. Primjenjujuci postupak (4) konstruiramo
rezultirajuci -NKA kao sto je prikazano na slici 3.19.

68

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

q1

q2

q7

q3

q4

q5

q6

q8

q17

q18

q9

q10

q15

q13

q14

q16

q11

q12

Slika 3.19: Konstruirani -NKA za regularni izraz r = r1 + r2 = b(ab) + ab a

3.7.2

Konstrukcija regularnog izraza za zadani -NKA

U ovom odjeljku c emo pokazati da svaki -NKA M prihvaca regularne jezike.


Teorem 3.4. Za svaki -NKA M = (Q, , , q0 , F) koji prihvaca jezik L(M) postoji
regularni izraz r takav da vrijedi L(r) = L(M). Drugim rijecima, ako neki -NKA M
prihvaca jezik L, tada je jezik L regularan jezik.
Dokaz. Uzimajuci u obzir da smo prethodno pokazali da se za svaki -NKA moze izgraditi ekvivalentni DKA, dovoljno je da pokazemo da za svaki DKA M postoji regularni izraz r takav da vrijedi L(M) = L(r). Pretpostavimo da DKA M = (Q, , , q0 , F)
prihvaca jezik L. Za svako stanje p, q Q mozemo definirati jezik L(p, q) koji se
sastoji od svih rijeci koje oznacavaju prijelaze od stanja p do stanja q. Dakle, imamo:
L(p, q) = {x | (p, x) = q}

(3.16)

Jezik L(M) se sastoji od svih rijeci koje oznacavaju prijelaze od pocetnog stanja q0
do nekog prihvatljivog stanja q F. Uzimajuci u obzir sva prihvatljiva stanja q F,
jezik L(M) mozemo izraziti na sljedeci nacin:
L(M) =

L(q0 , q)

(3.17)

qF

Buduci da znamo da se unijom regularnih jezika dobija takoder regularan jezik,


dovoljno je pokazati da je svaki jezik L(q0 , q) regularan.

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

69

Pretpostavimo da skup stanja Q nekog DKA M ima n stanja, pri c emu su ta stanja
oznacena cijelim brojevima od 1 do n. Za neka stanja p, q Q i j 0 uvedimo sljedecu
notaciju:

x odgovara slijedu prijelaza od p do q koji


L(p, q, k) =
x

ne sadrzi stanja oznacena brojem vecim od k


Dakle, L(p, q, j) oznacava skup rijeci iz jezika L(p, q) koje odgovaraju slijedu prijelaza
automata M od stanja p do stanja q, pri c emu slijed prijelaza ne ukljucuje niti jedno
stanje koje je oznaceno brojem vecim od j.
Osnovni slucaj. Skup L(p, q, 0) je skup svih rijeci koje odgovaraju slijedu prijelaza od
stanja p do stanja q, koji ne ukljucuje niti jedno stanje iz Q. Prema tome, prijelaz iz
stanja p u stanje q se ostvaruje direktno, pa skup L(p, q, 0) zapravo sadrzi simbole a
iz alfabeta , za koje vrijedi (p, a) = q. Osim toga, u slucaju da vrijedi p = q, tada
skup L(p, q, 0) ukljucuje i praznu rijec . Iz prethodno navedenog zakljucujemo da je
L(p, q, 0) konacan skup rijeci, pa je regularan.
Induktivni slucaj. Uzmimo sada za induktivnu hipotezu da je skup L(p, q, k) regularan
za sva stanja p, q Q i za neki broj k 0. Sada trebamo na temelju induktivne hipoteze
pokazati da skupu L(p, q, k + 1) odgovara neki regularan izraz. U skupu L(p, q, k + 1)
su one rijeci koje odgovaraju slijedu prijelaza od p do q, pri c emu slijed prijelaza ne
ukljucuje niti jedno stanje oznaceno brojem vecim od k+1. Rijeci iz skupa L(p, q, k+1)
mozemo podijeliti u sljedece dva podskupa:
1. U prvom podskupu L1 su one rijeci kojima odgovaraju slijedovi prijelaza koji ne
ukljucuju stanje k + 1, pa su to zapravo rijeci iz jezika:
L1 = L(p, q, k)
2. U drugom podskupu L2 se nalaze one rijeci kod kojih slijed prijelaza pored stanja
j za koje vrijedi 1 j k, ukljucuje i stanje k + 1. Slijed prijelaza koji odgovara
rijecima iz drugog podskupa mozemo rastaviti na sljedeca tri dijela:
(a) Slijed prijelaza od stanja p do stanja k + 1. Ovaj slijed prijelaza odgovara
rijecima iz jezika L(p, k + 1, k).
(b) Slijed prijelaza koji moze ukljucivati i visestruke prolaze kroz stanje k + 1,
pa kod ovog tipa prijelaza zapravo imamo petlju u stanju k + 1. Ovaj slijed
prijelaza odgovara rijecima iz jezika L(k + 1, k + 1, k)
(c) Slijed prijelaza od stanja k + 1 do stanja q. Ovaj slijed prijelaza odgovara
rijecima iz jezika L(k + 1, q, k)
Prethodno opisano rastavljanje na tri dijela slijeda prijelaza od stanja p do stanja q je ilustrirano na slici 3.20. Svaki od gore navedena tri dijela prijelaza ili
zapocinje ili zavrsava u stanju k + 1 i moze sadrzavati maksimalno k stanja, pa
rijeci iz drugog podskupa mozemo formalno zapisati na sljedeci nacin:
L2 = L(p, k + 1, k)L(k + 1, k + 1, k) L(k + 1, q, k)

(3.18)

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

70

Uzimajuci u obzir induktivnu hipotezu, zakljucujemo da je skup L2 definiran


izrazom 3.18 regularan.
Prema tome, uzimajuci u obzir oba podskupa, skup L(p, q, k + 1) mozemo zapisati na
sljedeci nacin:
L(p, q, k + 1) = L(p, q, k) L(p, k + 1, k)L(k + 1, k + 1, k) L(k + 1, q, k)

(3.19)

Buduci da su skupovi L1 i L2 regularni, zakljucujemo da je regularan i skup L(p, q, k+


1) definiran izrazom 3.19, pa smo time pokazali i induktivni korak.


k+1

Slika 3.20: Slijed prijelaza od stanja p do stanja q kroz stanje k + 1

Dakako, izraz 3.19 pokazuje i moguci nacin konstrukcije regularnog r(p, q, k + 1)


koji opisuje jezik L(p, q, k + 1):
r(p, q, k + 1) = r(p, q, k) + r(p, k + 1, k)r(k + 1, k + 1, k) r(k + 1, q, k)

(3.20)

Za jezik L(p, q) imamo:


L(p, q) = L(p, q, n),

(3.21)

r(p, q) = r(p, q, n),

(3.22)

odnosno,
jer L(p, q, n) i r(p, q, n) iskljucuju slijedove prijelaza koji sadrze stanja veca od n, a to
ne predstavlja nikakvo ogranicenje jer automat M ima upravo n stanja.
Primijetimo takoder da iz izraza 3.20 mozemo zapravo izvesti algoritam za konstrukciju regularnog izraza za jezik L(p, q). Naime, regularan izraz r(p, q, n) mozemo
prikazati koristeci izraze r(i, j, n 1), gdje i i j oznacavaju odredena potrebna stanja sukladno izrazu 3.20. Zatim izraze r(i, j, n 1) mozemo prikazati koristeci izraze
r(i, j, n 2), itd. Na kraju razvoja izraza c emo dobiti izraze za r(i, j, 1) koji su prikazani pomocu regularnih izraza r(i, j, 0). Nadalje, regularni izrazi r(i, j, 0) se mogu na
jednostavan nacin dobiti direktno iz same definicije automata M, imajuci u vidu da slijed prijelaza ukljucuje broj medustanja koji je jednak 0. Kada imamo regularne izraze

71

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

r(i, j, 0), proces nastavljamo u obrnutom smjeru tako sto koristimo prethodno razvijene
izraze za r(i, j, 1),r(i, j, 2) itd., sve dok ne dobijemo izraz za r(p, q, n).
Na kraju, da bismo dobili jezik L(M) kojeg prihvaca automat M, prema izrazu 3.17
potrebno je objediniti sve jezike L(q0 , q), za q F. To znaci, da bismo konstruirali
regularni izraz za jezik L(M), trebamo koristeci operator + kombinirati regularne izraze
za jezike r(q0 , q, n), za sva stanja q F.
Primjer 3.9. U ovom primjeru c emo opisati nacin konstrukcije regularnog izraza za
dva DKA, pri c emu c emo koristiti prethodno opisani postupak. Neka su dijagramima
stanja koji su prikazani na slici 3.21 zadani DKA M1 i DKA M2
a
start

a
b

a
b

(a)

a
start

a
b

a
b

(b)

Slika 3.21: Primjer dva DKA za koja izracunavamo ekvivalentni regularni izraz

Konstrukcija regularnog izraza za DKA M1 . Jezik L(M1 ) kojeg prihvaca DKA M1


prikazan na slici 3.21(a) je opisan regularnim izrazom r(M1 ):
r(M1 ) = r(1, 3, 3).

(3.23)

r(1, 3, 3) = r(1, 3, 2) + r(1, 3, 2)r(3, 3, 2) r(3, 3, 2)

(3.24)

Prema izrazu 3.20 imamo:

Nadalje, za potrebne izraze r(i, j, k), gdje je k = 2, imamo:


r(1, 3, 2) = r(1, 3, 1) + r(1, 2, 1)r(2, 2, 1) r(2, 3, 1)

(3.25a)

r(3, 3, 2) = r(3, 3, 1) + r(3, 2, 1)r(2, 2, 1) r(2, 3, 1)

(3.25b)

Desna strana gornjih izraza pokazuje koje izraze r(i, j, k) je potrebno izracunati za
k = 1. U tablici 3.6 su dati regularni izrazi r(i, j, 0) za k = 0, koji se direktno mogu napisati iz dijagrama stanja DKA M1 prikazanog na slici 3.21(a), pa proces konstrukcije
regularnog izraza r(M1 ) mozemo nastaviti od dna prema vrhu.

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

r(p, 1, 0)

r(p, 2, 0)

r(p, 3, 0)

+a

+a

+a+b

Tablica 3.6: Regularni izrazi za k = 0

Uzimajuci u obzir 3.20 i izraze prikazane u tablici 3.6 imamo:


r(1, 3, 1) = r(1, 3, 0) + r(1, 1, 0)r(1, 1, 0) r(1, 3, 0)
= + ( + a)( + a) ()
=+
=
r(1, 2, 1) = r(1, 2, 0) + r(1, 1, 0)r(1, 1, 0) r(1, 2, 0)
= b + ( + a)( + a) (b)
= b + ( + a)a b
= b + a b
= ( + a )b
= a b
r(2, 2, 1) = r(2, 2, 0) + r(2, 1, 0)r(1, 1, 0) r(1, 2, 0)
= + a + ()( + a) (b)
=+a+
=+a
r(2, 3, 1) = r(2, 3, 0) + r(2, 1, 0)r(1, 1, 0) r(1, 3, 0)
= b + ()( + a) ()
=b+
=b
r(3, 3, 1) = r(3, 3, 0) + r(3, 1, 0)r(1, 1, 0) r(1, 3, 0)
= + a + b + ()( + a) ()
=+a+b

72

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

73

r(3, 2, 1) = r(3, 2, 0) + r(3, 1, 0)r(1, 1, 0) r(1, 2, 0)


= + ()( + a) (b)
=+
=
Zatim, na temelju gornjih izraza i izraza 3.25 izracunavamo potrebne izraze r(i, j, 2) za
k = 2:
r(1, 3, 2) = + (a b)( + a) (b)
= a ba b
r(3, 3, 2) = + a + b + ()( + a) (b)
=+a+b+
=+a+b
Na kraju, iz izraza 3.27 i dobivenih izraza za r(1, 3, 2) i r(3, 3, 2), imamo izraz za
r(1, 3, 3):
r(1, 3, 3) = a ba b + (a ba b)( + a + b) ( + a + b)
= a ba b( + ( + a + b) ( + a + b))
= a ba b( + (a + b) ( + a + b))
= a ba b( + (a + b) )
= a ba b(a + b)
Konstrukcija regularnog izraza za DKA M2 . Buduci da DKA M2 (vidjeti sliku 3.21b
ima dva prihvatljiva stanja (stanje 2 i stanje 3), to znaci da je jezik L(M2 ):
L(M2 ) = L(1, 2, 3) L(1, 3, 3).
Drugim rijecima, za izgradnju regularnog izraza r(M2 ) je potrebno kombinirati sljedeca
dva regularna izraza:
r(M2 ) = r(1, 2, 3) + r(1, 3, 3)
(3.26)
Prema izrazu 3.20 imamo:
r(1, 2, 3) = r(1, 2, 2) + r(1, 3, 2)r(3, 3, 2) r(3, 2, 2)

(3.27)

Dakle, za potrebne izraze r(i, j, k), gdje je k = 2, potrebno je razviti i izracunati


r(1, 2, 2), r(1, 3, 2), r(3, 3, 2) i r(3, 2, 2). Buduci da smo prethodno vec izracunali izraze za r(1, 3, 2) i r(3, 3, 2), ostalo je jos da razvijemo i izracunamo sljedece izraze
r(1, 2, 2) i r(3, 2, 2):
r(1, 2, 2) = r(1, 2, 1) + r(1, 1, 1)r(1, 1, 1) r(1, 2, 1)

(3.28a)

Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

74

r(3, 2, 2) = r(3, 2, 1) + r(3, 2, 1)r(2, 2, 1) r(2, 2, 1)

(3.28b)

Prethodno smo vec izracunali gotovo sve potrebne izraze r(i, j, k) za k = 1, osim
izraza r(1, 1, 1). Na temelju izraza 3.20 i regularnih izraza za k = 0 prikazanih u tablici
3.6 imamo:
r(1, 1, 1) = r(1, 1, 0) + (r(1, 1, 0) r(1, 1, 0)
= + a + ( + a)( + a) ( + a)
= + a + ( + a)a ( + a)
= + a + a ( + a)
= + a + a
= + a )
= a )
Na temelju izraza 3.28 i potrebnih prethodno izracunatih izraza r(i, j, k) za k = 1,
imamo:
r(1, 2, 2) = a b + (a )(a ) (a b)
= a b + a a a b
= a b + a a b
= a b + a b
= a b
r(3, 2, 2) = + ()( + a) ( + a)
=+
=
Iz 3.27 i prethodno izracunatih izraza r(i, j, k) za k = 2, imamo:
r(1, 2, 3) = a b + (a ba b)( + a + b) ()
= a b +
= a b
Konacno, na temelju 3.26 za regularni izraz r(M2 ) automata M2 imamo:
r(M2 ) = a b + a ba b(a + b)

(3.29)

Kao sto vidimimo, iako DKA M1 i DKA M2 imaju samo tri stanja, konstrukcija regularnih izraza na prethodno opisani nacin je prilicno zahtjevna. Nadalje, napomenimo
jos da regularni izrazi dobiveni na prethodno opisani nacin ne moraju biti najjednostavniji moguci ekvivalentni izrazi. S druge strane, opisani postupak ipak omogucuje
sistematican pristup konstrukciji regularnih izraza za jezik L(M) zadan nekim deterministickim konacnim automatom M.


Poglavlje 3. Regularni izrazi, nedeterministicki konacni automati i Kleeneov teorem

3.8

75

Kleeneov teorem

Kombinirajuci teoreme 3.3 i 3.4, dobijamo Kleenov teorem.


Teorem 3.5. Neka je jezik L jezik nad nekim alfabetom . Jezik L je regularan ako i
samo ako ga prihvaca neki NKA sa alfabetom .

Predavanje 7

Svojstva regularnih jezika


7.1

Svojstvo napuhavanja

Najcesc a primjena svojstva napuhavanja je pri dokazivanju neregularnosti nekih jezika.


Ovo svojstvo c emo formalno prikazati teoremom 7.1.
Teorem 7.1 (Svojstvo napuhavanja). Neka je definiran jezik L nad alfabetom . Ako
konacni automat M = (Q, , , q0 , F) prihvaca jezik L, te ako je n broj stanja automata
M, tada za svaku rijec w L, koja zadovoljava |w| n, postoje tri rijeci x, y i z, takve
da je:
w = xyz,
pri c emu su zadovoljena sljedeca tri uvjeta:
1. |xy| n.
2. |y| > 0, tj. v , .
3. Rijec xyi z takoder pripada jeziku L, za svaki i 0.
Dokaz. Neka DKA M koji prihvaca jezik L ima stanja koja su oznacena sa q0 , q1 , q2 ,
. . ., qn1 . Buduci da smo pretpostavili da je jezik L beskonacan, postoji rijec w iz jezika
L takva da vrijedi |w| n. DKA M c itanjem simbola rijeci w prelazi iz pocetnog stanja
q0 u prihvatljivo stanje q f , pri c emu slijed prijelaza mozemo prikazati sljedecim nizom
stanja:
q0 , qi , q j , . . . , q f .
Buduci da je broj stanja u gornjem nizu jednak |w| + 1, mozemo zakljuciti da se barem
jedno stanje u tom nizu mora ponoviti, te da to ponavljanje mora zapoceti najkasnije
pri n 1-vom prijelazu. Prema tome, niz stanja mora imati sljedeci oblik:
q0 , qi , q j , . . . , qr , . . . qr , . . . q f ,
na temelju kojeg zakljucujemo da rijec w mora sadrzavati podrijeci x, y i z, takve da
vrijedi:
(q0 , x) = qr ,
76

PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA


(qr , y) = qr ,

77
(7.1)

(qr , z) = q f ,

pri c emi vrijedi |xy| n i |y| 1. Dakle, c itanjem simbola sa ulazne trake koji c ine rijec
w = xyz, DKA M iz pocetnog stanja q0 prelazi u prihvatljivo stanje q f , pri c emu slijed
prijelaza formira ciklus c itanjem simbola koji c ine rijec y. Slijed prijelaza pri c itanju
simbola iz rijeci w koji formira cikluse je prikazan na slici 7.1. Nadalje, istaknimo da
postoji mogucnost da se rijec w moze rasc laniti na vise nacina na podrijeci x, y i z,
odnosno da postoji mogucnost postojanja vise od jednog ciklusa. U svakom slucaju,
DKA M u svom radu mora proci barem kroz jedan ciklus c itanjem prvih n simbola iz
rijeci w L. Drugim rijecima, postoji barem jedna mogucnost izbora podrijeci x, y
i z, takvih da je w = xyz, pri c emu niz simbola y odgovara prijelazima koji formiraju
cikluse (vidjeti sliku 7.1). Nadalje, na temelju 7.1 za rijec xz imamo:
(q0 , xz) = ( (q0 , x), z)
= (qr , z)
= qf .
Dakle, vrijedi xz L. Razmotrimo i rijec xyyz, za koju imamo:
(q0 , xyyz) = ( (q0 , x), yyz)
= (qr , yyz)
= ( (qr , y), yz)
= (qr , yz)
= ( (qr , y), z)
= (qr , z)
= qf .
Dakle, rijec xy2 z L(M). Zapravo mozemo zakljuciti da c e za bilo koji broj ponavljanja ciklusa koji korespondira s nizom simbola y, DKA M zavrsiti u prihvatljivom
stanju q f . Prema tome, mozemo zakljuciti da pored rijeci xz, xyz i xy2 z, za koje smo
vec utvrdili da su iz jezika L(M), jeziku L(M) takoder pripadaju i rijeci xy3 z, xy4 z,
itd. Odnosno, za svako i 0, rijec xyi z takoder pripada jeziku L(M), jer DKA M iz
pocetnog stanja q0 moze preci u finalno stanje q f ponavlajuci i puta ciklus koji korespondira nizu simbola iz podrijeci y.
Svojstvo koje smo upravo dokazali se naziva svojstvo napuhavanja. Naziv napuhavanje dolazi od toga sto se rijec w moze napuhavati umetanjem dodatnih kopija
rijeci y.


PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA

78

yi
z

q0

qr

qm

Slika 7.1: Svojstvo napuhavanja

Kao sto je na pocetku ovog odjeljka vec istaknuto, najcesc a primjena svojstva napuhavanja je pri dokazivanju da neki jezik ne moze biti prihvacen deterministickim
konacnim automatom. Naime, prvo pretpostavljamo da jezik L moze biti prihvacen
deterministickim konacnim automatom M sa n stanja. Zatim, pokusavamo izabrati
rijec iz jezika L koja ima duljinu barem n, tako da nas tvrdnje 1-3 iz teorema 7.1 vode
u kontradikciju.
Kao sto je prethodno opisano, svojstvo napuhavanja podrazumijeva odredene uvjete
koje svaka rijec iz nekog jezika L, koja ima duljinu barem n, mora zadovoljavati.
Moguce je da za neke odabrane rijeci w, c injenica da w zadovoljava uvjete iz teorema
7.1 ne stvara nikakvu kontradikciju. Dakako, u slucaju tako odabranih rijeci, kada
ne mozemo utvrditi kontradikciju, zapravo ne mozemo nista niti dokazati. Dakle, potrebno je pronaci takvu rijec na temelju koje c e se moci utvrditi kontradikcija. Sljedeci
primjeri ilustriraju primjenu teorema 7.1 pri dokazivanju neregularnosti jezika.
Primjer 7.1. Neka je zadan sljedeci jezik:
L = {ai bi | i 0}.
Pokusajmo dobiti kontradikciju tako da pretpostavimo da postoji DKA M koji ima n
stanja i koji prihvaca jezik L. Izaberimo rijec w = an bn . Prema tome, vrijedi w L
i |w| n. Sukladno teremu 7.1, postoje rijeci x, y i z, takve da je w = xyz, pri c emu
vrijede sljedeci uvjeti:
1. |xy| n
2. y ,
3. xyi z L, za svaki i 0
Buduci da je prvih n simbola rijeci w = an bn jedanko a, iz uvjeta (1) zakljucujemo
da svi simboli u rijecima x i y moraju biti a. Prema tome, rijeci x i y mozemo zapisati
na sljedeci nacin:
x = a p gdje je 0 p < n,
y = ak gdje je 0 < k n,
z = anpk bn .

PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA

79

Prema uvjetu (3) svojstva napuhavanja imamo da vrijedi xyi z L. Uzmimo, npr. i = 2.
Tada za rijec xy2 z dobivamo:
xy2 z = a p a2k anpk bn
= a p+2k+npk bn
= ak+n bn
Buduci da je k > 0 zakljucujemo da vrijedi ak+n bn < L, iako bi prema uvjetu
(3) svojstva napuhavanja trebalo vrijediti ak+n bn L. Drugim rijecima, dobili smo
kontradikciju, pa zakljucujemo da ne postoji DKA M koji prihvaca jezik L.

Primjer 7.2. Neka je zadan sljedeci jezik:
2

L = {ai | i 0}.
Dakle, jezik L sadrzi nizove simbola a, c ija je duljina jednaka kvadratu nekog cijelog
broja.
Pretpostavimo da DKA M, koji prihvaca jezik L, ima n stanja. Izaberimo rijec w
2
na sljedeci nacin: w = an . Prema svojstvu napuhavanja, rijec w = xyz za neke nizove
simbola x, y i z, zadovoljava uvjete 1-3. Iz uvjeta 1 i 2 imamo:
0 < |y| |xy| n.
Prema tome, imamo:
|w| = |xyz| = n2 < |xy2 z| = n2 + |y| n2 + n < n2 + 2n + 1 = (n + 1)2 .
Dakle, dobili smo da je:
n2 < |xy2 z| < (n + 1)2 .
Prema uvjetu 3 iz teorema 7.1, rijec xy2 z L, pa njena duljina mora biti kvadrat nekog
cijelog broja i. Medutim, to je nemoguce, jer ne postoji kvadrat cijelog broja koji je
strogo izmedu n2 i (n + 1)2 . Time smo dobili kontradikciju, pa zakljucujemo da ne
postoji DKA koji prihvaca jezik L.


7.2

Svojstva zatvorenosti regularnih jezika

Za neku klasu jezika kazemo da je zatvorena s obzirom na neku operaciju ako se primjenom te operacije na bilo koji jezik iz te klase dobija jezik koji je u toj istoj klasi.
Naprimjer, u nastavku c emo pokazati da se operacojom unije regularnih jezika L i N
dobija takoder regularni jezik, pa kazemo da su regularni jezici zatvoreni s obzirom na
operaciju unije.
Unija, presjek i komplement
Teorem 7.2. Ako su L1 i L2 regularni jezici, tada su regularni i jezici:
1. L1 L2

PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA

80

2. L1 L2
3. L1 \ L2
Dokaz. Za dokazivanje gore navedeneih svojstava zatvorenosti koristimo teorem 2.1.
Neka M1 i M2 oznacavaju DKA koji prihvacaju regularne jezike L1 i L2 . Teoremom
2.1 smo pokazali da se mogu konstruirati DKA koji prihvacaju jezike L1 L2 , L1 L2 i
L1 \ L2 , pa su i navedeni jezici koji nastaju operacijom unije, presjeka i razlike takoder
regularni jezici.

Zatvorenost s obzirom na komplement
Teorem 7.3. Regularni jezici su zatvoreni s obzirom na operaciju komplementa.
Dokaz. Neka DKA M:
M = (Q, , , q0 , F)
prihvaca regularni jezik L(M). Konstruirajmo DKA na sljedeci nacin:
M c = (Q, , , q0 , Q \ F).
DKA M c prihvaca jezik:
L(M c ) = {w | (q0 , w) Q \ F}
= {w | (q0 , w) < F}
= \ {w | (q0 , w) F}
= \ L(M)
= L(M c )
Buduci da smo za jezik Lc koji je komplement jezika L konstruirali DKA, zakljucujemo da je i jezik Lc regularan jezik, pa su regularni jezici zatvoreni s obzirom
na operaciju komplementa.


7.2.1

Zatvorenost s obzirom na reverziranje

U prvom poglavlju smo definirali operaciju reverziranja kao operaciju kojom se simboli
a1 a2 . . . an zapisuju zapisuju u obrnutom poretku an an1 . . . a1 . Za oznacavanje reverziranja rijeci w koristimo oznaku wR . Naprimjer, za rijec w = abaa, imamo wR = aaba.
Nadalje, vrijedi R = .
Nadalje, reverziranje jezika L, sto oznacavamo kao LR , definiramo kao jezik koji se
sastoji od reverznih rijeci iz jezika L:
LR = {wR | w L}.
. Naprimjer, ako je jezik L definiran na sljedeci nacin:
L = {ab, abbb, ababa, bbaaa},
tada je reverzni jezik LR :
LR = {ba, bbba, ababa, aaabb}.

PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA

81

Teorem 7.4. Ako je jezik L regularan jezik, tada je i jezik LR takoder regularan jezik.
Dokaz. Pretpostavimo da je jezik L definiran regularnim izrazom E. Matematickom
indukcijom na velicini regularnog izraza E mozemo pokazati da postoji regularni izraz
E R , takav da vrijedi:
L(E R ) = (L(E))R .
Odnosno, jezik koji je definiran regularnim izrazom E R je reverzni jezik jezika definiranog regularnim izrazom E.
Osnovni slucaj: Ako je E = , E = ili E = a za neki simbol ain, tada je
E R = E. Naime, imamo da vrijedi:
{}R = {}, R = , {a}R = {a}.
Indukcijski slucaj: Imamo tri slucaja, ovisno o obliku regularnog izraza E.
1. E = E1 + E2 . Ovaj regularni izraz definira jezik L(E1 ) L(E2 ). U ovom
slucaju E R definiramo na sljedeci nacin: E R = E1R + E2R . Naime, imamo da
vrijedi:
(L(E1 + E2 ))R = (L(E1 ) L(E2 ))R
= L(E1R ) L(E2R )
= L(E1R + E2R )
2. E = E1 E2 . Ovaj regularni izraz definira jezik L(E1 )L(E2 ). U ovom slucaju
E R definiramo na sljedeci nacin: E R = E2R E1R . Naime, imamo da vrijedi:
(L(E1 E2 ))R = (L(E1 )L(E2 ))R
= (L(E2 ))R L(E1 ))R
= L(E2R )L(E1R )
= L(E2R E1R )
Uzmimo npr. da imamo L(E1 ) = {ab, bba} i L(E2 ) = {bb, ba}. Tada iamamo
da je:
L(E1 )L(E2 ) = {abbb, abba, bbabb, bbaba}.
Za reverzni jezik (L(E1 )L(E2 ))R dobijamo:
(L(E1 )L(E2 ))R = {bbba, abba, bbabb, ababb}.
Ako nadovezemo jezike (L(E2 ))R i (L(E1 ))R imamo:
(L(E2 ))R (L(E1 ))R = {bb, ab}{ba, abb}
= {bbba, bbabb, abba, ababb}

PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA

82

= (L(E1 )L(E2 ))R


Opcenito, ako za neku rijec w L(E) imamo da je w = w1 w2 , w1 L(E1 ),
w2 L(E2 ), tada je wR = wR2 wR1 .
3. E = E1 . Ovaj regularni izraz definira jezik (L(E1 )) . U ovom slucaju E R
definiramo na sljedeci nacin: E R = (E1R ) . Naime, svaku rijec x L(E)
mozemo zapisati kao:
x = x1 x2 xn ,
gdje za svaki xi vrijedi xi L(E1 ). Nadalje, vrijedi:
R
xR = xnR xn1
x1R .

Buduci da za svaki xiR vrijedi xiR L(E1R ), imamo da je:


xR L((E1R ) ).
S druge strane, svaku rijec y L((E1R ) ), mozemo zapisati u obliku:
y = y1 y2 yn ,
gdje za svaki yi vrijedi yi L(E1R ). Reverzna rijec yR je tada:
yR = yRn yRn1 yR1 ,
te imamo yR L(E1 ) = L(E). Time je pokazano da za svaku rijec w vrijedi
w L(E) ako i samo ako za njenu reverznu rijec wR vrijedi wR L((E1R ) ).


Predavanje 8

Formalna gramatika
Prethodno je receno da pod formalnim jezikom podrazumijevamo svaki skup rijeci nad
nekim definiranim alfabetom, te da jezik mozemo specificirati tako sto c emo navesti
sve rijeci koje se nalaze u tom jeziku. Medutim, takav nacin specifikacije jezika nije
prihvatljiv za beskonacne jezike. Prema tome, potrebno je pronaci nacin da se u nekoj konacnoj formi specificiraju i oni jezici koji imaju beskonacno mnogo elemenata.
Nacin za prevazilazenje problema konacne specifikacije formalnih jezika je upotreba
formalne gramatike.Slicno kao kod prirodnih jezika kod kojih gramatika predstavlja skup pravila koja neki konkretni prirodni jezik (engleski, francuski, bosanski,...)
mora zadovoljavati,formalna gramatika predstavlja skup pravila po kojima se generiraju rijeci formalnog jezika.
Neformalno, gramatika je skup pravila koja se koriste da se definira struktura nizova simbola nad nekim alfabetom .Gramatika za jezik L koji se gradi nad alfabetom
se sastoji od skupa pravila koji imaju sljedeci oblik:
,
gdje i oznacavaju rijeci sastavljene od simbola uzetih iz alfabeta i iz posebnog
skupa simbola kojeg c emo nazivati skup neterminalnih simbola, te ga oznacavati sa
N. Pravilo gramatike se obicno naziva produkcija i moze se c itati na razlicite
nacine, kao npr. producira , zamjenjujemo sa ,i sl.Nadalje,svaka gramatika
ima specijalni simbol koji se naziva pocetni simbol,te mora postojati barem jedna produkcija kod koje se lijeva strana sastoji samo od startnog simbola. Naprimjer,ako
je S pocetni simbol za neku gramatiku,onda mora postojati barem jedna produkcija
sljedeceg oblika:
S ,
Uzmimo jedan primjer gramatike za neki jezik L i opisimo proces izvodenja rijeci iz
produkcijskih pravila. Neka je alfabet definiran na sljedeci nacin:
= {a, b, c}
Nadalje,neka je jezik L definiran kao L = . Dakle,jezik L je sastavljen od svih
mogucih rijeci koje se mogu dobiti kombiniranjem znakova iz . Tada bi gramatika za
83

PREDAVANJE 8. FORMALNA GRAMATIKA

84

jezik L mogla sadrzavati sljedeci skup P produkcijskih pravila:


S
S aS
S bS
S cS
Sada uzmimo bilo koju rijec nad alfabetom i pogledajmo kako se ta rijec izvodi
koristeci produkcijska pravila. Naprimjer,uzmimo rijec bbca. Izvodenje rijeci uvijek
pocinje pocetnim simbolom S . Zamijenit c emo pocetni simbol sa desnom stranom
produkcije S bS . Izabrali smo produkciju S bS zato sto se rijec bbca podudara
sa desnom stranom te produkcije, uz pretpostavku da je S = bca. Proces zamjene
simbola S sa simbolima bS mozemo opisati na sljedeci nacine:bS proizlazi iz S , S
proizvodi bS ,S generira bS i sl. Ovo izvodenje c emo zapisivati na sljedeci nacin:
S bS
Simbol oznacava izvodenje u jednom koraku. Desna strana ovog izvodenja sadrzi
simbol S , tako da opet po drugi put koristimo produkciju S bS . Ovu produkciju smo
izabrali zato sto se rijec bbca podudara sa nizom bbS , uz pretpostavku da je S = ca.
Time imamo sljedece izvodenje:
S bS bbS
Desna strana opet sadrzi simbol S . Uz pretpostavku da je S = a,niz bbca se podudara
sa nizom bbcS , pa c emo primijeniti produkciju S cS , te imamo:
S bS bbS bbcS
Rijec bbca se podudara sa nizom bbcaS , uz pretpostavku da je S = , pa nastavljamo
tako da iskoristimo produkciju S aS , nakon c ega imamo sljedece izvodenje:
S bS bbS bbcS bbcaS
Posto z elimo da nase izvodenje proizvede rijec bbca, na kraju c emo iskoristiti produkciju S , sto c e dati izvodenje za rijec bbca:
S bS bbS bbcS bbcaS bbca

8.1

Formalna definicija gramatike

Prethodno smo uveli pojam gramatike na jedan neformalan nacin tako sto smo uveli potrebne pojmove za njenu formalnu definiciju.Naime,uveli smo sljedeca c etiri elementa
koja su potreba za formalnu definiciju pa c emo sada dati i njenu formalnu definiciju.
Neka je sa N oznacen skup neterminalnih simbola (varijabli) za koje c emo koristiti velika slova A, B, C itd.Zatim,neka je sa oznacen alfabet (skup terminalnih simbola),za

PREDAVANJE 8. FORMALNA GRAMATIKA

85

koje c emo koristiti mala slova a, b, c, itd. Takoder, neka simbol S , S N,oznacava
specijalni neterminalni simbol kojeg c emo nazivati pocetni simbol.
Definicija 1.2. Formalna gramatika G je c etvorka:
G = (N, , P, S )
gdje je:
N konacan skup neterminalnih simbola
konacan skup terminalnih znakova, N =
P konacan skup produkcija oblika , gdje vrijedi:
(N ) N(N ) , (N ) ,
te pri c emu vrijedi da skupovi N i nemaju zajednickih elemenata, tj. vrijedi
N = . Primijetimo da niz mora sadrzavati barem jedan neterminalni
simbol.
S pocetni neterminalni simbol, S N
Za zadanu gramatiku G = (N, , P, S ) definiramo relaciju nad nizovima iz skupa
G

(N ) . Ako je produkcija iz skupa P, te ako su i iz skupa (N ) , onda


vrijedi relacija:

G

Niz simbola se generira direktno iz niza primjenom produkcije . Oznaka G specificira kojoj gramatici pripada primijenjena produkcija.
Neka 1 , 2 , . . . , m ,pri c emu je m 1, predstavljaju nizove iz skupa (N ) .
Nadalje, neka vrijedi sljedece:
1 2 , 2 3 , . . . , m1 m .
G

Tada kazemo da gramatika G geneerira niz m iz niza 1 , sto zapisujemo na sljedeci


nacin:

1 m
G

Dakle, relacijom prikazujemo primjenu jedne produkcija koje pripadaju gramatici


G

G, dok relacijom prikazujemo primjenu nula ili vise produkcija koje pripadaju graG

matici G. Ako je iz datog kontektsa nedvosmisleno jasno na koju gramatiku se relacije


odnose, onda c emo umjesto oznaka

koristiti oznake

PREDAVANJE 8. FORMALNA GRAMATIKA

86

Ako gramatika iz niza generira niz primjenom i produkcija, to c emo zapisivati na


sljedeci nacin:
i

Dakako, iz konteksta c e uglavnom biti jasno o kojoj gramatici se radi, pa c emo tada
koristiti sljedeci zapis:
i

Gramatika G = (N, , P, S ) generira jezik L(G):

L(G) = {w | w , S w}
G

Prema tome, neka rijec w je u jeziku L(G) koji generira gramatika G ako za rijec w
vrijedi:
1. Rijec w sadrzi iskljucivo terminalne znakove gramatike.
2. Rijec w je moguce generirati iz pocetnog neterminalnog simbola S .

8.1.1

Primjeri formalnih gramatika i odgovarajucih jezika

Da bi dobili sto jasniju predodzbu o konceptu formalne gramatike, u nastavku c emo


dati nekoliko vrlo jednostavnih primjera za formalnu gramatiku
Primjer 8.1. Neka imamo sljedecu gramatiku:
G1 = ({S }, {a, b}, P, S ),
gdje su produkcije iz skupa P definirane na sljedeci nacin:
S a
S ab
S abb
S abbb
Lako zakljucujemo da gramatika G1 generira jezik L1 (G1 ):
L1 (G1 ) = {a, ab, abb, abbb}
Naime, u ovom primjeru se svaku produkciju mozemo primijeniti samo u jednom koraku, jer su vec nakon tog prvog koraka s desne strane nalaze nizovi kooji
ne ukljucuju simbole iz skupa neterminalnih simbola N.

Primjer 8.2. Neka imamo sljedecu gramatiku:
G2 = ({S }, {a}, P, S ),
gdje skup P sadrzi sljedece produkcije:
S

PREDAVANJE 8. FORMALNA GRAMATIKA

87

S aS
Primjenom produkcije S zakljucujemo da vrijedi L2 (G2 ). Primjenom produkcije S aS , a zatim produkcije S , imamo:
S aS a
Dakle, rijec a se takoder nalazi u jeziku L2 (G2 ), a L2 (G2 ). Nadalje, primjenom dva
puta produkcije S aS , a zatim jednom produkcije S , imamo:
S aS aaS aa,
pa zakljucujemo da se i rijec aa nalazi u jeziku L2 (G2 ), aa L2 (G2 ).
Opcenito, zakljucujemo da ako primijenimo n puta produkciju S aS , a zatim
jednom produkciju S , izvodenjem c emo dobiti rijec an , pa zakljucujemo da gramatika G2 generira jezik L2 (G2 ):
L2 (G2 ) = {a, aa, aaa, . . .}
Jezik L2 (G2 ) mozemo zapisati i na sljedeci nacin:
L2 (G2 ) = {an | n N}

Primjer 8.3. Neka imamo slijedecu gramatiku:
G3 = ({S , A}, {a, b, c}, P, S ),
gdje skup P sadrzi sljedece produkcije:
S aAc
A
A bA
Razmotrimo izvodenje primjenom produkcije S aAc, a zatim i produkcije A
:
S aAc ac
Dakle, imamo ac L(G3 ).
Sada razmotrimo izvodenje primjenom produkcije S aAc, zatim produkcije
A bA i na kraju produkcije A :
S aAc abAc abc
Prema tome, vrijedi abc L(G3 ).
Razmotrimo jos izvodenje primjenom produkcije S aAc, zatim dva puta produkcije A bA i na kraju produkcije A :
S aAc abAc abbAc abbc = ab2 c

PREDAVANJE 8. FORMALNA GRAMATIKA

88

Prema tome, vrijedi abc L(G3 ).


Na temelju prethodna tri izvodenja zakljucujemo da jednom primjenom produkcije
S aAc, zatim n puta (n = 0, 1, 2, 3, . . .) produkcije A bA, te na kraju jednom
primjenom produkcije A generiramo rijec abn c. Prema tome, zakljucujemo da
gramatika G3 generira jezik L(G3 ):
L(G3 ) = {abn c | n N}

Primjer 8.4. Neka imamo sljedecu gramatiku:
G4 = ({S , A, B}, {a, b, c}, P, S ),
gdje skup P sadrzi sljedece produkcije:
S aS AB
S aAB
BA AB
aA ab
bA bb
bB bc
cB cc
Prvo razmotrimo izvodenje primjenom produkcija S aAB, aA ab i bB bc:
S aAB abB abc
Prema tome, vrijedi abc L(G4 ).
Zatim razmotrimo izvodenje primjenom produkcija sljedecim redoslijedom 1-2-34-5-6-7:
S aS AB aaABAB aaAABB aabABB aabbBB aabbcB aabbcc = a2 b2 c2
Prema tome, vrijedi a2 b2 c2 L(G4 ).
Na kraju, razmotrimo jos i izvodenje primjenom produkcija sljedecim redoslijedom
1-1-2-3-3-3-4-5-6-6-7-7:
S aS AB aaS ABAB aaaABABAB
aaaAABBAB aaaAABABB aaaAAABBB
aaabAABBB aaabbABBB aaabbbBBB
aaabbbcBB aaabbbccB aaabbbccc = a3 b3 c3
Prema tome, vrijedi a3 b3 c3 L(G4 ).
Na temelju prethodna tri izvodenja mozemo zakljuciti da primjenom n 1 puta
produkcije S aS AB, a zatim u n-tom koraku primjenom produkcije S aAB
se dobiva niz an (AB)n . Nakon toga primjenjujemo produkciju BA AB da bismo

PREDAVANJE 8. FORMALNA GRAMATIKA

89

zamijenili pozicije varijabli A i B, te na taj nacin postigli da se sve varijable A nalaze


ispred varijabli B. Prema tome, primjenjujuci produkciju BA AB dovoljan broj puta
dobiva se niz an An Bn . Nadalje, jednom primijenimo produkciju aA ab i dobivamo
an bAn1 Bn , a zatim n 1 puta primjenjujemo produkciju bA bb, nakon c ega c emo
dobiti an bn Bn . Na kraju, jednom primjenjujemo produkciju bB bc i n 1 puta
produkciju cB cc, nakon c ega se generira rijec an bn cn .
Prema tome, zakljucujemo da gramatika G4 generira jezik L(G4 ):
L(G4 ) = {an bn cn | n N}


8.1.2

Gramatika prirodnog jezika i formalna gramatika

Formalna gramatika ima odredene slicnosti sa gramatikom prirodnih jezika.Ovaj primjer upravo ima svrhu da ilustrira odredene slicnosti izmedu gramatike prirodnog jezika i formalne gramatike.
Jedno od glavnih obiljezja recenice je mogucnost da se ona moze rasc laniti na
odredene recenicne dijelove. Iako je situacija sa gramatikom prirodnih jezika nesto
slozenija, za potrebe ovog primjera c emo pretpostaviti da su glavni i samostalni recenicni
dijelovi subjekt, predikat i objekt. Nadalje, pretpostavit c emo da svaki od navedenih
dijelova moze imati odredene dodatke, koji onda tvore subjektni skup, predikatni skup
i objektni skup.
Konstruirajmo formalnu gramatiku G = (N, , P, S ),pri c emu je pocetni simbol
S = hRecenicai,dok su ostala tri elementa definirana na sljedeci nacin:

N =

hSubjektniSkupi

hPredikatniSkupi

hObjektniSkupi

hSubjekti

hPredikati

hObjekti

hAtributi

hPrilogi
hRecenicai

PJEVACICE

PJESME

PJEVAJU

PISU

POZNATE

LIJEPE

UVIJEK

PONEKAD

. (tacka)

PREDAVANJE 8. FORMALNA GRAMATIKA

90

1.
hRecenicai hSubjektniSkupihPredikatniSkupihObjektniSkupi.

2.
hSubjektniSkupi

hAtributihSubjekti

3.
hSubjektniSkupi

hSubjekti

4.
hPredikatniSkupi

hPrilogihPredikati

5.
hPredikatniSkupi

hPredikati

6.
hObjektniSkupi

hAtributihObjekti

7.
hObjektniSkupi

hObjekti

8.
hSubjekti

PJEVA
CICE

P =
9.
hSubjekti

KNJI
ZEVNICE

10.
hPredikati

PJEVAJU

11.
hPredikati

PI
SU

12.
hObjekti

PJESME

13.
hObjekti

KNJIGE

14.
hAtributi

POZNATE

15.
hAtributi

LIJEPE

16.
hPrilogi

UVIJEK

17.
hPrilogi PONEKAD
Navedene neterminalne simbole iz skupa N smo stavili u zagrade hi kako bi smo
te simbole prikazali kao nedjeljive elemente,te kako bismo ih razlikovali od terminalnih simbola iz skupa koji c ine rjecnik jezika.Kao sto vidimo u skupu imamo
devet terminalnih simbola, ukljucujuci i simbol . (tacka) koji predstavlja oznaku kraja
recenice.Skup P sadrzi sedamnaest produkcijskih pravila.Primjenom produkcijskih pravila grade se recenice. Pravilo 1 specificira temeljni dio organizacije recenice.Pravila
2-7 specificiraju pravila za organizaciju subjekta,predikata i objekta,zajedno sa njihovim dodacima.Pravila 8-17 odreduju nacin na koji se neterminalni simboli preslikavaju
u terminalne simbole iz rijecnika odredenog prirodnog jezika.
U nastavku c emo dati nekoliko primjera izvodenja recenica koje pripadaju jeziku

L(G).Generiranje recenice PJEVACICE


PJEVAJU PJESME. koja pripada jeziku L(G)
koja je sastavljena od niza iskljucivo terminalnih simbola,opisujemo na sljedeci nacin:
hRecenicai hS ub jektniS kupihPredikatniS kupihOb jektniS kupi.
1

hS ub jektihPredikatniS kupihOb jektniS kupi.


3

hS ub jektihPredikatihOb jektniS kupi.


5

hS ub jektihPredikatihOb jekti.
7

PREDAVANJE 8. FORMALNA GRAMATIKA

91

PJEVACICEhPredikatihOb
jekti.
8

PJEVACICE
PJEVAJUhOb jekti.
10

PJEVACICE
PJEVAJU PJESME.
12

LIJEPE PJEGeneriranje recenice POZNATE KNJIZEVNICE


UVIJEK PISU
SME. koja takoder pripada jeziku L(G) opisujemo na sljedeci nacin:
hRecenicai hS ub jektniS kupihPredikatniS kupihOb jektniS kupi.
1

hAtributihS ub jektihPredikatniS kupihOb jektniS kupi.


2

hAtributihS ub jektihPrilogihPredikatihOb jektniS kupi.


4

hAtributihS ub jektihPrilogihPredikatihAtributihOb jekti.


6

hPOZNATEiS ub jekthhPrilogiPredikatihAtributihOb jekti.


14

hPOZNATE KNJIZEVNICEhPrilogihPredikatihAtributihOb
jekti.
9

hPOZNATE KNJIZEVNICE
UVIJEKhPredikatihatributihOb jekti.
16

POZNATE KNJIZEVNICE
UVIJEK PISUhAtributihOb
jekti.
11

LIJEPEhOb jekti.
POZNATE KNJIZEVNICE
UVIJEK PISU
15

LIJEPE PJESME.
POZNATE KNJIZEVNICE
UVIJEK PISU
12

KNJIGE.
Opisimo jos generiranje recenice POZNATE PJEVACICE
PONEKAD PISU
koja takoder pripada jeziku L(G):
hRecenicai hS ub jektniS kupihPredikatniS kupihOb jektniS kupi.
1

hAtributihS ub jektihPredikatniS kupihOb jektniS kupi.


2

hAtributihS ub jektihPrilogihPredikatihOb jektniS kupi.


4

hAtributihS ub jektihPrilogihPredikatihhOb jekti.


7

POZNATEhPrilogihPredikatihAtributihOb jekti.
14

POZNATE PJEVACICEhPredikatihAtributihOb
jekti.
8

POZNATE PJEVACICE
PONEKADhAtributihOb jekti.
17

POZNATE PJEVACICE
PONEKAD PISUhOb
jekti.
11

KNJIGE.
POZNATE PJEVACICE
PONEKAD PISU
13

Na kraju istaknimo da je formalizacija prirodnih jezika izuzetno komplicirana.Dapace,


mnogi lingvisti problematiziraju uopce ideju formalizacije prirodnih jezika,pri tome

PREDAVANJE 8. FORMALNA GRAMATIKA

92

isticuci neke bitne razlike izmedu prirodnih i formalnih jezika. Primjerice, prirodni
jezik se neprestano mijenja i prilagodava pa se postavlja pitanje koliko se njegovim
formaliziranjem zapravo zanemaruju dinamicnost i otvorenost prirodnih jezika. Nadalje prirodni jezici su viseznacni, povezani su s iskustvom i emocijama sugovornika,
kao i kontestom, pa dio lingvista smatra da se njegovom formalizacijom zapravo gubi
njegova univerzalnost.

8.2

Regularna gramatika

Regularna gramatika omogucava jos jedan nacin za specifikaciju regularnih jezika.

8.2.1

Desno-linearna i lijevo-linearna gramatika

Definicija 8.1. Za gramatiku G = (N, , P, S ) kazemo da je desno-linerna ako sve


produkcije iz skupa P imaju sljedeci oblik:
A wB,
A w,
gdje je A, B N, a w . S druge strane, za gramatiku G kazemo da je lijevolinearna ako sve produkcije iz skupa P imaju sljedeci oblik:
A Bw,
A w,
Za gramatiku koja je desno-linearna ili lijevo-linearna kazemo da je regularna gramatika.

Primijetimo da se u produkcijama regularne gramatike neterminalni simbol moze
pojaviti s desne strane najvise jednom. Osim toga, neterminalni simboli na desnoj
strani produkcija regularne gramatike moraju biti u svim produkcijama krajnji lijevi
simboli, ili pak u svim produkcijama moraju biti krajnji desni simboli.
Primjer 8.5. Gramatika
G1 = ({S }, {a, b}, P1 , S ),
gdje je skup produkcija P1 definiran na sljedeci nacin:
S abS | a
je desno-linearna gramatika.
S druge strane, gramatika:
G2 = ({S , A, B}, {a, b}, P2 , S )
gdje je skup produkcija P2 definiran na sljedeci nacin:

PREDAVANJE 8. FORMALNA GRAMATIKA

93

S Aab,
A Aab | B,
B a,
je lijevo-linearna gramatika. Dakako, gramatike G1 i G2 su regularne gramatike.
Razmotrimo npr. sljedeci postupak generiranja rijeci ababa na temelju gramatike G1 :
S abS ababS ababa

(8.1)

Lako zakljucujemo da je je jezik L(G1 ) definiran regularnim izrazom r1 :


r1 = (ab) a.
S druge strane, razmotrimo npr. postupak generiranja rijeci aababab na temelju gramatike G2 :
S Aab Aabab Aababab Bababab aababab
Jezik L(G2 ) je definiran regularnim izrazom r2 :
r2 = aab(ab) .

Primjer 8.6. Gramatika
G = ({S , A, B}, {a, b}, P, S ),
gdje je skup produkcija P definiran na sljedeci nacin:
S A,
A aB | ,
B Ab,
nije regularna gramatika. Naime, iako sve produkcije imaju desno-linearni ili lijevolinearni oblik, ipak gramatika G nije niti desno-linearna niti lijevo-linearna gramatika,
pa prema tome gramatika G nije regularna gramatika. Gramatike kod kojih se neterminalni simbol moze pojaviti s dese strane produkcije najvise jednom, bez obzira na
poziciju na kojoj se neterminalni simbol pojavljuje, nazivamo linearnom gramatikom.
Gramatika G je upravo primjer linearne gramatike. Primijetimo da je svaka regularna
gramatika istovremeno i linerana gramatika. S druge strane, sve linearne gramatike
nisu istovremeno i regularne gramatike.


PREDAVANJE 8. FORMALNA GRAMATIKA

8.3
8.3.1

94

Ekvivalentnost desno-linearne gramatike i regularnih jezika


Konstrukcija NKA za zadanu desno-linearnu gramatiku

Teorem 8.1. Neka je gramatika G = (N, , P, S ) desno-linearna gramatika. Tada je


L(G) regularan jezik.
Dokaz. Pretpostavimo da je skup neterminalnih simbola N = {A0 , A1 , A2 . . .}, pri c emu
je S = A0 . Nadalje, pretpostavimo da su produkcije sljedeceg oblika:
A0 v1 Ai
Ai v2 A j
...
An vl
...
Ako je w neka rijec iz jezika L(G), tada zbog oblika produkcija iz skupa P, postupak
generiranja rijeci w mora imati sljedeci oblik:
A0 v1 Ai
v1 v2 A j

(8.2)
(8.3)

v1 v2 . . . vk Ak

(8.4)

v1 v2 . . . vk vl = w

(8.5)

Konstruirajmo NKA koji simulira gore prikazani postupak izvodenja. Pocetno stanje NKA je oznaceno kao A0 . Nadalje, za svaki neterminalni simbol Ai uvedimo neprivatljivo stanje Ai . NKA konstruiramo tako da za produkciju oblika:
Ai a1 a2 . . . am A j ,
definiramo funkciju prijelaza tako da omogucimo prijelaz iz stanja Ai u stanje A j
c itanjem niza simbola a1 a2 . . . am . Odnosno, funkcija prijelaza treba biti definirana
tako da za njeno prosirenje vrijedi:
(Ai , a1 a2 . . . am ) = A j .
Nadalje, za svaku produkciju oblika:
Ai a1 a2 . . . am ,
NKA konstruiramo tako da vrijedi:
(Ai , a1 a2 . . . am ) = A f ,
gdje je A f neko prihvatljivo stanje. Nacin konstrukcije NKA na prethodno opisani
nacin je prikazan na slici 9.1.

PREDAVANJE 8. FORMALNA GRAMATIKA

Ai

a1

a2

95
am

...

Aj

(a) Prikaz produkcije Ai a1 a2 . . . am A j

Ai

a1

a2

...

am

Af

(b) Prikaz produkcije Ai a1 a2 . . . am

Slika 8.1: DKA koji prihvacaju jezike L1 i L2

Za zadanu desno-linearnu gramatiku konstruiramo NKA objedinjujuci pojedine dijelove koji su izgradeni na prethodno opisani nacin.
Pretpostavimo sada da vrijedi w L(G), pri c emu gramatika G generira rijec w na
nacin kako je to opisano izrazom 9.2. Tada NKA sadrzi putanju od A0 do Ai koja je
oznacena sa v1 , zatim putanju od Ai do A j koja je oznacena sa v2 , itd. Zakljucujemo da
tada vrijedi:
A f (A0 , w),
pa NKA M prihvaca rijec w.
S druge strane, pretpostavimo da automat M prihvaca rijec w. Imajuci na umu
nacin na koji je konstruiran NKA M, za prihvacanje rijeci w automat mora proci kroz
niz stanja A0 , Ai , . . . do stanja A f , koristeci putanje oznacene sa v1 , v2 , . . .. Prema tome,
rijec w mora imati sljedeci oblik:
w = v1 v2 vk vl .
Drugim rijecima, moguce je sljedece generiranje rijeci w:
A0 v1 Ai
v1 v2 V j

v1 v2 vk Vk
v1 v2 vk vl

Prema tome, vrijedi w L(G), te je time teorem dokazan.

Primjer 8.7. U ovom primjeru c emo konstruirati NKA koji prihvaca jezik L(G) kojeg
generira gramatika
G = ({A0 , A1 }, {a, b}, P, A0 ),
gdje skup P sadrzi sljedece produkcije:
A0 aA1
A1 babA0 | b.
Na temelju prethodno pisanog nacina konstrukcije NKA imamo sljedece:

PREDAVANJE 8. FORMALNA GRAMATIKA

96

Na temelju produkcije A0 aA1 omogucujemo prijelaz iz stanja A0 u stanje A1


c itanjem simbola a.
Na temelju produkcije A1 babA0 omogucujemo prijelaz iz stanja A1 u stanje
A0 c itanjem niza simbola bab.
Na temelju produkcije A1 b omogucujemo prijelaz iz stanja A1 u prihvatljivo
stanje A f c itanjem simbola b.
Objedinjavanjem gore prikazanih elemenata konstrukcije dobijamo NKA M koji je
prikazan na slici 9.4. Jezik kojeg generira gramatika G, odnosno jezik kojeg prihvaca
NKA M, opisan je regularnim izrazom:
(abab) ab.

A0

A1

Af

a
Slika 8.2: Konstruirani NKA za zadanu gramatiku G

8.3.2

Konstrukcija desno-linearne gramatike za zadani DKA

Za svaki zadani regularni jezik L moze se konstruirati desno-linearna gramatika koja


generira taj jezik. Naime, za svaki regularni jezik postoji DKA M koji prihvaca jezik L, pa c emo pokazati da se za svaki zadani DKA M moze konstruirati gramatika
G koja generira jezik L = L(G) = L(M). Pri opisu nacina konstrukcije gramatike G
za zadani DKA c emo koristiti slican pristup kao i pri opisu konstrukcije DKA za zadanu gramatiku u teoremu 9.1. Naime, opisani pristup u tom teoremu c emo zapravo
samo preokrenuti u suprotni smjer. Stanja DKA c e postati neterminalni simboli gramatike, dok c e ulazni simboli c ijim c itanje se primjenjuj odgovarajuci prijelazi postati
terminalni simboli u produkcijama.
Teorem 8.2. Neka DKA M = (Q, , , q0 , F) prihvaca neki regularni jezik L(M). Tada
postoji desno-linearna gramatika G = (N, , P, S ) koja generira jezik L(G) = L(M).
Dokaz. Pretpostavimo da je skup stanja Q DKA M sljedeci
Q = {q0 , q1 , . . . , qn }.
Nadalje, pretpostavimo da je alfabet DKA M definiran na sljedeci nacin:
= {a1 , a2 , . . . , am }.
Konstruirajmo desno-linearnu gramatiku G = (N, , P, S ) na sljedeci nacin:

PREDAVANJE 8. FORMALNA GRAMATIKA

97

Skup neterminalnih stanja N je:


N = {q0 , q1 , . . . , qn },
Za svaki prijelaz DKA M oblika:
(qi , a j ) = qk ,
u skup produkcija P dodajemo produkciju:
qi a j qk .
Osim toga, ako vrijedi qk F, tada u skup produkcija P dodajemo i produkcije
oblika:
qk .
pocetni simbol S = q0 .

Prvo c emo pokazati da gramatika G konstruirana na prethodno opisani nacin moze
generirati svaku rijec iz jezika L(M). Razmotrimo rijec w L(M) sljedeceg oblika:
w = ai a j ak al .
DKA M koji prihvaca rijec w mora primijeniti sljedece prijelaze:
(q0 , ai) = q p ,
(q p , ai) = qr ,
..
.
(q s , ak ) = qt
(qt , al ) = q f F.

Imajuci na umu nacin na koji je konstruirana gramatika G, imamo po jednu produkciju za svaki gore prikazani prijelaz. Prema tome, gramatika G omogucuje sljedece
izvodenje rijeci w:
q0 ai q p
ai a j qr

(8.6)
(8.7)

ai a j akql

(8.8)

ai a j ak al q f

(8.9)

ai a j ak al ,

(8.10)

pa zakljucujemo da vrijedi w L(G).

PREDAVANJE 8. FORMALNA GRAMATIKA

98

S druge strane, ako vrijedi w L(G), tada generiranje rijeci ima oblik 9.6, sto
zapravo podrazumijeva da vrijedi:
(q0 , ai a j ak al ) = q f .
Dakle, na temelju pretpostavke da vrijedi w L(G), dobili smo da takoder vrijedi
w L(M), te je time teorem dokazan.
Primjer 8.8. Neka je zadan DKA M:
M = ({q0 , q1 , q2 }, {a, b}, , q0 , {q0 , q2 }),
gdje je funkcija prijelaza zadana sljedecom tabelom:

q0

q1

q2

q1

q2

q1

q2

q0

q1

Tablica 8.1: Funkcija prijelaza za DKA M

Dijagram stanja DKA M je prikazan na slici 9.3.


b
b
a

q0

q1

q2
b

a
Slika 8.3: Dijagram stanja DKA za koji konstruiramo gramatiku G

Gramatiku G konstruiramo na sljedeci nacin:


Skup neterminalnih simbola gramatike N je jednak skup stanja DKA M, tj. N =
{q0 , q1 , q2 }
Skup terminalnih simbola je jednak ulaznom alfabetu DKA M
Produkcije iz skupa P se grade na temelju prijelata DKA M. Naprimjer, gradi se
produkcija q0 aq1 , jer DKA M prelazi iz stanja q0 u stanje q1 c itanjem simbola
a. Nadalje, gradi se produkcija q0 bq2 , jer DKA M prelazi iz stanja q0 u stanje
q2 c itanjem simbola b. Opisani postupak izgradnje produkcija se nastavlja i za
sve ostale prijelaze DKA M. Buduci da su stanja q0 i q2 prihvatljiva stanja, grade
se i produkcije q0 i q2 .

PREDAVANJE 8. FORMALNA GRAMATIKA

99

Na temelju prethodno opisanog postupka konstruiramo gramatiku G:


G = ({q0 , q1 , q2 }, {a, b}, P, q0 ),
gdje skup P sadrzi sljedece produkcije:
q0 aq1
q0 bq2
q1 aq2
q1 bq1
q2 aq0
q2 bq1
q0
q2

Naprimjer, DKA M prihvaca rijec abbba jer vrijedi:


(q0 , abbba) = q2 ,
gdje je q2 prihvatljivo stanje. S druge strane, konstruirana gramatika G generira rijec
abbba na sljedeci nacin:
q0 aq1
abq1
abbq1
abbbq1
abbbaq2
abbba = abbba

8.4

Ekvivalentnost lijevo-linearne gramatike i regularnih jezika

Prethodno prikazani teoremi uspostavlaju vezu izmedu regularnih jezika i desno-linearnih


gramatika. Slicna veza se moze uspostaviti i izmedu regularnih jezika i lijevo-linearnih
gramatika, pa se na taj nacin zapravo moze pokazati potpuna ekvivalentnost izmedu
regularnih jezika i regularnih gramatika.

PREDAVANJE 8. FORMALNA GRAMATIKA

8.4.1

100

Konstrukcija -NKA za zadanu lijevo-linearnu gramatiku

Teorem 8.3. Za svaki jezik L(G) zadan nekom lijevo-linearnom gramatikom G =


(, N, P, S ) postoji neki -NKA M koji prihvaca jezik L(M) = L(G). Drugim rijecima,
svaki jezik kojeg generira lijevo-linearna gramatika G je regularan jezik.
Dokaz. Neka je zadana lijevo-linearna gramatika G = (, N, P, S ). Konstruiramo NKA M koji prihvaca jezik L(M) = L(G) na sljedeci nacin:
1. Prvo konstruiramo desno-linearnu gramatiku G1 = (, N, P1 , S ), gdje se skup
produkcija P1 dobija tako da se preurede produkcije P gramatike G na sljedeci
nacin:
Produkcije lijevo-linearne gramatike G oblika
A Bw
se preurede u produkcije oblika
A wR B.
Produkcije lijevo-linearne gramatike G oblika
Aw
se preurede u produkcije oblika
A wR .
Ovako konstruirana desno-linearna gramatika G1 generira reverzne rijeci iz jezika L(G), tj. vrijedi:
L(G1 ) = L(G)R
(8.11)
2. Na temelju konstruirane desno-linearne gramatike G1 konstruiramo NKA M1
koji prihvaca jezik:
L(M1 ) = L(G1 ).
(8.12)
3. Na temelju NKA M1 konstruiramo -NKA M koji prihvaca jezik:
L(M) = L(M1 )R ,

(8.13)

na sljedeci nacin:
Preuredujemo NKA M tako da ima samo jedno prihvatljivo stanje. Naime,
ako NKA M ima vise prihvatljivih stanja, tada se dodaje novo i jedinstveno
prihvatljivo stanje, kao i -prijelazi iz svih prijasnjih prihvatljivih stanja u
novo prihvatljivo stanje. Stara prihvatljiva stanja vise nisu prihvatljiva, pa
ostaje samo jedno novo prihvatljivo stanje koje smo dodali.
Za pocetno stanje -NKA M 0 se uzima prihvatljivo preuredenog NKA M.

PREDAVANJE 8. FORMALNA GRAMATIKA

101

Za prihvatljivo stanje -NKA M 0 se uzima pocetno stanje preuredenog


NKA M
Funkcija prijelaza NKA M 0 se definira tako da se na dijagramu stanja
preuredenog NKA M obrne smjer usmjerenih grana.
Iz izraza 9.11,9.12 i 9.13 imamo:
L(M) = L(M1 )R
= L(G1 )R
= (L(G)R )
= L(G)
Dakle, konstruirani -NKA M prihvaca jezik L(G).

Primjer 8.9. Neka je zadana lijevo-linearna gramatika:


G = ({S }, {a, b}, P, S ),
gdje skup P sadrzi sljedece produkcije:
S S baa | b
Gramatika G generira jezik opisan regularnim izrazom b(baa)
Konstruiramo -NKA za zadanu gramatiku G na sljedeci nacin:
1. Prvo izgradujemo desno-linearnu gramatiku:
G1 = ({S }, {a, b}, P1 , S ),
gdje skup P1 sadrzi sljedece produkcije:
S aabS | b
Skup P1 smo dobili odgovarajucim preuredivanjem produkcija iz skupa P u
skladu s postupkom opisanim u teoremu 9.3. Gramatika G1 generira jezik opisan
regularnim izrazom (aab) b.
2. Na temelju izgradene desno-linearne gramatike G1 konstruiramo NKA M1 koji
prihvaca jezik L(M1 ) = L(G1 ). Konstruirani NKA M1 je prikazan na slici 9.4a.
3. Konstruiramo NKA M koji prihvaca jezik opisan regularnim izrazom b(baa) ,
tako da obrnemo smjer usmjerenih grana na dijagramu stanja NKA M1 (slika
9.4a), te zamijenimo ulogu pocetnog i prihvatljivog stanja. Konstruirani NKA
M je prikazan na slici 9.4b.

PREDAVANJE 8. FORMALNA GRAMATIKA


a

S
b

102

a
b

(a) NKA koji prihvaca jezik L(G1 )

(b) NKA koji prihvaca jezik L(G)

Slika 8.4: Konstrukcija NKA M iz NKA M1

8.4.2

Konstrukcija lijevo-linearne gramatike iz zadanog NKA

Teorem 8.4. Ako je zadan neki NKA M koji prihvaca jezik L(M), tada postoji lijevolinearna gramatikom G = (, N, P, S ) koja generira jezik L(G) = L(M). Drugim
rijecima, za svaki zadani regularni jezik L postoji lijevo-linearna gramatika G0 koja
generira taj jezik.
Dokaz. Lijevo-linearnu gramatiku za jezik L(G) konstruiramo na sljedeci nacin:
1. Konstruira se -NKA M1 iz zadanog NKA M koji prihvaca jezik:
L(M1 ) = L(M)R .
2. Na temelju izgradenog -NKA M1 konstruiramo desno-linearnu gramatiku G1 =
(, N, P1 , S ), takvu da vrijedi:
L(G1 ) = L(M1 ) = L(M)R .

(8.14)

3. Konstruiramo lijevo-linearnu gramatiku G = (, N, P, S ), gdje se skup produkcija P dobija tako da se preurede produkcije iz skupa P1 desno-linearne gramatike G1 na sljedeci nacin:
Produkcije desno-linearne gramatike G1 oblika
A wB
se preurede u produkcije oblika
A BwR .
Produkcije desno-linearne gramatike G1 oblika
Aw
se preurede u produkcije oblika
A wR .

PREDAVANJE 8. FORMALNA GRAMATIKA

103

Ovako konstruirana lijevo-linearna gramatika G generira reverzne rijeci iz jezika


L(G1 ), tj. vrijedi:
L(G) = L(G1 )R
(8.15)
Uzimajuci u obzir 9.14 i 9.15 imamo:
L(G) = L(G1 )R
= L(M1 )R
= (L(M)R )R
= L(M)

Kombinirajuci teoreme 9.1, 9.2, 9.3 i 9.4 dobijamo teorem 9.5 kojm izrazavamo
ekvivalentnost izmedu regularnih jezika, lijevo-linearne gramatike, desno-linearne
gramatike i regularne gramatike.
Teorem 8.5. Vrijede sljedece tvrdnje:
Jezik L je regularan ako i samo ako postoji desno-linearna gramatika G takva
da vrijedi L = L(G).
Jezik L je regularan ako i samo ako postoji lijevo-linearna gramatika G takva da
vrijedi L = L(G).
Jezik L je regularan ako i samo ako postoji regularna gramatika G takva da
vrijedi L = L(G)
Dokaz. Uzimajuci u obzir teoreme 9.1 i 9.2 zakljucujemo da vrijedi tvrdnja (a). Nadalje, uzimajuci u obzir teoreme 9.3 i 9.4 zakljucujemo da vrijedi tvrdnja (b). Konacno,
uzimajuci u obzir tvrdnje (a) i (b), te definiciju regularne gramatike 9.1, zakljucujemo
da vrijedi tvrdnja (c).

.

Predavanje 9

Kontekstno neovisni jezici


Kao sto smo prethodno vidjeli produkcije regalarne gramatike moraju s lijeve strane
imati tacno jedan neterminalni simbol, dok desna strana mora imati odgovarajuci oblik.
Da bismo kreirali gramatike koje mogu generirati siri skup od klase regularnih jezika,
u odredenoj mjeri c emo relaksirati zahtjeve na oblik produkcija. Naime, zahtjev da se s
lijeve strane produkcije nalazi tacno jedan neterminalni simbol c emo ostaviti. S druge
strane, s desne strane c emo omoguciti da se moze nalaziti proizvoljan niz sastavljen od
terminalnih i neterminalnih simbola. Na taj nacin c emo dobiti tzv. kontekstno neovisnu
gramatiku.
Definicija 9.1. Kontekstno neovisna gramatika G je c etvorka:
G = (N, , P, S ),
gdje je:
N konacan skup neterminalnih simbola
konacan skup terminalnih znakova, N =
P konacan skup produkcija oblika A , gdje vrijedi:
A N, (N ) ,
S pocetni neterminalni simbol, S N
Za neki jezik L kazemo da je kontekstno neovisni jezik ako i samo ako postoji
kontekstno neovisna gramatika G, takva da vrijedi L = L(G).

Primijetimo da se s lijeve strane produkcija kontekstno neovisne gramatike uvijek
nalazi tacno jedan neterminalni simbol iz skupa N. Pri generiranju neke rijeci produkcije navedenog oblika se mogu primijeniti na nizove simbola iz skupa (N ) koji
sadrze tu varijablu bez obzira na kontekst. Naime, navedena definicija podrazumijeva

103

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

104

da u procesu generiranja neke rijeci pri primjeni produkcije A postoje nizovi


1 , 2 i iz skupa (N ) , takvi da vrijedi:
1 A2 1 2 .
Drugim rijecima, niz 1 2 se moze dobiti u jednom koraku iz niza 1 A2 primjenom
produkcije A , pri c emu smo navedenu produkciju primijenili bez obzira na nizove
1 i 2 , tj. bez obzira na kontekst u kojem se nalazi neterminalni simbol A.
Primjer 9.1. Neka je zadana sljedeca kontekstno neovisna gramatika G:
G = ({S }, {a, b}, P, S ),
gdje skup P sadrzi sljedece produkcije:
S aS b,
S
Naprimjer, gramatika G generira rijec aaabbb na sljedeci nacin:
S aS b aaS bb aaaS bbb aaabbb.
Lako zakljucujemo da gramatika G zapravo generira jezik:
L(G) = {an bn | n 0}.

Jezik L(G) je konteksto neovisni jezik, ali kao sto je pokazano u primjeru 7.1 nije
regularan jezik.
Primjer 9.2. Neka je zadana sljedeca kontekstno neovisna gramatika G:
G = ({S }, {a, b}, P, S ),
gdje skup P sadrzi sljedece produkcije:
S aS a,
S bS b,
S
Naprimjer, gramatika G generira rijec bbaabb na sljedeci nacin:
S bS b bbS bb bbaS abb bbaabb.
Lako zakljucujemo da gramatika G zapravo generira jezik:
L(G) = {wwR | w {a, b} }.


PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

9.1
9.1.1

105

Generativno stablo, postupci generiranja rijeci i nejednoznacnost


Generativno stablo

Drugi nacin za prikaz generiranja rijeci je pomocu tzv. generativnog stabla. Generativno stablo je uredeno stablo kod kojeg su c vorovi oznaceni neterminalnim simbolima
koji se nalaze na lijevim stranama produkcija, dok su djeca oznacena simbolima koji
se nalaze sa desne strane odgovarajuce produkcije. Pocevsi od korijena koji je oznacen
pocetnim simbolom, generativno stablo prikazuje nacin na koji se neterminalni simboli
zamjenjuju u procesu generiranja neke rijeci. U nastavku je data precizna definicija generativnog stabla.
Definicija 9.2. Neka imamo kontekstno neovisnu gramatiku G = (N, , P, S ). Za
neko stablo kazemo da je generativno stablo gramatike G ako i samo ako zadovoljava
sljedeca svojstva:
(i) Korijen generativnog stabla je S .
(ii) Svaki c vor dijete u stablu ima oznaku iz skupa {}.
(iii) Svaki c vor koji nije list ima oznaku iz skupa N.
(iv) Ako neki c vor ima oznaku A N, a njegova djeca su oznacena s lijeva na desno
kao a1 a2 , . . . . . . an , ai ( N {}), tada skup P mora sadrzavati produkciju
sljedeceg oblika:
A a1 a2 . . . . . . an

(v) Cvor
koji ima dijete oznaceno sa ne moze imati vise djece. Drugim rijecima,
c vor oznacen sa nema brace.

Razmotrimo kontekstno neovisnu gramatiku G1 = ({S , A, B}, {a, b}, P1 , S ), gdje je
skup produkcija P1 sljedeci:
S AB
A aA | a
B bB | b
Niz simbola aabbb se moze npr. generirati na sljedeci nacin:
S AB AbB AbbB Abbb aAbbb aabbb

(9.1)

Proces izgradnje generativnog stabla kojim se graficki prikazuje postupak generiranja


9.1 je ilustriran na slici 9.1. Proces zapocinje od korijena koji je oznacen pocetnim simbolom S koji generira c vorove djecu koja su oznacena sa A i B (slika 9.1a). Preostali dio
procesa izgradnje generativnog stabla sukladno postupku generiranja 9.1 je prikazan na

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

106

slikama 9.1b - 9.1f. Konacno generativno stablo je prikazano na slici 9.1f. Primijetimo

da su svi c vorovi listovi oznaceni terminalnim simbolima iz skupa . Citanjem


slijeva
na desno simbola kojim su oznaceni listovi dobijamo rijec aabbb. Primijetimo takoder
da svakom podstablu sa korijenom u nekom od c vorova odgovaraju odredene podrijeci
rijeci aabbb. Primjerice, c itanjem simbola slijeva na desno u listovima podstabla sa
korijenom u c voru B koji se nalazi na prvom nivou dobijamo podrijec bbb.
S

(a) S AB

(b) AB AbB

(c) AbB AbbB

S
A

A
a

B
A b

B
b

B
b

(d) AbbB Abbb

(e) Abbb aAbbb

S
A
a

B
A b
a

B
b

B
b

(f) aAbbb aabbb

Slika 9.1: Izgradnja generativnog stabla za kontektno neovisnu gramatiku G1

Osim toga, istaknimo da postoje i drugi postupci generiranja za rijec aabbb, pri

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

107

c emu tim postupcima odgovara isto generativno stablo kao na slici 9.1f. Razmotrimo
npr. sljedeci postupak:
S AB aAB aAbB aAbbB aAbbb aabbb

(9.2)

Lako mozemo vidjeti da primjenom postupka generiranja 9.2 izgradujemo isto finalno
generativno stablo (slika 9.1f) kao i primjenom postupka 9.1. Pogledajmo jos jedan
primjer postupka generiranja za istu rijec:
S AB aAB aaB aabB aabbB aabbb

(9.3)

Istaknimo da i postupak 9.3 izgraduje isto generativno stablo. Naime, mozemo reci da
c e za gramatiku G1 i za rijec aabbb zapravo svaki postupak generiranja izgraditi isto
generativno stablo.

9.1.2

Generiranje rijeci zamjenom krajnje lijevog ili krajnje desnog neterminalnog simbola

Medutim, treba naglasiti da to ne mora vrijediti u svim situacijama, sto c emo ilustrirati
sljedecim primjerom. U tu svrhu razmotrimo gramatiku
G2 = ({S }, {a, b, c}, P2 , S ),
gdje skup P2 sadrzi sljedece produkcije:
S S bS | S cS | a
Rijec abaca mozemo generirati na sljedeca dva nacina:
S S cS S bS cS abS cS abacS abaca

(9.4)

S S bS S bS cS S bS ca S baca abaca

(9.5)

Za postupak 9.4 imamo generativno stablo kao na slici 9.2, dok je na slici 9.3 prikazano
generativno stablo za postupak 9.5.
S

S
a

Slika 9.2: Generativnog stablo za postupak 9.4

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

108

S
S

S
a

Slika 9.3: Generativnog stablo za postupak 9.5

Dakle, iako se postupci 9.4 i 9.5 odnose na istu rijec abaca, ipak za ta dva postupka
imamo dva razlicita generativna stabla.
Prema tome, mozemo zakljuciti da u odredenim situacijama razliciti postupci mogu
izgraditi isto generativo stablo, dok pak u drugim situacijama razliciti postupci mogu
izgraditi razlicita stabla. Osim toga, primijetimo da smo kod postupka 9.4 u svim
koracima mijenjali krajnji lijevi neterminalni simbol, dok smo kod postupka 9.5 u svim
koracima mijenjali krajnji desni neterminalni simbol. Zapravo, mozemo reci da se kod
postupka generiranja rijeci prakticno najcesc e koriste sljedeca dva postupka:
generiranje rijeci zamjenom krajnjeg lijevog neterminalnog simbola
generiranje rijeci zamjenom krajnjeg desnog neterminalnog simbola
Postupak generiranja rijeci zamjenom krajnjeg lijevog neterminalnog simbola je postupak u kojem se produkcije primjenjuju iskljucivo na krajnje lijeve neterminalne simbole. Primjer takvog nacina generiranja rijeci je postupak 9.4. Postupak generiranja
rijeci zamjenom krajnjeg desnog neterminalnog simbola je postupak u kojem se produkcije primjenjuju iskljucivo na krajnje desne neterminalne simbole. Primjer takvog
nacina generiranja rijeci je postupak 9.5.
Sada razmotrimo sljedeca nova dva postupka generiranja iste rijeci abaca:
S S bS abS abS cS abacS abaca

(9.6)

S S cS S ca S bS ca S baca abaca

(9.7)

Postupak 9.6 predstavlja generiranje rijeci zamjenom krajnjeg lijevog neterminalnog


simbola, dok postupak 9.7 predstavlja generiranje rijeci zamjenom krajnjeg desnog
simbola. Medutim, postupak 9.6 c e za razliku od postupka 9.4, koji je takoder postupak zamjene krajnjeg lijevog neterminalnog simbola, izgraditi stablo prikazano na slici
9.3. S druge pak strane, postupak 9.7 c e za razliku od postupka 9.5, koji je takoder
postupak zamjene krajnjeg desnog neterminalnog simbola, izgraditi generativno stablo
prikazano na slici 9.2.

9.1.3

Generativno stablo, interpretacija generirane rijeci i nejednoznacnost

Generativna stabla koja se izgraduju u procesu generiranja neke rijeci imaju vaznu
ulogu pri interpretaciji te rijeci. Naime, mogucnost izgradnje vise razlicitih generativ-

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

109

nih stabala za neku rijec kao posljedicu ima nejednoznacnost pri interpretaciji te rijeci.
Razmotrimo gramatiku
G3 = ({E}, {1, 2, 3, 4, 5, 6, 7, 8, 9, }, P3 , E),
gdje skup P3 sadrzi sljedece produkcije:
1.E E E
2.E 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Sljedeci postupak predstavlja primjer generiranja niza simbola 8 1 5 zamjenom
krajnjeg lijevog neterminalnog simbola:
E E E E E E 8 E E 8 1 E 8 1 5.

(9.8)

Prema tome, primijenili smo sljedeci redoslijed produkcija: 1-1-2-2-2. Na slici 9.4 je
prikazano generativno stablo za postupak 9.8 .
E

E
8

Slika 9.4: Generativnog stablo za postupak 9.8

Niz 8 1 5 mozemo generirati primjenom jos jednog postupka zamjenom krajnjeg


lijevog neterminalnog simbola:
E E E 8 E 8 E E 8 1 E 8 1 5.

(9.9)

Dakle, primijenili smo sljedeci redoslijed produkcija 1-2-1-2-2. Na slici 9.5 je prikazano generativno stablo za postupak 9.9. Primijetimo da se generativna stabla prikazana na slikama 9.4 i 9.5 razlikuju, iako su oba stabla izgradena zamjenom krajnjeg
lijevog neterminalnog simbola za istu gramatiku i za isti niz simbola 8 1 5, ali
primjenom razlicitih redoslijeda produkcija.

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

110

E
E

E
5

Slika 9.5: Generativnog stablo za postupak 9.9

Sada razmotrimo sljedeci postupak koji predstavlja primjer generiranja niza simbola 8 1 5 zamjenom krajnjeg desnog neterminalnog simbola:
E E E E E E E E 5 E 1 5 8 1 5.

(9.10)

Na postupak 9.10 smo primijenili redoslijed produkcija 1-2-1-2-2, koji je isti kao i kod
postupka 9.9. Generativno stablo za postupak 9.10 je prikazano na slici 9.4. Dakle,iako
smo primijenili isti redoslijed produkcija kao i kod postupka 9.9, ipak nismo dobili isto
generativno stablo. Prema tome, razlika kod postupaka 9.9 i 9.10 nije u razlicitim
redoslijedima primjene produkcija, nego u razlicitim redoslijedima neterminalnih simbola na kojima se primjenjuju produkcije. Dok smo kod postupka 9.9 u svim koracima
koristili zamjenu krajnjeg lijevog neterminalnog simbola, kod postupka 9.10 smo u
svim koracima pak koristili zamjenu krajnjeg desnog neterminalnog simbola.
Na kraju, razmotrimo jos jedan postupak generiranja za niz simbola 8 1 5
primjenom zamjene krajnjeg desnog neterminalnog simbola:
E E E E 5 E E 5 E 1 5 8 1 5.

(9.11)

Kao sto vidimo, kod postupka 9.11 smo primijenili redoslijed produkcija 1-1-2-2-2,
koji je isti kao i kod postupka 9.8. Generativno stablo za postupak 9.11 je prikazano na
slici 9.5, te kao sto mozemo vidjeti, razlikuje se od generativnog stabla za postupak 9.8,
iako smo kod oba spomenuta postupka primijenili isti redoslijed produkcija. Medutim,
postupci 9.8 i 9.11 razlikuju se u redoslijedu neterminalnih simbola na koje se primjenjuju produkcije, sto je u ovom slucaju rezultiralo izgradnjom razlicitih generativnih
stabala.
Generativno stablo utice na interpretaciju generiranog niza terminalnih simbola.
Pretpostavimo da niz simbola 8 1 5 predstavlja neki aritmeticki izraz, pri c emu
simbol oznacava neki binarni operator. Izgradeno generativno stablo u ovom slucaju
utice na interpretaciju na nacin da svojom strukturom definira prednost operatora. Naime, izrazi u zajednickom podstablu se pri interpretaciji grupiraju zajedno. Uz pretpostavku da grupiranje oznacimo zagradama (), tada generativno stablo za aritmeticki
izraz 8 1 5, prikazano na slici 9.4, sugerira sljedecu interpretaciju:
(8 1) 5.

(9.12)

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

111

Ovakvo grupiranje terminalnih simbola podrazumijeva prvo primjenu operatora na


brojeve 8 i 1, a zatim primjenu istog operatora na dobiveni rezultat i na broj 5.
S druge strane, generativno stablo prikazano na slici 9.5 sugerira sljedecu interpretaciju:
8 (1 5).
(9.13)
Mozemo vidjeti da gornja interpretacija podrazumijeva primjenu operatora prvo na
brojeve 1 i 5, a zatim primjenu istog operatora na broj 8 i prethodno dobiveni rezultat.
Dakako, postoje situacije kada nacin grupiranja, odnosno nacin interpretacije, nema
utjecaja na krajnji rezultat. Primjer takve situacije bi npr. mogla biti situacija u kojoj
operator predstavlja npr. operator zbrajanja +. S druge strane, ako operator predstavlja npr. operator oduzimanja ili dijeljenja :, tada nacin grupiranja utice na krajnji
rezultat.

9.1.4

Nejednoznacnost kontekstno neovisne gramatike

U prethodnom odjeljku smo ilustrirali razlicite moguce situacije pri generiranju neke
rijeci za zadanu gramatiku. Primjerice, produkcije gramatike G1 generiraju rijec aabbb
tako da se izgraduje uvijek isto generativno stablo (slika 9.1f, bez obzira na primjenu
razlicitih postupaka generiranja. S druge pak strane, primjenom produkcija gramatike
G2 pri generiranju rijeci abaca smo imali situaciju gdje razliciti postupci zamjenom
krajnjeg lijevog neterminalnog simbola, kao uostalom i razliciti postupci zamjenom
krajnjeg desnog neterminalnog simbola, izgraduju razlicita generativna stabla. Slicnu
situaciju smo imali i pri opisu postupaka generiranja niza simbola 8 1 5 primjenom
produkcija gramatike G3 .
Opcenito, moze se pokazati da neko zadano generativno stablo nije moguce izgraditi primjenom vise razlicitih postupaka generiranja rijeci zamjenom krajnje lijevog
neterminalnog simbola, odnosno primjenom vise razlicitih postupaka generiranja rijeci
zamjenom krajnje desnog neterminalnog simbola. Uzimajuci u obzir prethodno receno,
mozemo pisati sljedece tvrdnje:
Bilo koje generativno stablo moguce je izgraditi primjenom jednog i samo jednog postupka generiranja niza zamjenom krajnjeg lijevog neterminalnog simbola.
Bilo koje generativno stablo moguce je izgraditi primjenom jednog i samo jednog postupka generiranja niza zamjenom krajnjeg desnog neterminalnog simbola.
Drugim rijecima, postojanje dva i vise razlicitih generativnih stabala podrazumijeva
postojanje dva i vise razlicitih postupaka generiranja rijeci zamjenom krajnjeg lijevog
neterminalnog simbola, kao i postojanje postojanje dva i vise razlicitih postupaka generiranja rijeci zamjenom krajnjeg desnog neterminalnog simbola. Upravo mogucnost
izgradnje dva ili vise generativnih stabala za neku gramatiku G koristimo za definiciju
nejednoznacnosti kontekstno neovisne gramatike.
Definicija 9.3. Za neku gramatiku G kazemo da je nejednoznacna ako je za neku rijec
w L(G) moguce izgraditi vise razlicitih generativnih stabala. Osim toga, uzimajuci u

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

112

obzir prethodno navedene tvrdnje, nejednoznacnost gramatike mozemo definirati i na


sljedece nacin:
Za neku gramatiku G kazemo da je nejednoznacna ako je neku rijec w L(G)
moguce generirati primjenom vise razlicitih postupaka generiranja zamjenom
krajnjeg lijevog neterminalnog simbola.
Za neku gramatiku G kazemo da je nejednoznacna ako je neku rijec w L(G)
moguce generirati primjenom vise razlicitih postupaka generiranja zamjenom
krajnjeg desnog neterminalnog simbola.

Gramtika G2 prikazana u prethodnom odjeljku je nejednoznacna gramatika, jer
je moguce izgraditi dva generativna stabla za rijec abaca. Naime, stablo prikazano
na slici 9.2 moguce je izgraditi primjenom dva postupka generiranja niza zamjenom
krajnje lijevog neterminalnog simbola (postupci 9.4 i 9.6). Stablo prikazano na slici
9.3 je moguce izgraditi primjenom dva postupka generiranja niza zamjenom krajnjeg
desnog neterminalnog simbola (postupci 9.5 i 9.8).
Slicnu situaciju smo imali i sa gramatikom G3 , jer je i za ovu gramatiku moguce izgraditi dva generativna stabla za rijec 8 1 5. Naime, generativno stablo prikazano na
slici 9.4 moguce je izgraditi primjenom dva postupka generiranja niza zamjenom krajnje lijevog neterminalnog simbola (postupci 9.8 i 9.9). Generativno stablo prikazano
na slici 9.5 je moguce izgraditi primjenom dva postupka generiranja niza zamjenom
krajnjeg desnog neterminalnog simbola (postupci 9.10 i 9.11).
U nastavku c emo definirati jos i pojmove nejednoznacnosti rijeci w i nejednoznacnosti
jezika L.
Definicija 9.4. Ako je za neku rijec w L(G) moguce izgraditi vise razlicitih generativnih stabala, onda je rijec w nejednoznacna za zadanu gramatiku G

Naprimjer, rijec aabbb gramatike G1 je jednoznacna, jer za tu rijec mozemo izgraditi samo jedno generativno stablo, kao sto je opisano u prethodnom odjeljku.
Definicija 9.5. Jezik L(G) je inherentno nejednoznacan ako ga nije moguce generirati
niti jednom jednoznacnom gramatikom G.


9.1.5

Promjena gramatike

Razmotrimo ponovno nejednoznacnu gramatiku


G3 = ({E}, {1, 2, 3, 4, 5, 6, 7, 8, 9, }, P3 , E),
gdje skup P3 sadrzi sljedece produkcije:
E E E
E 1|2|3|4|5|6|7|8|9
Jezik L(G3 ) je moguce takoder generirati i primjenom vise razlicitih jednoznacnih gramatika.

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

113

Za lijevo asocijativni operator se koristi tzv. lijeva rekurzija. Razmotrimo gramtiku


G4 = ({E, T }, {1, 2, 3, 4, 5, 6, 7, 8, 9, }, P4 , E)
gdje skup P4 sadrzi sljedece produkcije:
E E T |T
T 1|2|3|4|5|6|7|8|9
Niz simbola 8 1 5 moguce je generirati sljedecim postupkom generiranja rijeci
zamjenom krajnjeg lijevog neterminalnog simbola:
E E T E T T T T T 8 T T 8 1 T 8 1 5 (9.14)
Postupak 9.14 je jedini moguci postupak generiranja rijeci zamjenonom krajnjeg lijevog neterminalnog simbola, a generativno stablo koje izgraduje ovaj postupak je prikazano na slici 9.6.
E

8
Slika 9.6: Generativnog stablo za postupak 9.14

Nadalje, niz simbola 8 1 5 je takoder moguce generirati sljedecim postupkom


generiranja rijeci zamjenom krajnjeg desnog neterminalnog simbola:
E E T E 5 E T 5 E 1 5T 1 58 1 5

(9.15)

Postupak 9.15 je jedini moguci postupak generiranja rijeci zamjenom krajnjeg desnog
neterminalnog simbola. Ovaj postupak gradi isto generativno stablo (slika 9.6) kao i
postupak 9.14.
Za desno asocijativni operator se koristi tzv. desna rekurzija. Razmotrimo gramtiku
G5 = ({E, T }, {1, 2, 3, 4, 5, 6, 7, 8, 9, }, P5 , E),
gdje skup P5 sadrzi sljedece produkcije:
E T E|T
T 1|2|3|4|5|6|7|8|9

PREDAVANJE 9. KONTEKSTNO NEOVISNI JEZICI

114

Niz simbola 8 1 5 moguce je generirati sljedecim postupkom generiranja rijeci


zamjenom krajnjeg lijevog neterminalnog simbola:
E T E 8 E 8 T E 8 1E 8 1 T 8 1 5

(9.16)

Postupak 9.16 je jedini moguci postupak generiranja rijeci zamjenom krajnjeg lijevog
neterminalnog simbola, a generativno stablo koje izgraduje ovaj postupak je prikazano
na slici 9.7.
E
T

E
T
5

Slika 9.7: Generativnog stablo za postupak 9.16

Nadalje, niz simbola 8 1 5 je takoder moguce generirati sljedecim postupkom


generiranja rijeci zamjenom krajnjeg desnog neterminalnog simbola:
E T E T T E T T T T T 5 T 1 5 8 1 5 (9.17)
Postupak 9.17 je jedini moguci postupak generiranja rijeci zamjenom krajnjeg desnog
neterminalnog simbola. Ovaj postupak izgraduje isto generativno stablo (slika 9.7) kao
i postupak 9.16.
Prema tome, prethodno primjeri promjene nejednoznacne gramatike G3 u jednoznacne
gramatike G4 i G5 , pokazuju da je moguce generirati jezik L(G3 ) primjenom dvije
razlicite jednoznace gramatike, tako da vrijedi L(G3 ) = L(G4 ) = L(G5 ). Gramatika G3
je transformirana u gramatiku G4 na nacin da gramatika G4 pri generiranju neke rijeci
izgraduje generativno stablo koje omogucuje interpretaciju rijeci podrazumijevajuci lijevo asocijativni operator . S druge pak strane, gramatika G3 je transformirana u
gramatiku G5 na nacin da gramatika G5 pri generiranju neke rijeci izgraduje generativno stablo koje omogucuje interpretaciju rijeci podrazumijevajuci desno asocijativni
operator .

Predavanje 10

Potisni automat
U prethodnom poglavlju smo vidjeli da kontekstno neovisne gramatike zapravo prosiruju
mogucnosti specifikacije formalnih jezika na nacin da omogucuju definiranje i jezika
koje konacni automati ne mogu prihvacati. Naglasimo da pod terminom konacni automati podrazumijevamo deterministicke konacne automate (DKA), nedeterministicke
konacne automate (NKA), kao i nedeterministicke konacne automate s -prijelazima
(-NKA). U ovom poglavlju c emo upravo opisati automate koji omogucuju prihvacanje
svih kontekstno neovisnih jezika. Neformalno govoreci, mozemo reci da konacne automate zapravo limitiraju memorijske mogucnosti. Za razliku od konacnih automata,
u ovom poglavlju uvodimo novi model automata koji ukljucuje izmedu ostalog i stek,
koji na neki nacin ima ulogu pomocne memorije. Taj model automata c emo nazivati
potisni automat (eng. Pushdown automata). Na slici 10.1 je upravo prikazan model
potisnog automata (PA).
...

Glava za c itanje
sa ulazne trake
(pomjera se desno)

Glava za
c itanje sa
vrha steka
Xm

q3

Xm1
Xm2
...
X1

. . . Ulazna traka

b b a a a a

..

q2

qn
q1

q0

Upravljacka jedinica

X0
Stek

Slika 10.1: Model potisnog automata

115

PREDAVANJE 10. POTISNI AUTOMAT

116

Glava za c itanje sluzi da upravljackoj jedinici omoguci c itanje simbola sa ulazne


trake. Osim toga, upravljacka jedinica takoder c ita i simbole sa vrha steka. Nakon
c itanja simbola s vrha steka se uzima procitani simbol, a na vrh steka se stavlja niz
simbola. Simbole sa ulazne trake c emo nazivati ulazni simboli, a simbole na steku
c emo nazivati simboli steka. Upravljacka jedinica moze biti u jednom od konacnog
broja stanja. Stanja mogu biti prihvatljiva stanja ili neprihvatljiva stanja. Za razliku od modela konacnog automata koji je opisan u prethodnim poglavljima, kod kojeg
smo kao pocetni model uveli model deterministickog konacnog automata, kod potisnog
automata c emo kao pocetni model uvesti nedeterministicki potisni automat. Nadalje,
kada je rijec o nedeterminizmu, bitno je istaknuti da se kod potisnog automata nedeterminizam ne moze uvijek eliminirati, za razliku od konacnih automata.
Upravljacka jedinica odlucuje o promjeni simbola na vrhu steka, pomaku glave
za c itanje i o promjeni stanja. Pri odlucivanju upravljacka jedinica donosi odluku na
temelju sljedeca tri podatka:
1. trenutna stanja upravljacke jedinice, kojeg c emo oznaciti sa q;
2. simbola na ulaznoj traci na kojem je pozicionirana glava za c itanje, kojeg c emo
oznaciti sa a.
3. simbola koji se nalazi na vrhu steka, kojeg c emo oznaciti sa Z;
Upravljacka jedinica pri donosenju odluke o prijelazu moze postupiti na sljedeca dva
nacina:
U prvom nacinu rada upravljacka jedinica c ita simbol sa trake (a) i ovisno o
procitanom simbolu, trenutnom stanju (q) i simbolu na vrhu steka (Z), mijenja
stanje i na odredeni nacin modificira stek na nacin da upisuje nove simbole ili
brise stare. Dakle, pri realizaciji ovog tipa prijelaza, upravljacka jedinica donosi
odluku na temelju trojke (q, a, Z). Nakon toga, upravljacka jedinica c ita sljedeci
simbol sa trake.
U drugom nacinu rada PA bez c itanja ulaznog simbola moze promijeniti stanje q
u neko novo stanje, te simbol na vrhu steka zamijeniti nekim nizom simbola. To
znaci da je moguce da upravljacka jedinica donosi odluku o prijelazu na temelju
samo dva podatka: stanja upravljacke jedinice (q) i simbola na vrhu steka (Z), pri
c emu se glava za c itanje ne mice za jedno mjesto udesno, jer je odluka donesena
bez c itanja simbola sa ulazne trake. Dakle, pri realizaciji ovog tipa prijelaza,
upravljacka jedinica donosi odluku na temelju trojke (q, , Z), a ovaj tip prijelaza
c emo nazivati -prijelazi.
Na vrh steka je moguce staviti:
1. Praznu rijec .
Stavljanje prazne rijeci na stek je zapravo jednako skidanju jednog simbola sa
vrha steka, jer se c itanjem skida procitani simbol sa steka.
2. Rijec duzine jednog ili vise simbola.
Ako rijec koja se stavlja na stek ima duljinu jedan, onda postoji mogucnost da se

PREDAVANJE 10. POTISNI AUTOMAT

117

na stek stavi simbol koji je jednak procitanom simbolu na vrhu steka, sto zapravo
odgovara situaciji u kojoj se ne mijenja sadrzaj steka. Stavljanjem nekog drugog
simbola na stek, koji je razlicit od simbola na vrhu steka, postize se zamjena
simbola na vrhu steka. Nadalje, model PA daje mogucnost da se na stek stave
i rijeci koje imaju duljinu vecu od jedan, te je na taj nacin omoguceno da PA
na steku c uva odredene medunizove, koji nastaju kao medurezultati u procesu
prihvacanja rijeci.

10.1

Formalna definicija potisnog automata

Na temelju prethodnog opisa mozemo dati i formalnu definiciju potisnog automata


(PA).
Definicija 10.1. Potisni automat M formalno definiramo sljedecom sedmorkom:
M = (Q, , , , q0 , Z0 , F),


gdje je:
Q

konacan skup stanja;

konacan skup ulaznih simbola (ulazni alfabet);

konacan skup simbola steka (alfabet steka);

funkcija prijelaza koja trojci iz skupa Q ( {}) pridruzuje


konacan podskup skupa svih mogucih parova iz Q .

q0

pocetno stanje, q0 Q;

Z0

pocetni simbol steka, Z0 ;

skup prihvatljivih stanja, F Q.

Neka q Q oznacava neko stanje potisnog automata M, neka a {} oznacava


ulazni simbol, te neka Z oznacava simbol na vrhu steka. Funkcija prijelaza
potisnog automata trojci (q, a, Z) pridruzuje konacan skup parova (pi , i ), 1 i m:
(q, a, Z) = {(p1 , 1 ), (p2 , 2 ), . . . , (pm , m )},
gdje pi , 1 i m, oznacava stanja u koja prelazi PA M (pi Q), dok i , 1 i m
oznacava nizove simbola koji se stavljaju na stek (i ).
Drugim rijecima, ako PA M, koji se nalazi u stanju q, sa ulazne trake procita simbol
a, a sa vrha steka procita simbol Z, onda PA prelazi u jedno od stanja pi , pri c emu se
simbol Z na vrhu steka zamijeni nizom simbola i , te se glava za c itanje pomjeri na
sljedeci simbol ulazne trake. Prilikom stavljanja na stek niza simbola i , simboli se
stavljaju sa desna na lijevo, pa se na vrhu steka pojavljuje krajnji lijevi simbol iz niza
i .

PREDAVANJE 10. POTISNI AUTOMAT

118

Ako je a = , tada imamo:


(q, , Z) = {(p1 , 1 ), (p2 , 2 ), . . . , (pm , m )},
pa se prijelaz u jedno od stanja pi , kao i zamjena simbola Z na vrhu steka nizom i ,
ostvaruje bez pomjeranja udesno glave za c itanje sa ulazne trake. Ovakav prijelaz
se naziva -prijelaz. Prema tome, funkcija prijelaza ne odreduje jednoznacno novo
stanje potisnog automata.
Slicno kao sto smo konacne automate graficki prikazivali pomocu dijagrama stanja,
na slican nacin c emo prikazivati i potisne automate. Na slici 10.2 je dat nacin prikazivanja prijelaza iz stanja p u stanje q na dijagramima stanja. Usmjerene linije koje
prikazuju prijelaze c emo oznacavati na sljedeci nacin:
a, A/,
pri c emu simbol a oznacava procitani simbol sa ulazne trake, simbol A oznacava procitani
simbol sa vrha steka, dok oznacava niz simbola koji se stavlja na stek. Dakle, za prikazani prijelaz na slici 10.2 vrijedi:
(q, ) (p, a, A).

a, A/

Slika 10.2: Graficki prikaz prijelaza iz stanja p u q, (q, ) (p, a, A)

Medutim, bitno je istaknuti da na dijagramu stanja potisnog automata ipak ne


mozemo pratiti ponasanje automata na isti nacin kao sto to mozemo na dijagramima
stanja konacnih automata, iako dijagrami stanja PA sadrze dodatne informacije. Naime, da bismo pratili prijelaze na dijagramu stanja PA, potrebno je imati i informaciju
o ukupnom sadrzaju steka.
Primjer 10.1. Neka je zadan sljedeci PA:
M = ({q0 , q1 , q2 , q3 }, {a, b}, {a, A}, , q0 , A, {q0 , q3 }),
gdje je funkcija prijelaza definirana na sljedeci nacin:
1) (q0 , a, A) = {(q1 , aA)}
2) (q1 , a, a) = {(q1 , aa)}
3) (q1 , b, a) = {(q2 , )}
4) (q2 , b, a) = {(q2 , )}
5) (q2 , , A) = {(q3 , A)}
Dijagram stanja PA M je prikazan na slici 10.3.

PREDAVANJE 10. POTISNI AUTOMAT

119

a, a/aa

q0

a, A/aA

q1

b, a/
b, a/

q2

, A/A

q3

Slika 10.3: Dijagram stanja PA M koji prihvaca jezik L(M) = {an bn | n 0}

PA M prihvaca jezik L(M):


L(M) = {an bn | n 0}.
Za n = 0, niz a0 b0 je zapravo prazna rijec , koju PA M prihvaca, jer je pocetno stanje
q0 prihvatljivo stanje, q0 F. Sad c emo razmotriti ulazne rijeci an bn , za koje je n 1.
Za svaki procitani simbol a sa ulazne trake, prijelazi (1) i (2) omogucuju da se na stek
stavi jedan simbol a. Prijelaz (1) je omogucen na pocetku rada automata, kada se c ita
prvi simbol a iz ulazne rijeci, te kada je na vrhu steka simbol A. Primjenom prijelaza
(1) PA M prelazi u stanje q1 . Prijelaz (2) je omogucen pri c itanju svakog sljedeceg
simbola a. Nakon sto se se iz ulaznog niza an bn procita svih n simbola a, PA M se jos
uvijek nalazi u stanju q1 , neprocitani dio ulaznog niza je bn , a na steku se nalazi niz
simbola an A. Dakle, sa ulazne trake se c ita simbol b, dok se sa steka c ita simbol a, pa
je tada omogucen prijelaz (3), te PA M prelazi u stanje q2 . Realizacijom prijelaza (3)
sa steka se skida jedan simbol a, jer prijelaz (3) definira da se na stek nakon c itanja
i skidanja sa steka jednog simbola a, na stek upisuje prazna rijec . U tom trenutku
neprocitani dio ulazne rijeci je bn1 , dok je sadrzaj steka an1 A. U stanju q2 omogucen
je prijelaz (4), pa PA M iz ulaznog niza c ita preostalih n1 simbola b, pri c emu za svaki
procitani simbol b, automat sa steka skine jedan simbol a. Naime, pri svakoj realizaciji
prijelaza (4) sa steka se skida jedan simbol (a), a na stek se upisuje prazna rijec , pa
je krajnji ucinak svakog prijelaza (4) skidanje jednog simbola a sa vrha steka. Buduci
da je pri prvoj primjeni prijelaza (4) u ulaznom nizu bilo prisutno n 1 simbola b, te
da je stek takoder sadrzavao n 1 simbola a, nakon c itanja svih preostalih simbola b
sa ulazne trake, automat je u stanju q2 , neprocitani dio ulaznog niza je zapravo prazna
rijec , a na vrhu steka je simbol A. U toj situaciji je omogucen prijelaz (5), koji mijenja
stanje PA iz q2 u q3 . Imajuci u vidu da su procitani svi simboli sa ulazne trake, te da
je stanje q3 prihvatljivo stanje, zakljucujemo da PA M prihvaca ulazni niz an bn i za
vrijednosti n 1.
U tablici 10.1 je detaljno opisan slijed prijelaza za ulazni niz aaabbb. U prvom redu
i u prve tri kolone su prikazani pocetni elementi na temelju kojih upravljacka jedinica
PA M donosi odluku o prijelazu. Naime, iz prvog reda tablice 10.1 vidimo da je PA
M u pocetnom stanju q0 , na ulaznoj traci se nalazi neprocitani niz simbola aaabbb, a
na vrhu steka se nalazi simbol A. Buduci da je krajnji lijevi simbol neprocitanog niza
simbol a, na kojem je zapravo pozicionirana glava za c itanje sa ulazne trake, u c etvrtoj
koloni prvog reda imamo naveden sljedeci prijelaz:
(q0 , a, A) = {(q1 , aA)},
pa PA prelazi u stanje q1 . Na steku c e novi sadrzaj biti aA. Naime, prethodno je na
steku bio simbol A, koji je c itanjem skinut sa vrha pri prijelazu, a na vrh je upisan niz

PREDAVANJE 10. POTISNI AUTOMAT

120

aA, sto je ujedno i novi sadrzaj steka. Novo stanje (q1 ), neprocitani dio ulaznog niza
simbola (aabbb) i sadrzaj steka (aA) su prikazani u drugom redu u prve tri kolone.
U tablici 10.1 su detaljno opisani i svi ostali prijelazi. U predzadnjem redu imamo
prikazanu situaciju u kojoj se PA M nalazi u stanju q2 , neprocitani dio ulaznog niza je
prazna rijec , a na vrhu steka je simbol A, te je omogucen sljedeci prijelaz:
(q2 , , A) = {(q3 , A)},
primjenom kojeg PA M prelazi u stanje q3 . Buduci da su procitani svi simboli ulaznog
niza, a PA M se nalazi u prihvatljivom stanju q3 , zakljucujemo da PA M prihvaca rijec
aaabbb.
Stanje

Neprocitani
dio niza

Sadrzaj steka

Prijelaz

q0

aaabbb

(q0 , a, A) = {(q1 , aA)}

q1

aabbb

aA

(q1 , a, a) = {(q1 , aa)}

q1

abbb

aaA

(q1 , a, a) = {(q1 , aa)}

q1

bbb

aaaA

(q1 , b, a) = {(q2 , )}

q2

bb

aaA

(q2 , b, a) = {(q2 , )}

q2

aA

(q2 , b, a) = {(q2 , )}

q2

(q2 , , A) = {(q3 , A)}

q3

q3 F

Tablica 10.1: Slijed prijelaza PA M za ulazni niz aaabbb

10.1.1

Konfiguracija potisnog automata

Kao sto smo vidjeli u prethodnom primjeru pracenje prijelaza potisnog automata za
neku ulaznu rijec je komplikovanije nego kod konacnih automata. Naime, da bismo
pratili prijelaze u prve tri kolone tablice 10.1 smo smo imali zapisane sljedece komponente:
trenutno stanje (q);
neprocitani dio ulaznog niza simbola (x);
sadrzaj steka ().
Gornje tri komponente koje je potrebno pratiti c emo nazivati konfiguracija potisnog
automata. Prema tome, konfiguraciju PA formalno definiramo kao trojku:
(q, x, ).

(10.1)

PREDAVANJE 10. POTISNI AUTOMAT

121

Za neki PA M promjenu konfiguracije iz (q, x, ) u konfiguraciju (p, y, ) formalno


zapisujemo primjenom relacije ` na sljedeci nacin:
M

(q, x, ) ` (p, y, ).
M

Potisni automat M moze c itanjem ulaznog simbola a ( {}) promijeniti konfiguraciju:


(q, ax, Z) ` (p, x, ),
M

ako i samo ako vrijedi sljedece:


(p, ) (q, a, Z),
Ako se prijelaz PA M iz konfiguracije (q, x, ) u konfiguraciju (p, y, ) ostvaruje u nula
ili vise koraka, onda to zapisujemo na sljedeci nacin:

(q, x, ) ` (p, y, ).
M

Nadalje, ako se prijelaz PA M iz konfiguracije (q, x, ) u konfiguraciju (p, y, ) ostvaruje u n koraka (primjenom n prijelaza), onda to zapisujemo na sljedeci nacin:
n

(q, x, ) ` (p, y, ).
M

M M

Ako je jasno na koji PA se odnose realcije ` , ` i ` , onda se oznaka M moze izostaviti.


Promjenu konfiguracije PA iz primjera 10.1 za ulazni niz aaabbb zapisujemo na
sljedeci nacin:
(q0 , aaabbb, A) ` (q1 , aabbb, aA)
` (q1 , abbb, aaA)
` (q1 , bbb, aaaA)
` (q2 , bb, aaA)
` (q2 , b, aA)
` (q2 , , A)
` (q3 , , A)

Upotrebom relacije ` promjenu konfiguracije PA M za ulazni niz aaabbb mozemo


zapisati na sljedeci nacin:

(q0 , aaabbb, A) ` (q3 , , A)

10.1.2

Prihvacanje jezika potisnim automatom

U primjeru 10.1 smo neformalno vec uveli pojam prihvacanja jezika potisnim automatom. Formalnu definiciju prihvacanja jezika potisnim automatom dajemo u nastavku.

PREDAVANJE 10. POTISNI AUTOMAT

122

Definicija 10.2. Potisni automat M = (Q, , , , q0 , Z0 , F) prihvaca neku ulaznu rijec


w , ako vrijedi

(q0 , w, Z0 ) ` (p, , ),
M

za neko i neko p F.
Odnosno, potisni automat M prihvaca jezik L(M):

L(M) = {w | (q0 , w, Z0 ) ` (p, , ) za neko stanje p F i }.


M

Kazemo da potisni automat M prihvaca ulaznu rijec w i jezik L = L(M) prihvatljivim


stanjem.

Prema tome, prihvacanje ili odbacivanje neke ulazne rijeci w sukladno definiciji
10.2 ne ovisi o sadrzaju steka, nego ovisi jedino o stanju p u kojem se PA nalazi nakon
c itanja svih ulaznih simbola. Zbog toga ovaj nacin prihvacanja i nazivamo prihvacanje
prihvatljivim stanjem. Kasnije u ovom poglavlju c emo definirati jos jedan nacin na koji
potisni automati prihvacaju ulazne rijeci koji se naziva prihvacanje praznim stekom.
Primjer 10.2. U ovom primjeru c emo konstruirati PA M1 koji prihvaca jezik L(M1 )
nad alfabetom {a, b, c}, koji se sastoji od palindroma oblika xcxR , x {a, b} . Odnosno,
jezik L(M1 ) je:
L(M1 ) = {xcxR | x {a, b} }.
Prema tome, sve rijeci w L(M1 ) su medusobno reverzne, w = wR , te kao centralni
simbol sadrze simbol c. Primjeri rijeci koje pripadaju jeziku L(M1 ) su: c, aca, abcba,
bacab, aacaa, bbcbb, itd.
Neka se na pocetku rada automata na vrhu steka nalazi simbol A. Potisni automat
M1 c emo konstruirati na nacin da svoj rad temelji na tri stanja Q = {q0 , q1 , q2 }, pri
c emu ulogu tih stanja ukratko mozemo opisati na sljedeci nacin:
U stanju q0 automat obraduje niz simbola x, na nacin da c e svaki procitani simbol

{a, b} stavljati na stek. Citanjem


simbola c automat prelazi u stanje q1 .
U stanju q1 automat obraduje niz simbola xR , pri c emu automat ostaje u stanju q1
samo ako se procitani ulazni simbol sa trake i simbol na vrhu steka podudaraju.
Kada se procitaju svi ulazni simboli iz xR , na ulaznoj traci c e ostati prazna rijec
, dok c e na vrhu steka biti simbol A. U tom trenutku automat primjenom prijelaza prelazu u stanje q2
Stanje q2 je prihvatljivo stanje, za koje nisu definirani prijelazi.
Na slici 10.4 je ilustriran nacin rada automata M1 . Pretpostavimo da je na ulaznoj
traci niz simbola xcxR , x {a, b} . Automat u pocetnom stanju q0 za svaki procitani
simbol iz niza simbola x treba primjenom odgovarajucih prijelaza na stek stavljati niz
Z, koji se sastoji od simbola {a, b} koji je automat procitao sa ulazne trake i
procitanog simbola Z {a, b, A} sa vrha steka. Na taj nacin kao krajnji ucinak prijelaza
imamo c itanje simbola sa ulazne trake i stavljanje tog simbola na stek. Automat ostaje
u stanju q0 sve dok se sa ulazne trake ne procitaju svi simboli iz x. U tom trenutku
neprocitani dio ulazne rijeci je cxR , dok je sadrzaj steka xR A. Prema tome, funkcija
prijelaza treba biti definirana na nacin da ukljucuje sljedece prijelaze:

PREDAVANJE 10. POTISNI AUTOMAT

123

(q0 , xcxR , A)

(q0 , cxR , xR A)

(q1 , xR , xR A)

(q2 , , A)
q2 F, rijec w = xcxR se prihvaca
Slika 10.4: Prihvacanje palindroma oblika xcxR

1. (q0 , a, A) = {(q0 , aA)}


2. (q0 , b, A) = {(q0 , bA)}
3. (q0 , a, a) = {(q0 , aa)}
4. (q0 , b, a) = {(q0 , ba)}
5. (q0 , a, b) = {(q0 , ab)}
6. (q0 , b, b) = {(q0 , bb)}

Citanjem
simbola c automat primjenom odgovarajuceg prijelaza mijenja stanje q1 .
U tom trenutku neprocitani dio ulaznog niza je xR , dok je sadrzaj steka xR A ostao
nepromijenjen. Prema tome, treba ukljuciti sljedeci prijelaze:
7. (q0 , c, A) = {(q1 , A)}
8. (q0 , c, a) = {(q1 , a)}
9. (q0 , c, b) = {(q1 , b)}
U stanju q1 je potrebno omoguciti prijelaze u isto to stanje samo pod uvjetom da
se neprocitani simboli sa ulazne trake i steka pri c itanju podudaraju. Buduci da je
neposredno nakon c itanja simbola c i prelaska u stanje q1 neprocitani niz simbola xR ,
a sadrzaj steka je xR A, onda je prethodno navedeni uvjet ispunjen, pa se simboli sa
ulazne trake c itaju, dok se sadrzaj steka prazni. Upravo opisano ponasanje automata u
stanju q1 postizemo sljedecim prijelazima:
10. (q1 , a, a) = {(q1 , )}
11. (q1 , b, b) = {(q1 , )}

PREDAVANJE 10. POTISNI AUTOMAT

124

Kada se u stanju q1 procitaju svi simboli sa ulazne trake, na steku c e ostati jedino
simbol A. Dakle, potrebno je dodati i prijelaz (12) kojim se upravo u toj situaciji
omogucuje promjena stanja iz q1 u q2 .
12. (q1 , , A) = {(q2 , A)}
Buduci da je q2 prihvatljivo stanje, a procitani su svi simboli sa ulazne trake, zakljucujemo da potisni automat M1 prihvaca rijec w = xcxR , x {a, b} .
Na temelju prethodno izlozenog, mozemo definirati PA M1 na sljedeci nacin:
M1 = ({q0 , q1 , q2 }, {a, b, c}, {a, b, A}, 1 , q0 , A, {q2 }),
Q = {q0 , q1 , q2 }
= {a, b, c}
= {a, b, A}
F = {q2 }
gdje je funkcija prijelaza 1 definirana prethodno specificiranim prijelazima (1)-(12),
koje na ovom mjestu jos jednom navodimo:
1. 1 (q0 , a, A) = {(q0 , aA)}

7. 1 (q0 , c, A) = {(q1 , A)}

2. 1 (q0 , b, A) = {(q0 , bA)}

8. 1 (q0 , c, a) = {(q1 , a)}

3. 1 (q0 , a, a) = {(q0 , aa)}

9. 1 (q0 , c, b) = {(q1 , b)}

4. 1 (q0 , b, a) = {(q0 , ba)}

10. 1 (q1 , a, a) = {(q1 , )}

5. 1 (q0 , a, b) = {(q0 , ab)}

11. 1 (q1 , b, b) = {(q1 , )}

6. 1 (q0 , b, b) = {(q0 , bb)}

12. 1 (q1 , , A) = {(q2 , A)}

Dijagram stanja potisnog automata M1 je prikazan na slici 10.5.

b, A/bA
a, a/aa
a, A/aA

c, A/A

a, a/

c, a/a
c, b/b

q0
b, a/ba

q1

b, b/bb
a, b/ab

, A/A

q2

b, b/

Slika 10.5: Dijagram stanja PA M1 koji prihvaca jezik L(M1 ) = {xcxR | x {a, b} }

Razmotrimo na primjeru ulazne rijeci bacab promjenu konfiguracija PA M1 pri


prihvacanju navedene rijeci. Prromjenu konfiguracija zapisujemo na sljedeci nacin:
(q0 , bacab, A) ` (q0 , acab, bA)

PREDAVANJE 10. POTISNI AUTOMAT

125

` (q0 , cab, abA)


` (q1 , ab, abA)
` (q1 , b, bA)
` (q1 , , A)
` (q2 , , A)
Dakle, buduci da imamo:

(q0 , bacab, A) ` (q2 , , A),


zakljucujemo da PA M1 prihvaca rijec bacab.
Nadalje, razmotrimo promjene konfiguracije i za rijec abbcbab:
(q0 , abbcbab, A) ` (q0 , bbcbab, aA)
` (q0 , bcbab, baA)
` (q1 , cbab, bbaA)
` (q1 , bab, bbaA)
` (q1 , ab, baA)
Dakle, PA M1 c itanjem pet simbola niza abbcbab mijenja konfiguraciju na sljedeci
nacin:
5
(q0 , abbcbab, A) ` (q1 , ab, baA).
Buduci da u stanju q1 za ulazni simbol a i za simbol na vrhu steka b nije definiran
prijelaz, zakljucujemo da automat M1 ne prihvaca rijec abbcbab.
Iako opcenito definicija potisnog automata omogucuje nedeterminizam, potisni
automati opisani u prethodna dva primjera su zapravo deterministicki potisni automati.
U nastavku dajemo i jedan primjer nedetreministickog potisnog automata.

Primjer 10.3. U primjeru 10.2 smo konstruirali deterministicki potisni automat M1
koji prihvaca jezik nad alfabetom {a, b, c}, koji se sastoji od palindroma oblika xcxR ,
x {a, b} . Dakle, sve rijeci su sadrzavale neparan broj simbola, pri c emu je centralni
simbol bio c. U ovom primjeru c emo konstruirati nedeterministicki potisni automat
M2 , koji treba prihvacati sve palindrome nad alfabetom {a, b}. Odnosno, automat M2
treba prihvacati jezik L(M2 ):
L(M2 ) = {w {a, b} | w = wR }.
Podskup rijeci L2n , L2 L(M2 ), koji se sastoji od rijeci iz L(M2 ) koje sadrze neparan
broj simbola mozemo izraziti na sljedeci nacin:
L2n = {xxR | x {a, b} , {a, b}}.
S druge strane, podskup rijeci L2p , L2p L(M2 ), koji se sastoji od rijeci iz L(M2 ) koje
sadrze paran broj simbola mozemo izraziti kao:
L2p = {xxR | x {a, b} },

PREDAVANJE 10. POTISNI AUTOMAT

126

Odnosno, jezik L(M2 ) mozemo specificirati i na sljedeci nacin:


L(M2 ) = L2n L2p = {xxR | x {a, b} , {a, b}} {xxR | x {a, b} }.
Buduci da c emo konstrukciju automata M2 temeljiti na konstrukciji automata M1 ,
prisjetimo se nacina na koji automat M1 iz primjera 10.2 prihvaca rijeci jezika L(M1 ).
Za rad automata M1 pri prihvacanju palindroma oblika xcxR , centralni simbol c je
imao kljucnu ulogu, jer je pruzao automatu informaciju da u stanju q0 treba prestati
sa stavljanjem simbola na stek, te preci u stanje q1 i rad nastaviti skidanjem simbola
sa steka. S druge strane, imajuci u vidu da se jezik L(M2 ) sastoji od palindroma koji
nemaju simbol koji pruza informaciju da je pri obradi automat stigao do pola ulazne
rijeci, postavlja se pitanje kako automat M2 moze znati kada treba u stanju q0 prestati
sa stavljanjem simbola na stek, te rad nastaviti u stanju q1 sa skidanjem simbola sa
steka. Odgovor je zapravo da automat M2 to ne moze znati, pa je upravo zbog toga u
konstrukciju automata M2 potrebno ugraditi nedeterminizam.
Pretpostavimo da je na ulaznoj traci neki palindrom w = wR . Kao sto smo prethodno vidjeli pri specifikaciji podskupova L2n i L2p , palindromi iz jezika L(M2 ) =
L2n L2p mogu biti:
1. palindromi oblika xxR ;
2. palindromi oblika xxR ,
pri c emu vrijedi x {a, b} i {a, b}.
(q0 , xxR , A)

(q0 , xR , xR A)

(q0 , xR , xR A)

(q1 , xR , xR A)

Nastavlja stavljati na stek

(q2 , , A)

q2 F, rijec w = xxR se prihvaca


Slika 10.6: Prihvacanje palindroma oblika xxR

Prvo c emo razmotriti nacin na koji c emo iskoristiti nedeterminizam da bismo omogucili
prihvacanje palindroma oblika xxR . Buduci da je ulazna rijec oblika xxR , tada nakon c itanja simbola iz x prelazak u stanje q1 treba biti omogucen c itanjem ulaznog
simbola {a, b}, za sva tri moguca simbola iz alfabeta steka = {a, b, A}. Dakako,

PREDAVANJE 10. POTISNI AUTOMAT

127

buduci da automat ne zna koliko ulazna rijec ukupno ima simbola, c itanjem svakog
ulaznog simbola potrebno je sljedece:
1. Omoguciti prijelaz kojim automat mijenja konfiguraciju (q0 , xR , xR A) u konfiguraciju (q0 , xR , xR A). Dakle, automat treba procitati ulazni simbol {a, b},
ostati u stanju q0 , te na stek staviti procitani simbol. Prema tome, u konstrukciju funkcije 2 uzimajuci u obzir sve moguce kombinacije za procitani ulazni
simbol, kao i procitani simbol sa steka, treba ukljuciti sljedece prijelaze:
(q0 , aA) 2 (q0 , a, A)
(q0 , bA) 2 (q0 , b, A)
(q0 , aa) 2 (q0 , a, a)
(q0 , ba) 2 (q0 , b, a)
(q0 , ab) 2 (q0 , a, b)
(q0 , bb) 2 (q0 , b, b)
2. Omoguciti prijelaz kojim automat mijenja konfiguraciju (q0 , xR , xR A) u konfiguraciju (q1 , xR , xR A). Dakle, automat treba procitati ulazni simbol {a, b},
preci u stanju q1 , jer je mozda upravo procitan centralni simbol {a, b}, te ostaviti stek nepromijenjen, bez obzira koji je simbol iz = {a, b, A} na vrhu steka.
Prema tome, pri konstrukciji funkcije 2 , uzimajuci u obzir sve moguce kombinacije za procitani ulazni simbol, kao i procitani simbol sa steka, treba ukljuciti
sljedece prijelaze:
(q1 , A) 2 (q0 , a, A)
(q1 , A) 2 (q0 , b, A)
(q1 , a) 2 (q0 , a, a)
(q1 , a) 2 (q0 , b, a)
(q1 , b) 2 (q0 , a, b)
(q1 , b) 2 (q0 , b, b)

Na temelju prethodno izlozenog, za funkciju 2 koja opisuje ponasanje potisnog automata M2 u stanju q0 imamo:
1. 2 (q0 , a, A) = {(q0 , aA), (q1 , A)}
2. 2 (q0 , b, A) = {(q0 , bA), (q1 , A)}
3. 2 (q0 , a, a) = {(q0 , aa), (q1 , a)}
4. 2 (q0 , b, a) = {(q0 , ba), (q1 , a)}
5. 2 (q0 , a, b) = {(q0 , ab), (q1 , b)}
6. 2 (q0 , b, b) = {(q0 , bb), (q1 , b)}

PREDAVANJE 10. POTISNI AUTOMAT

128

Kao sto vidimo iz prijelaza (1)-(6), nedeterministicko ponasanje PA M2 se manifestira u c injenici da ti prijelazi omogucuju da se iz jedne konfiguracije prede u dvije
konfiguracije. Iako je na slici 10.6 takvo ponasanje ilustrirano samo za situaciju kada
je automat upravo procitao sve simbole iz x, istaknimo jos jednom da isto ponasanje
automat treba imati pri c itanju svih simbola sa ulazne trake, jer automat nema inormaciju u kojem trenutku je procitan niz simbola x, da bi na taj nacin znao da treba preci u
stanje q1 . Drugim rijecima, prijelazi (1)-(6) omogucuju da automat sve simbole ulazne
rijeci istovremeno tretira na dva nacina. U prvoj varijanti sve simbole iz ulazne rijeci
automat tretira na nacin kao da pripadaju prvoj polovini ulazne rijeci w = xxR , odnosno kao da pripadaju nizu x, pa ti prijelazi specificiraju da automat ostaje u stanju q0 .
U drugoj varijanti, svi simboli se tretiraju kao da njihovim c itanjem zavrsava c itanje
niza simbola x, pa se c itanjem sljedeceg simbola {a, b}, treba preci u stanje q1 .
Razmotrimo sada nacin na koji c emo iskoristiti nedeterminizam da bismo omogucili
prihvacanje i palindroma oblika xxR . Uz pretpostavku da je PA M2 upravo procitao niz
simbola x iz ulazne rijeci, potrebno je dodatno omoguciti i prijelaz kojim PA M2 mijenja konfiguraciju (q0 , xR , xR A) u konfiguraciju (q1 , xR , xR A). Na slici 10.7 je upravo
prikazana i ova treca mogucnost promjene konfiguracije. Dakle, prelazak u stanje q1
treba biti omoguceno bez c itanja prvog simbola iz xR , bez obzira koji simbol iz alfabeta
steka = {a, b, A} je na njegovom vrhu. Osim toga, sadrzaj steka treba ostati nepromijenjen. Da bismo osigurali upravo opisano ponasanje, funkcija prijelaza 2 treba
sadrzavati i sljedece prijelaze:
7. 2 (q0 , , A) = (q1 , A)
8. 2 (q0 , , a) = (q1 , a)
9. 2 (q0 , , b) = (q1 , b)
(q0 , xxR , A)

(q0 , xR , xR A)

(q0 , , xR A)

Nastavlja stavljati na stek

(q1 , , xA)

(q1 , xR , xR A)

(q2 , , A)

q2 F, rijec w = xxR se prihvaca


Slika 10.7: Prihvacanje palindroma oblika xxR

PREDAVANJE 10. POTISNI AUTOMAT

129

Nadalje, istaknimo da kada PA M2 prede u stanje q1 , nedeterminizam vise nije


niti potreban, jer ako u konstrukciju PA M2 ugradimo da se on od tog trenutka ponasa
isto kao i PA M1 , tada smo osigurali da c e potisni automat M2 doci do prihvatljivog
stanja jedino ako su preostali simboli koje procita sa ulazne trake isti kao i simboli
na steku. Upravo ovakva konstrukcija c e i osigurati da se ne prihvacaju rijeci koje
nisu palindromi. Prema tome, u konstrukciju funkcije 2 potisnog automata M2 c emo
ugraditi prijelaze (10)-(12), koji su zapravo definirani funkcijom 1 potisnog automata
M1 :
10. 2 (q1 , a, a) = {(q1 , )}
11. 2 (q1 , b, b) = {(q1 , )}
12. 2 (q1 , , A) = {(q2 , A)}
Na temelju prethodno izlozenog definiramo PA M2 = (Q, , , , q0 , Z0 , F) na sljedeci
nacin:
M2 = ({q0 , q1 , q2 }, {a, b}, {a, b, A}, 2 , q0 , A, {q2 })
gdje je funkcija prijelaza 2 definirana prethodno specificiranim prijelazima (1)-(12),
koje na ovom mjestu jos jednom navodimo:
1. 2 (q0 , a, A) = {(q0 , aA), (q1 , A)}

7. 2 (q0 , , A) = {(q1 , A)}

2. 2 (q0 , b, A) = {(q0 , bA), (q1 , A)}

8. 2 (q0 , , a) = {(q1 , a)}

3. 2 (q0 , a, a) = {(q0 , aa), (q1 , a)}

9. 2 (q0 , , b) = {(q1 , b)}

4. 2 (q0 , b, a) = {(q0 , ba), (q1 , a)}

10. 2 (q1 , a, a) = {(q1 , )}

5. 2 (q0 , a, b) = {(q0 , ab), (q1 , b)}

11. 2 (q1 , b, b) = {(q1 , )}

6. 2 (q0 , b, b) = {(q0 , bb), (q1 , b)}

12. 2 (q1 , , A) = {(q2 , A)}

Na slici 10.8 je prikazan slijed prijelaza u obliku stabla za ulazni niz abba. Buduci
da je ulazni niz oblika xxR , gdje je x = ab, potisni automat M2 prihvaca taj niz.


10.2

Deterministicki potisni automat

Kod potisnog automata M1 koji je opisan u primjeru 10.2 funkcija prijelaza 1 je specificirana tako da automat pri promjeni konfiguracije nikada nema mogucnost izbora
vise od jednog moguceg prijelaza. Imajuci upravo navedeno u vidu, mozemo reci da je
opravdano taj automat oznaciti kao deterministicki. Istaknimo, ipak da pojam deterministicki u kontekstu potisnih automata ima nesto drugacije znacenje u odnosu na istu
tu kvalifikaciju u kontekstu konacnih automata. Naime, kod deterministickih konacnih
automata nije bilo dopusteno da za neku kombinaciju stanja i ulaznog simbola nije definiran prijelaz. S druge strane, kod deterministickih potisnih automata c e biti dopusteno
da za neke konfiguracije nisu definirani prijelazi.

PREDAVANJE 10. POTISNI AUTOMAT

130

(q0 , abba, A)

(q1 , bba, A)

(q1 , abba, A)

(q0 , bba, aA)

(q2 , bba, A)

(q2 , abba, A)

(q0 , ba, baA)

(q1 , ba, aA)

(q1 , bba, aA)

(q0 , a, bbaA)

(q1 , a, baA)

(q0 , , abbaA)

(q1 , , bbaA)

(q1 , , abbaA)

(q1 , ba, baA)

(q1 , a, bbaA)

(q1 , a, aA)

(q1 , , A)

(q2 , , A)
Slika 10.8: Slijed prijelaza pri prihvacanju ulazne rijeci abba potisnim automatom M2

Isto tako, istaknimo da nedeterministicki potisni automat prihvaca siru klasu jezika
od deterministickog potisnog automata. Naime, u primjeru 10.3 smo konstruirali nedeterministicki potisni automat koji prihvaca palindrome w, za koje vrijedi w = wR .
Medutim, nije moguce konstruirati deterministicki potisni automat, koji prihvaca isti
jezik. Prisjetimo se da to ne vrijedi za nedeterministicke i deterministicke konacne
automate (NKA i DKA). Naime, vidjeli smo da nedeterministicki konacni automati
(NKA) prihvacaju istu klasu jezika kao i deterministicki konacni automati (DKA).
Prethodno smo pojam deterministickog potisnog automata uveli na jedan neformalan nacin, pa c emo u nastavku dati i formalnu specifikaciju uvjeta koje neki PA treba
zadovoljavati da bi ga klasificirali kao deterministicki potisni automat.
Definicija 10.3. Potisni automat M = (Q, , , , q0 , Z0 , F) je deterministicki ako i
samo ako zadovoljava sljedeca dva uvjeta:
1. U skupu (q, , Z) je najvise jedan element, za bilo koje stanje q Q, za bilo
koji ulazni simbol {} i za bilo koji simbol steka Z .

PREDAVANJE 10. POTISNI AUTOMAT

131

2. Ako je (q, , Z) neprazan skup, onda je (q, , Z) prazni skup za bilo koje stanje
q Q, za bilo koji simbol i za bilo koji Z .

Specifikacijom uvjeta (1) nije dopusteno da skup 2 (q, , Z) sadrzi vise od jednog elementa. Prijelazi (1)-(6) navedeni u primjeru 10.3 sadrze po dva elemanta,
narusavajuci time uvjet (1), pa su ti prijelazi primjeri nedeterministickih prijelaza.
Na slici 10.8 koja opisuje nacin prihvacanja rijeci abba, prikazano je vise nedeterministickih prijelaza. Naprimjer, prijelaz (1) koji ima oblik 2 (q0 , a, A) = {(q0 , aA), (q1 , A)},
omogucuje prijelaz iz konfiguracije (q0 , abba, A) u konfiguraciju (q0 , bba, aA) ili u konfiguraciju (q1 , bba, A).
S druge strane, specifikacijom uvjeta (2) nije dozvoljena mogucnost izbora izmedu
-prijelaza i prijelaza koji koristi ulazni simbol. Naprimjer, prijelaz (7) koji je definiran kao 2 (q0 , , A) = {(q1 , A)}, omogucuje da PA M2 primjenom ovog -prijelaza
iz pocetne konfiguracije (q0 , abba, A) izabere i trecu mogucnost, a to je konfiguracija
(q1 , abba, A). Prema tome, prijelazi (1) i (7) omogucuju da PA M2 prede u tri moguce
konfiguracije.
Primijetimo da bi PA M2 ostao nedeterministicki c ak i da je prijelaz (1) specificiran
tako da skup 2 (q0 , a, A) sadrzi samo jedan element. Pretpostavimo npr. da je prijelaz
(1) specificiran kao 2 (q0 , a, A) = {(q0 , aA)}. Tada bi prijelazi (1) i (7) omogucavali da
PA M2 iz konfiguracije (q1 , abba, A) prede u konfiguraciju (q0 , bba, aA) ili u konfiguraciju (q1 , abba, A).

Predavanje 11

Turingova ma
sina
U ovom poglavlju je opisana Turing masina kao model apstraktne masine.
Iako je model Turingove masina vrlo slican prethodno opisanim modelima
konacnog automata i potisnog automata, ipak mozemo reci da je Turingova
masina opcenitiji i mocniji apstraktni matematicki model racunarstva. Pri
uvodenju modela potisnog automata u prethodnom poglavlju uveden je stek kao
memorijska komponenta koja je omogucila memoriranje potrebnih informacija
za prihvacanje kontekstno neovisnih jezika. Medutim, bitno je istaknuti da
ogranicenje koje se ogleda u tome da je pristup podacima omogucen samo na
vrhu steka, zapravo predstavlja i ogranicenje u smislu moci prihvacanja sire klase
jezika potisnim automatom.

11.1

Osnovni model Turingove ma


sine

Na slici 11.1 je prikazan osnovni model Turingove masine. Masina ima upravljacku jedinicu koja moze biti u jednom od konacnog broja stanja. Nadalje,
masina ukljucuje ulaznu traku koja se sastoji od celija, pri cemu na pocetku
rada odredeni broj celija na traci sadrzi niz simbola w iz ulaznog alfabeta. Traka
sa koje masina cita simbole i na koju ispisuje simbole je beskonacna. Ostale
celije su oznacene tzv. praznim simbolom (eng. blank symbol). Ako je potrebno
Turingova masina moze na ulaznu traku zapisivati pored skupa ulaznih simbola
i dodatne simbole koji su eventualno potrebni u procesu izracunavanja. Skup
ulaznih simbola i skup dodatnih simbola koje masina moze zapisivati na traku
cine skup simbola trake. Simbol kojim se oznacava prazna celija ne pripada skupu
ulaznih simbola, nego skupu simbola trake. Nakon citanja simbola sa ulazne

trake Turingova masina zapisuje novi simbol na traku. Citanje


i pisanje na traku
se ostvaruje preko glave za citanje i pisanje, koja se moze pomjerati lijevo i
desno, te je uvijek pozicionirana na nekoj celiji trake. Upravljacka jedinica u
procesu izracunavanja donosi odluku na temelju sljedeca dva podatka:
1. trenutnog stanja;

132


PREDAVANJE 11. TURINGOVA MASINA

133

Ulazna traka

. . . t t a1 a2

...

...

ai

an t t . . .

Glava za
citanje i pisanje
(pomjera se lijevo i desno)

q3

..

q2

qn
q1

q0

Slika 11.1: Model Turingove masine

2. simbola na traci.
Na temelju procitanog simbola i stanja upravljacke jedinice, Turingova masina
odlucuje:
1. u koje stanje prelazi upravljacka jedinica;
2. koji simbol se zapisuje na traku umjesto procitanog simbola;
3. na koju stranu se pomjera glava za citanje i pisanje.
U nastavku cemo dati formalnu definiciju Turingove masine.
Definicija 11.1. Turingova masina je sljedeca sedmorka:
M = (Q, , , , q0 , B, F )
gdje je:
Q

Konacan skup stanja upravljacke jedinice;

Konacan skup ulaznih simbola;

Ukupan skup simbola trake, pri cemu je skup ulaznih simbola


uvijek podskup od ;

Funkcija prijelaza : Q Q {L, R}, gdje L oznacava pomjeranje


glave lijevo, dok R oznacava pomjeranje glave desno;

q0

Pocetno stanje, q0 Q;

Simbol kojim se oznacava prazna celija, B , B


/ .

Skup prihvatljivih stanja, F Q.





PREDAVANJE 11. TURINGOVA MASINA

134

Funkcijom prijelaza (q, X) = (p, Y, D) se definira da T M iz stanja q Q,


citanjem simbola X , prelazi u stanje p Q, na traku se zapisuje simbol
Y umjesto simbola X, dok se glava za citanje i pisanje pomjera lijevo ili
desno, ovisno o simbolu D {L, R}. Funkcija prijelaza moze biti nedefinirana
za pojedine argumente.
Naprimjer, prijelaz:
(q1 , b) = (q3 , a, R)
omogucuje da TM promjeni konfiguracije kao sto je to prikazano na slici 11.5b.
... t b a b b t ...

... t a a b b t ...

q1

q3

(a) (q1 , b) = (q3 , a, R)

(b) Konfiguracija nakon prijelaza

Slika 11.2: Promjena konfiguracije TM

Razmotrimo npr. sljedecu Turingovu masinu M = (Q, , , , q0 , B, F ), gdje


je:
M = ({q0 , q1 }, {a, b, A, B}, {a, b, A, B, t}, , q0 , t, {q1 }),
dok je funkcija prijelaza definirana na sljedeci nacin:
(q0 , a) = {q0 , A, R}
(q0 , b) = {q0 , B, R}
(q0 , A) = {q0 , A, R}
(q0 , B) = {q0 , B, R}
(q0 , t) = {q1 , t, L}
Neka je na ulaznoj traci zapisana rijec aBba. Glava za citanje i pisanje je
pozicionirana na prvom simbolu ulazne rijeci, a to je simbol a. Pocetno stanje
q0 je zadano samom definicijom TM M . Na slici 11.3a je prikazana pocetna
konfiguracija TM M . Detaljan opis procesa izracunavanja iz navedene pocetne
konfiguracije je:
1. Buduci da je TM M u pocetnom stanju q0 , a sa ulazne trake se cita simbol
a, omogucen je prijelaz:
(q0 , a) = (q0 , A, R),
pa masina ostaje u stanju q0 , na ulaznu traku se umjesto simbola a zapisuje
simbol A, a glava za citanje i pisanje se pomjera udesno. Rezultirajuca
konfiguracija je prikazana na slici 11.3b.
2. Sada je masina opet u stanju q0 , ali se sa ulazne trake cita simbol B, pa se
primjenjuje sljedeci prijelaz:
(q0 , B) = (q0 , B, R),


PREDAVANJE 11. TURINGOVA MASINA

... t a B b a t ...

135

... t A B b a t ...

q0

q0

(a) (q0 , a) = (q0 , A, R)

... t A B b a t ...

(b) (q0 , B) = (q0 , B, R)

... t A B B a t ...

q0

q0

(c) (q0 , b) = (q0 , B, R)

(d) (q0 , a) = (q0 , A, R)

... t A B B A t ...

... t A B B A t ...

q0

q1

(e) (q0 , t) = (q1 , t, L)

(f ) Zaustavljeno

Slika 11.3: Promjena konfiguracije TM

te masina ostaje u stanju q0 , umjesto simbola B ce se zapisati opet simbol


B (tj. ovaj prijelaz ne mijenja sadrzaj na ulaznoj traci), a glava za citanje se
pomjera udesno. Rezultirajuca konfiguracija nakon primjene ovog prijelaza
je prikazana na slici 11.3c.
3. Masina je u stanju q0 , sa ulazne trake se cita simbol b, pa se primjenjuje
sljedeci prijelaz:
(q0 , b) = (q0 , B, R),
pa masina i dalje ostaje u stanju q0 , umjesto simbola b se zapisuje simbol
B, a glava za citanje se pomjera udesno. Rezultirajuca konfiguracija nakon
primjene ovog prijelaza je prikazana na slici 11.3d.
4. Masina je u stanju q0 , sa ulazne trake se cita simbol a, pa se primjenjuje
sljedeci prijelaz:
(q0 , a) = (q0 , A, R),
pa masina i dalje ostaje u stanju q0 , umjesto simbola a se zapisuje simbol
A, a glava za citanje se pomjera udesno. Rezultirajuca konfiguracija nakon
primjene ovog prijelaza je prikazana na slici 11.3e.
5. Na kraju, masina je u stanju q0 , sa ulazne trake se cita simbol prazne celije
t, pa se primjenjuje sljedeci prijelaz:
(q0 , t) = (q1 , t, L),


PREDAVANJE 11. TURINGOVA MASINA

136

pa masina prelazi u stanju q1 , simbol t ostaje nepromijenjen na traci, a


glava za citanje se pomjera ulijevo, te je pozicionirana na zadnjem simbolu
sadrzaja na traci, a to je simbol A. Buduci da je stanje q1 prihvatljivo stanje,
te da nema definiranih prijelaza za stanje q1 , rad masine se zaustavlja.
Rezultirajuca konfiguracija nakon primjene ovog prijelaza i zaustavljanja
rada masine je prikazana na slici 11.3f.
Prethodno smo opisali rad Turingove masine na jednom konkretnom primjeru, pri cemu smo koristili termin konfiguracija Turingove masine, mada
zapravo nismo precizno definirali taj pojam, sto cemo uciniti na ovom mjestu.
Konfiguracija Turingove masine definirana je sljedecim komponentama:
1. sadrzaj celija trake lijevo od glave za citanje i pisanje;
2. stanje upravljacke jedinice;
3. sadrzaj celija desno od glave za citanje i pisanje.
Osim toga, na slici 11.3 su konfiguracije prikazane u grafickom obliku koji i
nije bas prikaladan u svim situacijama, pa cemo uvesti sljedeci nacin prikaza
konfiguracije T M :
(q, X1 X2 . . . Xi1 Xi Xi+1 . . . Xn )
gdje
q oznacava stanje upravljacke jedinice;
X1 X2 . . . Xi1 prikazuje sadrzaj celija trake lijevo od glave za citanje i
pisanje;
Xi oznacava sadrzaj celije na kojoj je pozicionirana glava za citanje i
pisanje;
Xi+1 . . . Xn prikazuje sadrzaj celija desno od glave za citanje i pisanje.
Naprimjer, konfiguraciju prikazanu na slici 11.3a zapisujemo na sljedeci nacin:
(q0 , aBba).

>

>

>

(q0 , ABBAt)

(q0 , ABba)
>

(q0 , ABba)

>

(q0 , aBba)

> >

>

Za oznacavanje promjene iz jedne u drugu konfiguraciju cemo koristiti simbol


, tj. simbol koji smo koristili za istu svrhu i kod potisnog automata. Prema
tome, slijed prijelaza prikazan na slici 11.3 mozemo prikazati korak po korak na
sljedeci nacin:
(q0 , ABBa)

(q1 , ABBA).

>

>

Relacije
i
imaju svoje uobicajeno znacenje koje smo uveli kod

potisnih automata. Relacijom


prikazujemo slijed prijelaza koji ukljucuje
+
nula ili vise koraka, dok notacijom
specificiramo jedan ili vise koraka u


PREDAVANJE 11. TURINGOVA MASINA

137

>

nekom slijedu prijelaza. Naprimjer, za slijed prijelaza prikazan na slici 11.3


mozemo pisati:

(q0 , aBba)
(q1 , ABBA).
Alternativni nacin zapisivanja konfiguracije
(q, X1 X2 . . . Xi1 Xi Xi+1 . . . Xn )
je sljedeci:
X1 X2 . . . Xi1 qXi Xi+1 . . . Xn .
Gornjim zapisom konfiguracije je specificirano da je TM u stanju q, a glava za
citanje i pisanje je pozicionirana na prvom simbolu desno od oznake stanja q,
tj. na simbolu Xi . Koristeci ovu notaciju, slijed prijelaza prikazan na slici 11.3
mozemo prikazati korak po korak na sljedeci nacin:
q0 aBba ` Aq0 Bba ` ABq0 ba ` ABBq0 a ` ABBAq0 B ` ABBq1 A.

11.2

Dijagram stanja Turingove ma


sine

Prijelaze Turingove masine, slicno kao i kod konacnih automata i potisnih


automata, mozemo prikazati graficki u obliku dijagrama stanja. Na slici 11.4 je
ilustriran graficki prikaz za sljedeci prijelaz:
(q, X) = (p, Y, D)

X Y, D

Slika 11.4: Prikaz prijelaza (q, X) = (p, Y, D) na grafu stanja TM

Dakle, znacenje prijelaza prikazanog na slici 11.4 je slijedece:


Kada se masina nalazi u stanju q Q, a na ulaznoj traci glava za citanje i
pisanje cita simbol X , upravljacka jedinica T M prelazi u stanje p Q,
na traci se ispisuje simbol Y umjesto simbola X, a glava za citanje se
pomjera u smjeru D {L, R}.
Ako TM u nekom od prijelazu (q, X) = (p, X, D) ne mijenja simbol X
koji se cita na ulaznoj traci, tada cemo umjesto nacina oznacavanja prijelaza
prikazanog na slici 11.5a koristiti nesto sazetije oznacavanje prijelaza, na nacin
kako je to prikazano na slici 11.5b.


PREDAVANJE 11. TURINGOVA MASINA

X X, D

138

(a)

XD

(b)

Slika 11.5: Prikaz prijelaza (q, X) = (p, X, D) na dijagramu stanja TM u situaciji


kada simbol na traci koji se cita ostaje nepromijenjen. (a) Standardni nacin prikaza
prijelaza, (b) Sazeti nacin prikaza prijelaza

11.3

Prihva
canje jezika Turingovom ma
sinom

Turingova masina moze prihvacati jezike na slican nacin kao sto to rade konacni
automati i potisni automati. Ulazna rijec w se zapisuje na ulaznu traku, glava za
citanje i pisanje se pozicionira na krajnji lijevi simbol ulazne rijeci w, te Turingova
masina u pocetnom stanju zapocinje svoj rad. Ako nakon nekog slijeda prijelaza
Turingova masina ude u neko od prihvatljivih stanja i istovremeno zaustavi daljni
rad, tada se rijec w prihvaca. Drugim rijecima, rijec w se prihvaca ako:

>

q0 w

w1 pw2 ,

gdje je p F , a w1 i w2 su rijeci za koje vrijedi w1 , w2 . Jos jednom


istaknimo da pretpostavljamo da T M zaustavlja daljnji rad kada god ude u
neko prihvatljivo stanje. Prihvacanje jezika Turingovom masinom formalno
specificiramo sljedecom definicijom.
Definicija 11.2. Neka je zadana Turingova masina M = (Q, , , , q0 , t, F }.
Turingova masina M prihvaca jezik L(M ):

>

L(M ) = {w | q0 w

w1 pw2 , gdje je p F, w1 i w2 }.


Primjer 11.1. Konstruirajmo TM M koja prihvaca sljedeci jezik:


L(M ) = {an bn | n 1}.
Pocevsi od krajnjeg lijevog simbola a, pretvaramo procitani simbol a u
neki drugi simbol, npr. simbol c, a masina M prelazi u stanje q1 . U stanju
q1 glava za citanje i pisanje se pomjera udesno citanjem svakog sljedeceg
simbola a. Buduci da cemo svaki procitani simbol b pretvarati npr. u
simbol d, glava se pomjera udesno u stanju q1 i citanjem simbola d, koji su
zapisani u prethodnim prolazima. Dakle, simboli a i d se preskacu sve dok
se ne procita simbol b. Kada se procita simbol b, taj simbol se pretvara


PREDAVANJE 11. TURINGOVA MASINA

139

u neki drugi simbol, npr. simbol d, a masina prelazi u novo stanje q2 .


Opisani pristup se ostvaruje sljedecim prijelazima:
1. (q0 , a) = {q1 , c, R},
2. (q1 , a) = {q1 , a, R},
3. (q1 , d) = {q1 , d, R},
4. (q1 , b) = {q2 , d, L}.
U stanju q2 , glava se pomjera ulijevo i prelaze se simboli d, a zatim i simboli
a, da bi se pronasao krajnji lijevi simbol a. Ovaj simbol se pronalazi tako
da se procita simbol c, a glava se pomjeri udesno. U tom trenutku masina
M treba preci u stanje q0 , jer se pronalazenjem krajnjeg lijevog simbola
a opisani proces pretvaranja simbola a u c i simbola b u d nastavlja, sve
dok na traci ima zapisanih simbola a i b. Ovaj dio procesa prihvacanja se
ostvaruje sljedecim prijelazima:
5. (q2 , d) = {q2 , d, L},
6. (q2 , a) = {q2 , a, L},
7. (q2 , c) = {q0 , c, R}.
Ako su svi simboli a pretvoreni u simbol c, masina M ce prijelazima iz
prethodnog skupa preci u stanje q0 , a glava ce biti pozicionorana na simbolu
d. U toj situaciji masina prelazi u novo stanje q3 , u kojem se glava svakim
procitanim simbolom d treba pomjerati udesno, da bi se provjerilo da li su
i svi simboli b pretvoreni u simbol d. Ako su na traci svi simboli b takoder
pretvoreni u simbole d, masina ce pomjerati glavu udesno sve dok se ne
procita simbol prazne celije t. U tom trenutku, masina pomjera glavu na
krajnji desni simbol d, prelazi u prihvatljivo stanje q4 , te zaustavlja svoj
rad. Opisani dio procesa prihvacanja se ostavruje sljedecim prijelazima:
8. (q0 , d) = {q3 , d, R}
9. (q3 , d) = {q3 , d, R}
10. (q3 , t) = {q4 , t, L}
Prema tome, Turingova masina koja prihvaca jezik L(M ) = {an bn | n 1}
je:
M = ({q0 , q1 , q2 , q3 , q4 }, {a, b}, {a, b, c, d}, , q0 , t, {q4 }}),

(q1 , caabbb)
(q2 , caadbb)

(q1 , caabbb)
(q0 , caadbb)

> >

(q2 , cacdbb)

> >

(q1 , caabbb)

> >

(q0 , aaabbb)

> >

gdje je funkcija prijelaza zadana prethodno definiranim prijelazima (1)-(10).


Dijagram stanja konstruirane TM M je prikazan na slici 11.6.
Slijed prijelaza kojim se prihvaca rijec aaabbb mozemo prikazati korak po
korak na sljedeci nacin:
(q2 , caadbb)
(q1 , ccadbb)


PREDAVANJE 11. TURINGOVA MASINA

140

aR
dR
a c, R

q0

b d, L

q1

q2

cR

dR
tL

q3

dL
aL

q4

dR

(q1 , cccddb)
(q0 , cccddd)

(q0 , ccaddb)
(q2 , cccddd)
(q3 , cccddd)

(q2 , ccaddb)
(q1 , cccddb)
(q2 , cccddd)
(q3 , cccddd)

> > > >

(q2 , ccaddb)

(q1 , ccadbb)

> > > >

(q1 , ccadbb)

> > > >

(q2 , ccaddb)
(q1 , cccddb)
(q2 , cccddd)
(q3 , cccdddt)

(q4 , cccddd).

, mozemo pisati:

(q0 , aaabbb)

>

Odnosno, koristeci notaciju

>

> > > > >

Slika 11.6: Dijagram stanja konstruirane TM M

(q4 , cccddd).

>

Za prihvatljivo stanje q4 nije definiran prijelaz niti za jedan simbol trake, pa se


rad TM zaustavlja. Buduci da je stanje q4 u skupu prihvatljivih stanja, rijec
aaabbb se prihvaca.
k
Ponekada je prikladno koristiti notaciju
, gdje k oznacava broj prijelaza
koji se primjenjuje pri prelazku iz jedne u drugu konfiguraciju. Za rijec aaabbb
funkcija prijelaza je primijenjena 25 puta, pa mozemo pisati sljedece:
25

>

(q0 , aabbb)

(q3 , ccddb).

(q2 , ccddb)

(q1 , ccdbb)
(q0 , ccddb)

(q2 , cadbb)
(q1 , ccdbb)
(q3 , ccddb)

> > >

(q0 , cadbb)

(q1 , cabbb)

> > >

(q1 , cabbb)

> > >

(q0 , aabbb)

> > >

Razmotrimo i jedan primjer slijeda prijelaza za ulaznu rijec koju TM M ne


prihvaca. Neka je to npr. rijec aabbb. Za tu rijec imamo sljedeci slijed prijelaza:
(q2 , cadbb)
(q2 , ccddb)
(q3 , ccddb).


PREDAVANJE 11. TURINGOVA MASINA

141

Prema tome, mozemo pisati:

odnosno
(q0 , aabbb)

>

12

>

(q0 , aabbb)

(q3 , ccddb),

(q3 , ccddb),

s obzirom da je funkciju prijelaza primjenjena 12 puta.


Za stanje q3 nije definiran prijelaz za simbol b, pa se rad TM zaustavlja.
Buduci da stanje q3 nije u skupu prihvatljivih stanja, rijec aabbb se ne prihvaca.


11.4

Izra
cunavanje funkcija Turingovom ma
sinom

Buduci da Turingova masina pored citanja simbola sa trake moze i pisati simbole
na traku, masina ima mogucnost pretvaranje ulaznih nizova simbola u izlazne
nizove simbola. Kao sto znamo transformacija ulaznih u izlazne podatke je
primarni zadatak digitalnih racunara, pa Turingova masina zapravo predstavlja
jednostavan apstraktni matematicki model racunara. Pretpostavljamo da ulaz
Turingove masine predstavlja sadrzaj svih celija ulazne trake koje nisu oznacene
simbolom prazne celije t. Nadalje, izlaz predstavlja sadrzaj svih celija koji je
ostao na traci nakon zaustavljanja rada Turingove masine.
Definicija 11.3. Funkcija f je izracunljiva ako postoji Turingova masina M =
(Q, , , , q0 , B, F ) takva da vrijedi:

>

q0 w

qf f (w)

(11.1)

gdje je stanje qf F

Na slici 11.7a je ilustrirana pocetna konfiguracija TM M , dok je na slici 11.7b


ilustrirana konfiguracija TM M nakon izracunavanja funkcije f (w) i zaustavljanja
u stanju qf . Pri izracunavnju funkcija Turingovom masinom potrebno je definirati

izlaz

ulaz

... t

t ...

... t

f (w)

t t ...

qf

q0
(a)

(b)

Slika 11.7: Pocetna i zavrsna konfiguracija TM pri izracunavanju funkcije f (w)

nacin prikaza argumenata funkcije, kao i dobijenog rezultata nakon izracunavanja.


Uobicajeno je da se cijeli brojevi zapisuju u tzv. unarnom brojnom sistemu. Ako


PREDAVANJE 11. TURINGOVA MASINA

142

ulazni alfabet definiramo na sljedeci nacin = {0, 1}, tada mozemo brojem
simbola 1 oznaciti vrijednost cijelog broja, dok simbol 0 mozemo iskoristiti za
razdvajanje cijelih brijeva u situacijama kada funkcija f ima vise od jednog
argumenta. Naprimjer, ako funkcija f ima m argumenata (n1 , n2 , . . . nm ), tada
se ti argumenti na traci mogu zapisati na sljedeci nacin:
1n1 01n2 0 . . . 01nm
Sljedecih nekoliko primjera prikazuje Turingove masine za izracunavanje
cjelobrojnih funkcija.
Primjer 11.2. U ovom primjeru cemo konstruirati TM M koja izracunava
funkciju:
f (x, y) = x + y,
gdje su x i y prirodni brojevi zapisani u unarnom brojnom sistemu. Na slici
11.8a je ilustrirana pocetna konfiguracija, dok je na slici 11.7 ilustrirana zavrsna
konfiguracija nakon procesa izracunavanja.
y

... t 1 1

...

1 0 1

...

1 t ...

q0
(a)
x+y

... t 1 1

...

1 1 t t ...

qf
(b)

Slika 11.8: Pocetna i zavrsna konfiguracija pri izracunavanju funkcije f (x, y) = x + y

Turingova masina M izracunava f (x, y) = x + y tako sto umjesto simbola


0, koji na traci razdvaja argumente x i y, zapisuje simbol 1, a zatim na mjestu
krajnjeg desnog simbola 1 zapisuje oznaku prazne celije t. Glava se na kraju
rada pozicionira na krajnji lijevi simbol 1 izlaznog niza simbola. Detaljan opis
nacina izracunavanja je sljedeci:
U pocetnom stanju q0 se prelazi preko simbola 1, sve do citanja simbola

0. Citanjem
simbola 0, na njegovo mjesto se zapisuje simbol 1, te se
prelazi u novo stanje q1 . Ovaj dio nacina rada TM M opisujemo sljedecim
prijelazima:
1. (q0 , 1) = {q0 , 1, R}
2. (q0 , 0) = {q1 , 1, R}


PREDAVANJE 11. TURINGOVA MASINA

143

U stanju q1 masina prelazi preko simbola 1, sve do citanja simbola t.

Citanjem
simbola t, glava za citanje i pisanje se pomjera ulijevo, te se
prelazi u stanje q2 , bez promjene procitanog simbola t. Ovaj dio nacina
rada TM M opisujemo sljedecim prijelazima:
3. (q1 , 1) = {q1 , 1, R}
4. (q1 , t) = {q2 , t, L}
U stanju q2 na mjesto krajnjeg desnog simbola 1 se zapisuje simbol t i
prelazi se u stanje q3 . Dakle, u stanju q2 imamo sljedeci prijelaz:
5. (q2 , 1) = {q3 , t, L}
U stanju q3 glava se pomjera ulijevo sve do simbola prazne celije t.

Citanjem
simbola t, glava se pomjera udesno na krajnji lijevi simbol
1, prelazi se u prihvatljivo stanje q4 i rad TM M se zaustavlja. Dakle, u
stanju q3 imamo sljedece prijelaze:
6. (q3 , 1) = {q3 , 1, L}
7. (q3 , t) = {q4 , t, R}
Prema tome, izgradujemo sljedecu TM M :
M = {{q0 , q1 , q2 , q3 , q4 }, {0, 1}, {0, 1, t}, , q0 , t, {q4 }},
gdje je funkcija zadana prethodno definiranim prijelazima (1)-(7).
Dijagram stanja TM M je prikazan na slici 11.9.
1R

q0

1R
0 1, R

q1

1L
tL

1 t, L

q2

q3
tR

q4
Slika 11.9: Dijagram stanja konstruirane TM M

111111q1 t

111q1 111

>

>

11q0 0111

11111q2 1

1111q1 11

>

11111q1 1

>

1q0 10111

> >

q0 110111

> >

Sljedeci slijed prijelaza prikazuje promjene konfiguracija, tj. nacin na koji


TM M izracunava vrijednost funkcije f (2, 3) = 5.

1111q3 1

q3 t 11111

144
1q3 1111

>

11q3 111

>

>

111q3 11

>

> >

PREDAVANJE 11. TURINGOVA MASINA


q3 11111

q4 11111.

Prema tome, imamo:

>

q0 110111

q4 11111,

gdje je q4 F , pa je time zavrsen proces izracunavanja f (2, 3) = 2 + 3 = 5.



Primjer 11.3. U ovom primjeru cemo prikazati TM M koja izracunava sljedecu
funkciju:
f (x) = 2x,
gdje je broj x na ulaznoj traci zapisan u unarnom brojnom sistemu.
Turingova masina M izracunava funkciju f (x) = 2x tako sto svaki ulazni
simbol 1 jos jednom dodatno kopira. Buduci da proces kopiranja masina mora
raditi simbol po simbol, potrebno je na neki nacin biljeziti koji su simboli kopirani.
U tu svrhu masina prvo sve simbole 1 zapisane na ulaznoj traci prvo pretvori u
simbol m. Simbol m je odabran bez nekog osobitog razloga, jer je njegova uloga
jedino da markira one simbole 1 koji nisu jos uvijek kopirani. Naprimjer, ako je
na ulaznoj traci bio broj 4 kodiran kao 1111, tada ce masina na traci zapisati
niz simbola mmmm. Nakon toga, masina pocevsi od krajnjeg desnog simbola
m, prvo taj simbol ponovno pretvori u simbol 1, a zatim simbol 1 jos dodatno
zapise (kopira) s desne strane na prvoj praznoj celiji. Dakle, u nasem primjeru
niz simbola mmmm se transformira u niz simbola mmm11. U sljedecem koraku
masina ce niz simbola mmm11 transformirati u niz simbola mm1111. Proces
pretvaranja simbola m u simbol 1 i zapisivanja jos jednog dodatnog simbola 1
na prvoj praznoj celiji se obavlja s desna na lijevo, sve dok se ne kopiraju svi
ulazni simboli 1. Detaljan opis nacina izracunavanja je sljedeci:

TM M u stanju q0 prvo sve simbole 1 pretvori u simbole x. Citanjem


simbola t, masina prelazi u stanje q1 i pomjera glavu u lijevo na krajnji
desni simbol x. Ovaj dio rada TM M opisujemo sljedecim prijelazima:
1. (q0 , 1) = {q0 , m, R}
2. (q0 , t) = {q1 , t, L}
U stanju q1 masina za procitani simbol m zapisuje 1, pomjera glavu udesno
i prelazi u stanje q2 . Osim toga masina u stanju q1 citanjem simbola 1
glavu pomjera ulijevo, bez promjene procitanog simbola. Nadalje, ako
masina u stanju q1 procita simbol t to znaci da su svi ulazni simboli
kopirani, pa TM M tada pomjera galavu udesno na krajnji lijevi simbol
i prelazi u finalno stanje q3 . Ovaj dio rada TM M opisujemo sljedecim
prijelazima:
3. (q1 , 1) = {q1 , 1, L}
4. (q1 , m) = {q2 , 1, R}


PREDAVANJE 11. TURINGOVA MASINA

145

5. (q1 , t) = {q3 , t, R}

U stanju q2 TM M pomjera glavu udesno i prelazi preko svih simbol 1,

sve dok ne procita simbol t. Citanjem


simbola t, masina zapisuje simbol
1 i pomjera glavu ulijevo. Ovaj dio rada TM M opisujemo sljedecim
prijelazima:
6. (q2 , 1) = {q2 , 1, R}
7. (q2 , t) = {q1 , 1, L}
Prema tome, izgradujemo sljedecu TM M :
M = {{q0 , q1 , q2 , q3 }, {1}, {1, m, t}, , q0 , t, {q3 }},
gdje je funkcija zadana prethodno definiranim prijelazima (1)-(7). Dijagram
stanja TM M je prikazan na slici 11.10.
1 m, R

q0

1 1, L
tL

q1

1 1, R

m 1, R

q2

t 1, L
tR

q3
Slika 11.10: Dijagram stanja konstruirane TM M

> >

>

>

> >

1q1 11111

q1 m1111

11111q2 t

m111q2 t

>

1111q2 1

m11q2 1

mm1q2 t

q1 111111

1q2 1111

1111q1 11
>

11q1 1111

mq1 1111
>

>

111q2 11

m1q2 11

mmq1 m

>

111q1 111

>

11q2 111

m1q1 111

> >

m11q1 11

mq1 m11

mmmq0 t

>

>

mmq1 11

mmq0 1

> > >

mq0 11

>

q0 111

> > > > > >

Nacin rada TM M cemo objasniti na jednom konkretnom primjeru. Pretpostavimo da je na ulaznoj traci zapisan broj 3 u unarnom zapisu 111. Sljedeci
slijed konfiguracija prikazuje nacin na koji TM M izracunava vrijednost funkcije
f (3) = 6.

q1 t 111111

q3 111111



PREDAVANJE 11. TURINGOVA MASINA

146

Primjer 11.4. U ovom primjeru cemo prikazati TM M koja izracunava sljedecu


funkciju:
f (n) = n + 1,
pri cemu je broj n na traci zapisan u decimalnom brojnom sistemu.
Turingova masina M izracunava funkciju f (n) = n + 1 na sljedeci nacin:
U stanju q0 TM M prvo pomjera glavu udesno s ciljem da je pozicionira
na krajnji desni simbol. Prema tome, glava se pomjera udesno, sve dok
masina ne procita simbol t. Kada glava za citanje i pisanje procita simbol
t, pomjera se za jednu celiju ulijevo, cime se pozicionira na krajnji desni
simbol, a masina prelazi u stanje q1 . Ovakvo ponasanje TM M opisujemo
sljedecim prijelazima:
1. (q0 , 0) = {q0 , 0, R}
2. (q0 , 1) = {q0 , 1, R}
3. (q0 , 2) = {q0 , 2, R}
..
.
10. (q0 , 9) = {q0 , 9, R}
11. (q0 , t) = {q1 , t, R}
Napomenimo da su prijelazi (1) - (11) prikazani u skracenom zapisu. Naime,
s obzirom na oblik prva tri prijelaza (1)-(3), kao i oblik prijelaza (10), gornji
zapis podrazumijevamo da se na slican nacin grade i prijelazi (4)-(9). Slican
nacin skracivanja zapisa kojim prikazujemo prijelaze cemo koristiti i u
nastavku, u svim situacijama kada se na temelju prikazanih prvih nekoliko
prijelaza moze jednostavno zakljuciti i oblik ostalih prijelaza.
U stanju q1 TM M citanjem simbola nekog broja iz skupa {0,1,2,. . . ,8},
na njegovo mjesto zapisuje broj uvecan za jedan, glava se pomjera za
jednu celiju ulijevo, a masina prelazi u stanje q2 . Naprimjer, ako masina
procita simbol 0, tada se zapisuje simbol 1. Zatim, ako masina procita
simbol 1, zapisuje se simbol 2, itd. Jos je ostalo da razmotrimo ponasanje
masine kada glava procita simbol 9. U ovom slucaju masina na traku
zapisuje simbol 0, glava se pomjera za jednu celiju ulijevo, a buduci da
je u ovom slucaju zbog prijenosa potrebno dodati broj jedan na trenutno
pozicionirani simbol, masina ostaje u stanju q1 . Ovakvo ponasanje TM M
opisujemo sljedecim prijelazima:
12. (q1 , t) = {q2 , 1, L}
12. (q1 , 0) = {q2 , 1, L}
13. (q1 , 1) = {q2 , 2, L}
..
.
19. (q1 , 8) = {q2 , 9, L}
22. (q1 , 9) = {q1 , 0, L}


PREDAVANJE 11. TURINGOVA MASINA

147

Buduci da zahtijevamo da TM M zaustavi svoj rad tako da se pozicionira na


prvi simbol rezultirajuceg niza simbola, u stanju q2 TM M citanjem svih simbola
iz alfabeta trake pomjera glavu ulijevo, bez promjene procitanog simbola i bez

promjene stanja. Citanjem


simbola t glava se pomjera za jednu celiju udesno,
cime se pozicionira na prvi simbol rezultirajuceg niza simbola, masina prelazi
u finalno stanje q3 i zaustavlja svoj rad. Upravo opisano ponasanje TM M
postizemo sljedecim prijelazima:
23. (q2 , 0) = {q2 , 0, L}
24. (q2 , 1) = {q2 , 1, L}
25. (q2 , 2) = {q2 , 2, L}
..
.
32. (q2 , 9) = {q2 , 9, L}
33. (q2 , t) = {q3 , t, R}
Prema tome, konstruiramo sljedecu TM M :
M = {{q0 , q1 , q2 , q3 }, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {1, 2, 3, 4, 5, 6, 7, 8, 9, t}, , q0 , t, {q3 }},
gdje je funkcija zadana prethodno definiranim prijelazima (1)-(33). Dijagram
stanja konstruirane TM M je prikazan na slici 11.11.
0
1
2
...
9

q0

R
R
R

9 0, L

tL

q1

t 1, L
0 1, L
1 2, L
...
8 9, L

0
1
2
...
9

q2

L
L
L
L

tR

Slika 11.11: Dijagram stanja konstruirane TM M

q3


PREDAVANJE 11. TURINGOVA MASINA

... t 2 9 t ...

148

... t 2 9 t ...

q0

q0

(a) (q0 , 2) = (q0 , 2, R)

(b) (q0 , 9) = (q0 , 9, R)

... t 2 9 t ...

... t 2 9 t ...

q0

q1

(c) (q0 , t) = (q1 , t, L)

(d) (q1 , 9) = (q1 , 0, L)

... t 2 0 t ...

... t 3 0 t ...

q1

q2
(f ) (q2 , t) = (q3 , t, R)

(e) (q1 , 2) = (q2 , 3, L)

... t 3 0 t ...
q3
(g) Zaustavljeno

Slika 11.12: Promjena konfiguracije TM M pri izracunavanju funkcije f (29) = 30

q1 20

>

2q1 9

>

29q0 t

>

2q0 9

>

q0 29

> >

Na slici 11.12 su ilustrirane promjene konfiguracije za ulazni broj 29, zapisan


na traci u decimalnom brojnom sistemu. Prikazani slijed promjena konfiguracija
mozemo zapisati i na sljedeci nacin:
q2 t 30

q3 30.


You might also like