afj predavanja 2.parc
TRANSCRIPT
-
8/19/2019 AFJ Predavanja 2.Parc
1/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 59
3.7 Ekvivalentnost kona čnih automata i regularnih izraza-
Kleeneov teorem
Do sada smo tretirali odnos izmedu konačnih automata i regularnih izraza samo intu-
itivno. Naime, prethodno smo imali neke primjere koji ilustriraju da se u odredenim
situacijama relativno jednostavno mogu izgraditi nedeterministički konačni automati
koji prihvaćaju jezike koji su zadani nekim regularnim izrazom. U ovom odjeljku
ćemo Kleenovim teoremom formalizirati odnos izmedu konačnih automata i regular-
nih izraza. Na ovom mjestu ćemo prvo pokazati da se za bilo koji regularni izraz r
može 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 Σ
mogu´ ce je konstruirati ε-NKA M tako da vrijedi L( M ) = L(r ).
Dokaz. Prvo ćemo opisati postupke konstrukcije ε-NKA koji prihvaćaju jezike opisane
elementarnim regularnim izrazima ∅, ε i a ∈ Σ, a nakon toga slijedi opis postupaka
konstrukcije ε-NKA koji prihvaćaju jezike opisane regularne izraze r 1 + r 2, r 1r 2 i r ∗1
.
Predavanje 06
-
8/19/2019 AFJ Predavanja 2.Parc
2/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni 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. Početno 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 početnog stanja q0 u prihvatljivo stanje q1. Prema tome, ε-NKA M
ne prihvaća niti jedan niz sibola. Čak štaviše, ε-NKA M ne prihvaća niti praznu riječ
ε, jer je početno stanje q0 neprihvatljivo.
q0 q1
(a) ε-NKA koji prihvaća jezik L(∅) = ∅
q0 q1ε
(b) ε-NKA koji prihvaća jezik L(ε) = {ε}
q0 q1a
(c) ε-NKA koji prihvaća 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. Početno stanje je
q0, a prihvatljivo stanje je q1. Prijelaz δ(q0, ε) = {q1} omogućuje prihvaćanje prazne
riječi ε. Za bilo koji simbol a ∈ Σ, skup δ(q0, a) je prazan skup, pa zaključujemo da
ε-NKA M prihvaća isključivo praznu riječ ε.
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. Početno stanje
je q0, a prihvatljivo stanje je q1. Prijelaz δ(q0, a) = {q1} omogućuje prihvaćanje riječi
a, koja sadrži samo jedan simbol. Za bilo koji b ∈ (Σ ∪ {ε}), za koji vrijedi b a, skup
δ(q0, b) je prazan skup, pa je omogućen prijelaz iz početnog stanja q0 u prihvatljivo
-
8/19/2019 AFJ Predavanja 2.Parc
3/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 61
stanje q1 samo za simbol a. Naravno, budući da i za praznu riječ ε ne postoji prijelaz
iz početnog stanja q0 u prihvatljivo stanje q1, zaključujemo da ε-NKA M ne prihvaća
niti praznu riječ ε. Osim toga, skup δ(q1, b) je prazan za sve simbole b ∈ (Σ ∪ {ε}), pazaključujemo da ε-NKA M prihvaća isključivo niz simbola a.
Postupak (4): U okviru ovog postupka opisujemo način konstrukcije ε-NKA za regu-
larni izraz r 1 + r 2, koji definira jezik L(r 1 + r 2) = L(r 1) ∪ L(r 2). Pretpostavimo da su
prethodno izgradeni ε-NKA M 1 i M 2:
M 1 = (Q1, Σ1, δ1, q1, { f 1}) (3.10a)
M 2 = (Q2, Σ2, δ2, q2, { f 2}) (3.10b)
takvi da vrijedi:
L( M 1) = L(r 1) (3.11a)
L( M 2) = L(r 2) (3.11b)
Primijetimo da kod oba ε-NKA skup prihvatljivih stanja sadrži samo jedno stanje.
Takoder, pretpostavit ćemo da iz prihvatljivih stanja f 1 i f 2 nema prijelaza niti za je-
dan ulazni simbol. Drugim riječima, vrijedi δ1( f 1, a) = ∅, za svako a ∈ (Σ1 ∪ {ε}) i
δ2( f 2, b) = ∅, za svako b ∈ (Σ2 ∪ {ε}). Nadalje,ukoliko je to potrebno, promjenom
imena stanja možemo postići da vrijedi Q1 ∩ Q2 = ∅. Za regularni izraz r 1 + r 2, koji
definira jezik L(r 1 + r 2) = L(r 1) ∪ L(r 2) konstruiramo novi ε-NKA M na sljedeći način:
M = (Q1 ∪ Q2 ∪ {q0, f },Σ1 ∪ Σ2, δ, q0, { f }),
gdje je funkcija δ definirana na sljedeći način:
• δ(q0, ε) = {q1, q2}
• δ(q, a) = δ1(q, a), za svako a ∈ (Σ1 ∪ {ε}) i za svako q ∈ (Q1 \ { f 1})
• δ(q, b) = δ2(q, b), za svako b ∈ (Σ2 ∪ {ε}) i za svako q ∈ (Q2 \ { f 2})
• δ( f 1, ε) = δ( f 2, ε) = { f }
Dijagram stanja konstruiranog ε-NKA M je prikazan na slici 3.14. Stanja automata
M uključuju stanja automata M 1 i M 2, kao i dva dodatna stanja: novo početno stanje
q0 i novo prihvatljivo stanje f . Dakle,stanja q1 i q2 nisu više početna stanja, te stanja f 1i f 2 nisu više prihvatljiva stanja. Prijelazi automata M sadrže sve prijelaze iz automata
M 1 i M 2, kao i dodatne ε-prijelaze iz novog početnog stanja q0 u stanja q1 i q2, te
ε-prijelaze iz stanja f 1 i f 2 u novo prihvatljivo stanje f .
Uzmimo npr. da automat M 1 prihvaća neku riječ w,w ∈ L( M 1). Tada, automat M
prihvaća tu riječ tako što prvo primjenimo ε-prijelaz iz stanja q0 u stanje q1, a zatim
se izvodi slijed prijelaza kojim automat M 1 inače prihvaća riječ w. S druge strane, ako
automat M prihvaća neku riječ w, w ∈ L( M ), tada je jedna od mogućnosti da slijed
prijelaza uključuje ε-prijelaz iz stanja q0 u stanje q1 i ε-prijelaz iz stanja f 1 u stanje
-
8/19/2019 AFJ Predavanja 2.Parc
4/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 62
q0
q1 f 1
q2 f 2
f
M 1
M 2
ε
ε
ε
ε
Slika 3.14: Konstrukcija ε-NKA koji prihvaća jezik L(r 1 + r 2)
f . Druga mogućnost je da slijed prijelaza uključuje ε-prijelaz iz stanja q0 u stanje q2 i
ε-prijelaz iz stanja f 2 u stanje f . Budući da vrijedi Q1 ∩ Q2 = ∅, slijed prijelaza koji
odgovara riječi w mora završiti u nekom od prihvatljivih stanja automata M 1 ili M 2,
tj. riječ w mora prihvaćati automat M 1 ili automat M 2. Prema tome, zaključujemo da
automat M prihvaća riječ w ako i samo ako riječ w prihvaća automat M 1 ili M 2.
Postupak (5): U okviru ovog postupka opisujemo način konstrukcije ε-NKA za regu-
larni izraz r 1r 2, koji definira jezik L(r 1r 2) = L(r 1) L(r 2). Pretpostavimo da su prethodno
izgradeni ε-NKA M 1 i M 2:
M 1 = (Q1,Σ1, δ1, q1, F 1) (3.12a)
M 2 = (Q2,Σ2, δ2, q2, F 2) (3.12b)
takvi da vrijedi:
L( M 1) = L(r 1) (3.13a)
L( M 2) = L(r 2) (3.13b)
Primijetimo da kod oba ε-NKA skup prihvatljivih stanja sadrži samo jedno stanje.
Takoder, pretpostavit ćemo da iz prihvatljivih stanja f 1 i f 2 nema prijelaza niti za je-
dan ulazni simbol. Drugim riječima, vrijedi δ1( f 1, a) = ∅, za svako a ∈ (Σ1 ∪ {ε}) i
δ2( f 2, b) = ∅, za svako b ∈ (Σ2 ∪ {ε}). Nadalje, ukoliko je to potrebno, promjenom
imena stanja možemo postići da vrijedi Q1 ∩ Q2 = ∅. Za regularni izraz r 1r 2 koji
definira jezik L(r 1r 2) = L(r 1) L(r 2) konstruiramo ε-NKA M na sljedeći način:
M = (Q1 ∪ Q2,Σ1 ∪ Σ2, δ, q1, { f 2}),
gdje je funkcija prijelaza definirana na sljedeći način:
• δ(q, a) = δ1(q, a), za svako a ∈ (Σ1 ∪ {ε}) i za svako q ∈ (Q1 \ { f 1})
-
8/19/2019 AFJ Predavanja 2.Parc
5/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 63
• δ(q, b) = δ2(q, b), za svako b ∈ (Σ2 ∪ {ε}) i za svako q ∈ Q2
• δ( f 1, ε) = {q2}
Dijagram stanja konstruiranog ε-NKA M je prikazan na slici 3.15. Dakle, nije
potrebno dodavati nova stanja onima već prisutnim u automatima M 1 i M 2. Početno
stanje automata M je stanje q1, tj. početno stanje automata M 1. Prihvatljivo stanje
automata M je prihvatljivo stanje automata M 2. Dakle, stanje q2 nije više početno
stanje, a stanje f 1 nije više prihvatljivo stanje. Prijelazi automata M uključuju sve
prijelaze automata M 1 i M 2, kao i novi ε-prijelaz od stanja f 1 do stanja stanja q2.
q1 f 1 q2 f 2
M 1 M 2
ε
Slika 3.15: Konstrukcija ε-NKA M koji prihvaća jezik L(r 1r 2)
Pretpostavimo da za neku riječ w vrijedi w ∈ L( M 1) L( M 2). Tada, riječ w možemo
prikazati kao riječ w = w1w2 koja nastaje nadovezivanjem riječi w1 koju prihvaća auto-
mat M 1 (w1 ∈ L( M 1)) i riječi w2 koju prihvaća automat automat M 2 (w2 ∈ L( M 2)). U
tom slučaju, automat M može obraditi riječ w slijedom prijelaza od stanja q1 do stanja
f 1 koristeći praznu riječ ε i simbole riječi w1, zatim primjenom ε-prijelaza od stanja f 1do stanja q2, te na kraju obrade primjenom slijeda prijelaza od stanja q2 do stanja f 2, ko-
risteći praznu riječ ε i simbole iz riječi w2. Prema tome, ako vrijedi w ∈ L( M 1) L( M 2),
zaključujemo da isto tako vrijedi w ∈ L( M )). S druge strane, ako automata M prihvaća
neku riječ w, w ∈ L( M ), tada u odredenom trenutku procesa izračunavanja, automat M mora primijeniti ε-prijelaz od stanja f 1 do stanja q2. Ako sa w1 označimo prefiks
riječi w koji predstavlja niz simbola koji su konzumirani to tog trenutka primjene ε-
prijelaza, tada automat M 1 mora prihvaćati riječ w1. Imajući u vidu da nakon primjene
ε-prijelaza, slijed prijelaza može uključivati samo one prijelaze koji pripadaju automatu
M 2, te imajući u vidu da slijed prijelaza za taj preostali niz simbola kojeg ćemo označiti
sa w2, odgovara slijedu prijelaza od stanja q2 do prihvatljivog stanja f 2, zaključujemo
da automat M 2 mora prihvaćati preostali dio simbola w2, koji predstavlja sufiks riječi
w. Prema tome, ako automat M prihvaća neku riječ w, w ∈ L( M ), tada isto tako vrijedi
da automat M 1 prihvaća riječ w1, a automat M 2 prihvaća riječ w2. Drugim riječima, ako
automat M prihvaća neku riječ w = w1w2, tada vrijedi w ∈ L( M 1) L( M 2). Na temelju
prethodno rečenog zaključujemo da automat M prihvaća neku riječ w, w ∈ L( M ), ako
i samo ako vrijedi w ∈ L( M 1) L( M 2).
Postupak (6): U okviru ovog postupka opisujemo način konstrukcije ε-NKA za re-
gularni izraz r ∗1, koji definira jezik L(r ∗1
) = L(r 1)∗. Pretpostavimo da je prethodno
konstruiran ε-NKA M 1:
M 1 = (Q1, Σ1, δ1, q1, { f 1}) (3.14a)
-
8/19/2019 AFJ Predavanja 2.Parc
6/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 64
za koji vrijedi
L( M 1) = L(r 1) (3.15a)
Pretpostavljamo da skup prihvatljivih stanja ε-NKA M 1 sadrži samo jedno stanje.
Takoder, pretpostavit ćemo da iz prihvatljivog stanja f 1 nema prijelaza niti za jedan
ulazni simbol, tj. vrijedi δ1( f 1, a) = ∅, za svako a ∈ (Σ1 ∪ {ε}). Za regularni izraz r ∗1
koji definira jezik L(r ∗1
) = L(r 1)∗ konstruiramo ε-NKA M = (Q, Σ, δ, q0, F ) na sljedeći
način:
M = (Q1 ∪ {q0, f }, Σ1, δ, q0, { f 1}),
gdje je funkcija prijelaza δ definirana na sljedeći način:
• δ(q0, ε) = δ( f 1, ε) = {q1, f }
• δ(q, a) = δ1(q, a), za svako a ∈ (Σ1 ∪ {ε}) i za svako q ∈ (Q1 \ { f 1})
Dijagram stanja izgradenog ε-NKA M koji prihvaća jezik L( M ) = L( M 1)∗ je pri-
kazan na slici 3.16. Skup stanja automata M se sastoji od svih stanja skupa Q1 i dva
dodatna stanja: novog početnog stanja q0 i novog prihvatljivog stanja f . Dakle, stanje
q1 nije više početno stanje, a stanje f 1 nije više prihvatljivo stanje. Prijelazi automata
M su svi prijelazi automata M 1, zatim dodatni ε-prijelazi od stanja q0 do stanjâ q1 i f ,
kao i dodatni ε-prijelazi od stanja f 1 do stanjâ q1 i f .
q0 q1 f 1 f
M 1ε
ε
ε
ε
Slika 3.16: Konstrukcija ε-NKA M koji prihvaća jezik L( M 1)∗
Sada ćemo pokazati da automat M prihvaća neku riječ w ako i samo ako vrijedi
w ∈ L( M 1)∗.
Prvo ćemo indukcijom pokazati da ako vrijedi w ∈ L( M 1)∗, tada automat M pri-
hvaća riječ w.
Osnovni slu čaj. Automat M prihvaća praznu riječ ε, jer automat iz početnog stanjas primjenom ε-prijelaza može preći u prihvatljivo stanje.
Induktivni slučaj. Sada pretpostavimo da vrijedi x ∈ L( M 1)∗ i y ∈ L( M 1).
Razmotrimo proces izračunavanja automata M za riječ w = xy. Nakon obrade riječi
x, automat M će preći u prihvatljivo stanje f 1, pa može primijeniti ε-prijelaz do stanja
-
8/19/2019 AFJ Predavanja 2.Parc
7/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 65
s1. Zatim, konzumiranjem simbola riječi y automat M će preći u prihvatljivo stanje f 1,
te na kraju može iskoristiti ε-prijelaz do prihvatljivog stanja s. Prema tome, automat M
prihvaća riječ w = xy. Dakle, zaključujemo da ako vrijedi w ∈ L( M 1)∗, tada automat M prihvaća riječ w.
Sada ćemo indukcijom pokazati da ako automat M prihvaća neku riječ w, tada
vrijedi w ∈ L( M 1)∗. Pri prihvaćanju neke riječi w automat M ulazi u stanje f odredeni
broj puta. Upravo ćemo iskoristiti taj broj ulazaka automata M u stanje f da bismo
indukcijom dokazali gornju tvrdnju.
Osnovni slu čaj. Ako automat M pri obradi neke riječi w posjeti stanje f samo
jednom, tada vrijedi w = ε, tj. w ∈ L( M 1)∗.
Induktivni slu čaj. Ako automat M pri obradi neke riječi u stanje f ude n ili manje
puta, n ≥ 1, tada je ta riječ iz skupa L( M 1)∗.
Razmotrimo sada riječ w koju automat M prihvaća tako da pri njenoj obradi u stanje
f ulazi n + 1 puta. Neka je x prefiks riječi w, te neka automat M prihvaća prefiks x
tako da u stanje f ulazi n-ti put. Nadalje, neka je y preostali dio riječi w, tj. w = xy.
Prema indukcijskoj hipotezi vrijedi x ∈ L( M 1)∗. Pri obradi riječi y, automat M prelazi
u stanje q1 koristeći ε-prijelaz, a zatim konzumiranjem ε-prijelaza i simbola iz riječi y
dolazi do stanja f 1, tj. vrijedi y ∈ L( M 1). Iz x ∈ L( M 1)∗ i y ∈ L( M 1) slijedi da za riječ
w = xy vrijedi w ∈ L( M 1)∗. Dakle, zaključujemo da ako automat M prihvaća neku riječ
w, tada vrijedi w ∈ L( M 1)∗.
Primjer 3.8. Neka je potrebno izgraditi ε-NKA za sljedeći regularni izraz:
r = b(ab)∗ + ab∗a
1: Regularni izraz r = b(ab)∗ + ab∗a ćemo prvo prikazati kao r = r 1 + r 2, gdje su
r 1 = b(ab)∗ i r 2 = ab
∗a.
2: Regularni izraz r 1 = b(ab)∗ možemo prikazati u obliku r 1 = r 3r 4, gdje su r 3 = b i
r 4 = (ab)∗.
3: Za izraz r 3 = b koristeći postupak (1) konstruiramo ε-NKA kao što je prikazano na
slici 3.17a.
4: Izraz r 4 = (ab)∗ možemo prikazati na sljedeći način: r 4 = r
∗5
, gdje je r 5 = ab.
5: Izraz r 5 = ab rastavljamo na sljdeći način:r 5 = r 6r 7, gdje su r 6 = a i r 7 = b
6: Za izraze r 6 = a i r 7 = b koristeći postupak (3) konstruiramo ε-NKA kao što je
prikazano na slikama 3.17b i 3.17c .
7: Za izraz r 5 = ab koristeći postupak (5) konstruiramo ε-NKA kao što je prikazano
na slici 3.17d.
8: Za izraz r 4 = (ab)∗ koristeći postupak (6) konstruiramo ε-NKA kao što je prikazano
na slici 3.17e.
-
8/19/2019 AFJ Predavanja 2.Parc
8/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 66
9: Za izraz r 1 = b(ab)∗ koristeći postupak (5) konstruiramo ε-NKA kao što je prika-
zano na slici 3.17f.
q1 q2b
(a) ε-NKA za izraz r 3 = b
q3 q4a
(b) ε-NKA za izraz r 6 = a
q5 q6b
(c) ε-NKA za izraz r 7 = b
q3 q4 q5 q6a ε b
(d) ε-NKA za izraz r 5 = r 6r 7 = ab
q7 q3 q4 q5 q6 q8a ε bε ε
ε
ε
(e) ε-NKA za izraz r 4 = r ∗5 = (ab)∗
q1 q2 q7 q3 q4 q5 q6 q8b ε a ε bε ε
ε
ε
(f) ε-NKA za izraz r 1 = r 3r 4 = b(ab)∗
Slika 3.17: Konstrukcija ε-NKA za regularni izraz r 1 = b(ab)∗
10: Regularni izraz r 2 = ab∗a možemo rastaviti na sljedeći način: r 2 = r 8r 9, gdje su
r 8 = a i r 9 = b∗a.
11: Za izraz r 8 = a koristeći postupak (3) konstruiramo ε-NKA kao što je prikazano na
slici 3.18a.
12: Izraz r 9 = b∗a možemo rastaviti na sljedeći način: r 9 = r 10r 11, gdje su r 10 = b
∗ i
r 11 = a.
13: Za izraz r 11 = a koristeći postupak (3) konstruiramo ε-NKA kao što je prikazano
na slici 3.18b.
-
8/19/2019 AFJ Predavanja 2.Parc
9/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 67
14: Izraz r 10 = b∗ rastavljamo na sljedeći način: r 10 = r
∗12
, gdje je r 12 = b.
15: Za izraz r 12 = b koristeći postupak (3) konstruiramo ε-NKA kao što je prikazanona slici 3.18c.
16: Za izraz r 10 = b∗ koristeći postupak (6) konstruiramo ε-NKA kao što je prikazano
na slici 3.18d.
17: Za izraz r 9 = b∗a koristeći postupak (5) konstruiramo ε-NKA kao što je prikazano
na slici 3.18e.
18: Za izraz r 2 = ab∗a koristeći postupak (5) konstruiramo ε-NKA kao što je prikazano
na slici 3.18f.
q9 q10a
(a) ε-NKA za izraz r 8 =
a
q11 q12a
(b) ε-NKA za izraz r 11 =
a
q13 q14b
(c) ε-NKA za izraz r 12 =
b
q15 q13 q14 q16ε b ε
ε
ε
(d) ε-NKA za izraz r 10 = r ∗12 = b∗
q15
q13
q14
q16
q11
q12
ε b ε
ε
ε
ε a
(e) ε-NKA za izraz r 9 = r 10r 11 = b∗a
q9 q10 q15 q13 q14 q16 q11 q12a ε ε b ε
ε
ε
ε a
(f) ε-NKA za izraz r 2 = r 8r 9 = ab∗a
Slika 3.18: Konstrukcija ε-NKA za regularni izraz r 2 = ab∗a
19: Konačno, za regularni izraz r = b(ab)∗ + ab∗a konstruiramo ε-NKA na temelju
prethodno konstruiranih ε-NKA za izraze r 1 = b(ab)∗ i r 2 = ab
∗a, koji su prikazani
na slikama 3.17f i 3.18f, respektivno. Primjenjujući postupak (4) konstruiramo
rezultirajući ε-NKA kao što je prikazano na slici 3.19.
-
8/19/2019 AFJ Predavanja 2.Parc
10/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 68
q17
q1 q2 q7 q3 q4 q5 q6 q8
q9 q10 q15 q13 q14 q16 q11 q12
q18
b ε a ε bε ε
ε
ε
a ε ε b ε
ε
ε
ε a
ε
ε
ε
ε
Slika 3.19: Konstruirani ε-NKA za regularni izraz r = r 1 + r 2 = b(ab)∗ + ab∗a
3.7.2 Konstrukcija regularnog izraza za zadani ε-NKA
U ovom odjeljku ćemo pokazati da svaki -NKA M prihvaća regularne jezike.
Teorem 3.4. Za svaki -NKA M = (Q, Σ, δ, q0, F ) koji prihva´ ca jezik L( M ) postoji
regularni izraz r takav da vrijedi L(r ) = L( M ). Drugim rijeˇ cima, ako neki -NKA M
prihva´ ca jezik L, tada je jezik L regularan jezik.
Dokaz. Uzimajući u obzir da smo prethodno pokazali da se za svaki ε-NKA može iz-
graditi ekvivalentni DKA, dovoljno je da pokažemo da za svaki DKA M postoji regu-
larni izraz r takav da vrijedi L( M ) = L(r ). Pretpostavimo da DKA M = (Q, Σ, δ, q0, F )
prihvaća jezik L. Za svako stanje p, q ∈ Q možemo definirati jezik L( p, q) koji se
sastoji od svih riječi koje označavaju 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 riječi koje označavaju prijelaze od početnog stanja q0do nekog prihvatljivog stanja q ∈ F . Uzimajući u obzir sva prihvatljiva stanja q ∈ F ,
jezik L( M ) možemo izraziti na sljedeći način:
L( M ) =
q∈F
L(q0, q) (3.17)
Budući da znamo da se unijom regularnih jezika dobija takoder regularan jezik,
dovoljno je pokazati da je svaki jezik L(q0, q) regularan.
-
8/19/2019 AFJ Predavanja 2.Parc
11/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 69
Pretpostavimo da skup stanja Q nekog DKA M ima n stanja, pri čemu su ta stanja
označena cijelim brojevima od 1 do n. Za neka stanja p, q ∈ Q i j ≥ 0 uvedimo sljedeću
notaciju:
L( p, q, k ) =
x ∈ Σ∗
x odgovara slijedu prijelaza od p do q koji
ne sadrži stanja označena brojem većim od k
Dakle, L( p, q, j) označava skup riječi iz jezika L( p, q) koje odgovaraju slijedu prijelaza
automata M od stanja p do stanja q, pri čemu slijed prijelaza ne uključuje niti jedno
stanje koje je označeno brojem većim od j.
Osnovni slu čaj. Skup L( p, q, 0) je skup svih riječi koje odgovaraju slijedu prijelaza od
stanja p do stanja q, koji ne uključuje niti jedno stanje iz Q. Prema tome, prijelaz iz
stanja p u stanje q se ostvaruje direktno, pa skup L( p, q, 0) zapravo sadrži simbole a
iz alfabeta Σ, za koje vrijedi δ( p, a) = q. Osim toga, u slučaju da vrijedi p = q, tada
skup L( p, q, 0) uključuje i praznu riječ ε. Iz prethodno navedenog zaključujemo da je
L( p, q, 0) konačan skup riječi, pa je regularan.
Induktivni slu čaj. 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 riječi koje odgovaraju slijedu prijelaza od p do q, pri čemu slijed prijelaza ne
uključuje niti jedno stanje označeno brojem većim od k +1. Riječi iz skupa L( p, q, k +1)
možemo podijeliti u sljedeće dva podskupa:
1. U prvom podskupu L1 su one riječi kojima odgovaraju slijedovi prijelaza koji ne
uključuju stanje k + 1, pa su to zapravo riječi iz jezika:
L1 =
L( p, q, k )
2. U drugom podskupu L2 se nalaze one riječi kod kojih slijed prijelaza pored stanja
j za koje vrijedi 1 ≤ j ≤ k , uključuje i stanje k +1. Slijed prijelaza koji odgovara
riječima iz drugog podskupa možemo rastaviti na sljedeća tri dijela:
(a) Slijed prijelaza od stanja p do stanja k + 1. Ovaj slijed prijelaza odgovara
riječima iz jezika L( p, k + 1, k ).
(b) Slijed prijelaza koji može uključivati i višestruke prolaze kroz stanje k + 1,
pa kod ovog tipa prijelaza zapravo imamo petlju u stanju k + 1. Ovaj slijed
prijelaza odgovara riječima iz jezika L(k + 1, k + 1, k )
(c) Slijed prijelaza od stanja k + 1 do stanja q. Ovaj slijed prijelaza odgovara
riječima iz jezika L(k + 1, q, k )
Prethodno opisano rastavljanje na tri dijela slijeda prijelaza od stanja p do sta-nja q je ilustrirano na slici 3.20. Svaki od gore navedena tri dijela prijelaza ili
započinje ili završava u stanju k + 1 i može sadržavati maksimalno k stanja, pa
riječi iz drugog podskupa možemo formalno zapisati na sljedeći način:
L2 = L( p, k + 1, k ) L(k + 1, k + 1, k )∗ L(k + 1, q, k ) (3.18)
-
8/19/2019 AFJ Predavanja 2.Parc
12/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 70
Uzimajući u obzir induktivnu hipotezu, zaključujemo da je skup L2 definiran
izrazom 3.18 regularan.
Prema tome, uzimajući u obzir oba podskupa, skup L( p, q, k + 1) možemo zapisati na
sljedeći način:
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)
Budući da su skupovi L1 i L2 regularni, zaključujemo da je regularan i skup L( p, q, k +
1) definiran izrazom 3.19, pa smo time pokazali i induktivni korak.
p k + 1 q
Slika 3.20: Slijed prijelaza od stanja p do stanja q kroz stanje k + 1
Dakako, izraz 3.19 pokazuje i mogući način 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)
odnosno,
r ( p, q) = r ( p, q, n), (3.22)
jer L( p, q, n) i r ( p, q, n) isključuju slijedove prijelaza koji sadrže stanja veća od n, a to
ne predstavlja nikakvo ograničenje jer automat M ima upravo n stanja.
Primijetimo takoder da iz izraza 3.20 možemo zapravo izvesti algoritam za kons-
trukciju regularnog izraza za jezik L( p, q). Naime, regularan izraz r ( p, q, n) možemo
prikazati koristeći izraze r (i, j, n − 1), gdje i i j označavaju odredena potrebna sta-nja sukladno izrazu 3.20. Zatim izraze r (i, j, n − 1) možemo prikazati koristeći izraze
r (i, j, n − 2), itd. Na kraju razvoja izraza ćemo dobiti izraze za r (i, j, 1) koji su prika-
zani pomoću regularnih izraza r (i, j, 0). Nadalje, regularni izrazi r (i, j, 0) se mogu na
jednostavan način dobiti direktno iz same definicije automata M , imajući u vidu da sli-
jed prijelaza uključuje broj medustanja koji je jednak 0. Kada imamo regularne izraze
-
8/19/2019 AFJ Predavanja 2.Parc
13/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 71
r (i, j, 0), proces nastavljamo u obrnutom smjeru tako što 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 prihvaća automat M , prema izrazu 3.17
potrebno je objediniti sve jezike L(q0, q), za q ∈ F . To znači, da bismo konstruirali
regularni izraz za jezik L( M ), trebamo koristeći operator + kombinirati regularne izraze
za jezike r (q0, q, n), za sva stanja q ∈ F .
Primjer 3.9. U ovom primjeru ćemo opisati način konstrukcije regularnog izraza za
dva DKA, pri čemu ćemo koristiti prethodno opisani postupak. Neka su dijagramima
stanja koji su prikazani na slici 3.21 zadani DKA M 1 i DKA M 2
1start 2 3
a
b
a
b
a
(a)
1start 2 3
a
b
a
b
a
(b)
Slika 3.21: Primjer dva DKA za koja izračunavamo ekvivalentni regularni izraz
Konstrukcija regularnog izraza za DKA M 1. Jezik L( M 1) kojeg prihvaća DKA M 1prikazan na slici 3.21(a) je opisan regularnim izrazom r ( M 1):
r ( M 1) = r (1, 3, 3). (3.23)
Prema izrazu 3.20 imamo:
r (1, 3, 3) = r (1, 3, 2) + r (1, 3, 2)r (3, 3, 2)∗r (3, 3, 2) (3.24)
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 izračunati za
k = 1. U tablici 3.6 su dati regularni izrazi r (i, j, 0) za k = 0, koji se direktno mogu na-
pisati iz dijagrama stanja DKA M 1 prikazanog na slici 3.21(a), pa proces konstrukcijeregularnog izraza r ( M 1) možemo nastaviti od dna prema vrhu.
-
8/19/2019 AFJ Predavanja 2.Parc
14/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 72
p r ( p, 1, 0) r ( p, 2, 0) r ( p, 3, 0)
1 ε + a b ∅
2 ∅ ε + a b
3 ∅ ∅ ε + a + b
Tablica 3.6: Regularni izrazi za k = 0
Uzimajući 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
-
8/19/2019 AFJ Predavanja 2.Parc
15/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni 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 izračunavamo 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 M 2. Budući da DKA M 2 (vidjeti sliku 3.21b
ima dva prihvatljiva stanja (stanje 2 i stanje 3), to znači da je jezik L( M 2):
L( M 2) = L(1, 2, 3) ∪ L(1, 3, 3).
Drugim riječima, za izgradnju regularnog izraza r ( M 2) je potrebno kombinirati sljedeća
dva regularna izraza:
r ( M 2) = 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 izračunatir (1, 2, 2), r (1, 3, 2), r (3, 3, 2) i r (3, 2, 2). Budući da smo prethodno već izračunali iz-
raze za r (1, 3, 2) i r (3, 3, 2), ostalo je još da razvijemo i izračunamo sljedeće 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)
-
8/19/2019 AFJ Predavanja 2.Parc
16/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni 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 već izračunali 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 izračunatih 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 izračunatih izraza r (i, j, k ) za k = 2, imamo:
r (1, 2, 3) = a∗b + (a∗ba∗b)(ε + a + b)∗(∅)
= a∗b + ∅
= a∗b
Konačno, na temelju 3.26 za regularni izraz r ( M 2) automata M 2 imamo:
r ( M 2) = a∗b + a∗ba∗b(a + b)∗ (3.29)
Kao što vidimimo, iako DKA M 1 i DKA M 2 imaju samo tri stanja, konstrukcija re-gularnih izraza na prethodno opisani način je prilično zahtjevna. Nadalje, napomenimo
još da regularni izrazi dobiveni na prethodno opisani način ne moraju biti najjednos-
tavniji mogući ekvivalentni izrazi. S druge strane, opisani postupak ipak omogućuje
sistematičan pristup konstrukciji regularnih izraza za jezik L( M ) zadan nekim determi-
nističkim konačnim automatom M .
-
8/19/2019 AFJ Predavanja 2.Parc
17/91
Poglavlje 3. Regularni izrazi, nedeterministički konačni automati i Kleeneov teorem 75
3.8 Kleeneov teorem
Kombinirajući 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 prihva´ ca neki ε − NKA sa alfabetom Σ.
-
8/19/2019 AFJ Predavanja 2.Parc
18/91
Predavanje 7
Svojstva regularnih jezika
7.1 Svojstvo napuhavanja
Najčešća primjena svojstva napuhavanja je pri dokazivanju neregularnosti nekih jezika.
Ovo svojstvo ćemo formalno prikazati teoremom 7.1.
Teorem 7.1 (Svojstvo napuhavanja). Neka je definiran jezik L nad alfabetom Σ. Ako
konaˇ cni automat M = (Q, Σ, δ,q0, F ) prihva´ ca jezik L, te ako je n broj stanja automata
M, tada za svaku rijeˇ c w ∈ L, koja zadovoljava |w| ≥ n, postoje tri rijeˇ ci x, y i z, takve
da je:
w = xyz,
pri ˇ cemu su zadovoljena sljede´ ca tri uvjeta:
1. | xy| ≤ n.
2. | y| > 0 , tj. v ε.
3. Rijeˇ c xyi z takoder pripada jeziku L, za svaki i ≥ 0.
Dokaz. Neka DKA M koji prihvaća jezik L ima stanja koja su označena sa q0, q1, q2,
. . ., qn−1. Budući da smo pretpostavili da je jezik L beskonačan, postoji riječ w iz jezika
L takva da vrijedi |w| ≥ n. DKA M čitanjem simbola riječi w prelazi iz početnog stanja
q0 u prihvatljivo stanje q f , pri čemu slijed prijelaza možemo prikazati sljedećim nizom
stanja:
q0, qi, q j, . . . ,q f .
Budući da je broj stanja u gornjem nizu jednak |w| + 1, možemo zaključiti da se barem
jedno stanje u tom nizu mora ponoviti, te da to ponavljanje mora započeti najkasnije
pri n − 1-vom prijelazu. Prema tome, niz stanja mora imati sljedeći oblik:
q0, qi, q j, . . . ,qr , . . .qr , . . .q f ,
na temelju kojeg zaključujemo da riječ w mora sadržavati podriječi x, y i z, takve da
vrijedi:
δ∗(q0, x) = qr ,
76
-
8/19/2019 AFJ Predavanja 2.Parc
19/91
PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA 77
δ∗(qr , y) = qr , (7.1)
δ∗(qr , z) = q f ,
pri čemi vrijedi | xy| ≤ n i | y| ≥ 1. Dakle, čitanjem simbola sa ulazne trake koji čine riječ
w = xyz, DKA M iz početnog stanja q0 prelazi u prihvatljivo stanje q f , pri čemu slijed
prijelaza formira ciklus čitanjem simbola koji čine riječ y. Slijed prijelaza pri čitanju
simbola iz riječi w koji formira cikluse je prikazan na slici 7.1. Nadalje, istaknimo da
postoji mogućnost da se riječ w može raščlaniti na više načina na podriječi x, y i z,
odnosno da postoji mogućnost postojanja više od jednog ciklusa. U svakom slučaju,
DKA M u svom radu mora proći barem kroz jedan ciklus čitanjem prvih n simbola iz
riječi w ∈ L. Drugim riječima, postoji barem jedna mogućnost izbora podriječi x, y
i z, takvih da je w = xyz, pri čemu niz simbola y odgovara prijelazima koji formiraju
cikluse (vidjeti sliku 7.1). Nadalje, na temelju 7.1 za riječ xz imamo:
δ∗(q0, xz) = δ
∗(δ∗(q0, x), z)
= δ∗(qr , z)
= q f .
Dakle, vrijedi xz ∈ L. Razmotrimo i riječ xyyz, za koju imamo:
δ∗(q0, xyyz) = δ
∗(δ∗(q0, x), yyz)
= δ∗(qr , yyz)
= δ∗(δ∗(qr , y), yz)
= δ∗(qr , yz)
= δ∗(δ∗(qr , y), z)
= δ∗(qr , z)
= q f .
Dakle, riječ xy2 z ∈ L( M ). Zapravo možemo zaključiti da će za bilo koji broj ponav-
ljanja ciklusa koji korespondira s nizom simbola y, DKA M završiti u prihvatljivom
stanju q f . Prema tome, možemo zaključiti da pored riječi xz, xyz i xy2 z, za koje smo
već utvrdili da su iz jezika L( M ), jeziku L( M ) takoder pripadaju i riječi xy3 z, xy4 z,
itd. Odnosno, za svako i ≥ 0, riječ xyi z takoder pripada jeziku L( M ), jer DKA M iz
početnog stanja q0 može preći u finalno stanje q f ponavlajući i puta ciklus koji kores-
pondira nizu simbola iz podriječi y.
Svojstvo koje smo upravo dokazali se naziva svojstvo napuhavanja. Naziv ”na-
puhavanje” dolazi od toga što se riječ w može napuhavati umetanjem dodatnih kopija
riječi y.
-
8/19/2019 AFJ Predavanja 2.Parc
20/91
PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA 78
q0 qr qm
z x yi
Slika 7.1: Svojstvo napuhavanja
Kao što je na početku ovog odjeljka već istaknuto, najčešća primjena svojstva na-
puhavanja je pri dokazivanju da neki jezik ne može biti prihvaćen determinističkim
konačnim automatom. Naime, prvo pretpostavljamo da jezik L može biti prihvaćen
determinističkim konačnim automatom M sa n stanja. Zatim, pokušavamo izabrati
riječ iz jezika L koja ima duljinu barem n, tako da nas tvrdnje 1-3 iz teorema 7.1 vode
u kontradikciju.
Kao što je prethodno opisano, svojstvo napuhavanja podrazumijeva odredene uvjete
koje svaka riječ iz nekog jezika L, koja ima duljinu barem n, mora zadovoljavati.
Moguće je da za neke odabrane riječi w, činjenica da w zadovoljava uvjete iz teorema
7.1 ne stvara nikakvu kontradikciju. Dakako, u slučaju tako odabranih riječi, kada
ne možemo utvrditi kontradikciju, zapravo ne možemo ništa niti dokazati. Dakle, po-
trebno je pronaći takvu riječ na temelju koje će se moći utvrditi kontradikcija. Sljedeći
primjeri ilustriraju primjenu teorema 7.1 pri dokazivanju neregularnosti jezika.
Primjer 7.1. Neka je zadan sljedeći jezik:
L = {aibi | i ≥ 0}.
Pokušajmo dobiti kontradikciju tako da pretpostavimo da postoji DKA M koji ima nstanja i koji prihvaća jezik L. Izaberimo riječ w = anbn. Prema tome, vrijedi w ∈ L
i |w| ≥ n. Sukladno teremu 7.1, postoje riječi x, y i z, takve da je w = xyz, pri čemu
vrijede sljedeći uvjeti:
1. | xy| ≤ n
2. y ε
3. xyi z ∈ L, za svaki i ≥ 0
Budući da je prvih n simbola riječi w = anbn jedanko a, iz uvjeta (1) zaključujemo
da svi simboli u riječima x i y moraju biti a. Prema tome, riječi x i y možemo zapisati
na sljedeći način:
x = a p gdje je 0 ≤ p < n,
y = ak gdje je 0 < k ≤ n,
z = an− p−k bn.
-
8/19/2019 AFJ Predavanja 2.Parc
21/91
PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA 79
Prema uvjetu (3) svojstva napuhavanja imamo da vrijedi xyi z ∈ L. Uzmimo, npr. i = 2.
Tada za riječ xy2 z dobivamo:
xy2 z = a pa2k an− p−k bn
= a p+2k +n− p−k bn
= ak +nbn
Budući da je k > 0 zaključujemo da vrijedi ak +nbn L, iako bi prema uvjetu
(3) svojstva napuhavanja trebalo vrijediti ak +nbn ∈ L. Drugim riječima, dobili smo
kontradikciju, pa zaključujemo da ne postoji DKA M koji prihvaća jezik L.
Primjer 7.2. Neka je zadan sljedeći jezik:
L = {ai2
| i ≥ 0}.
Dakle, jezik L sadrži nizove simbola a, čija je duljina jednaka kvadratu nekog cijelogbroja.
Pretpostavimo da DKA M , koji prihvaća jezik L, ima n stanja. Izaberimo riječ w
na sljedeći način: w = an2
. Prema svojstvu napuhavanja, riječ 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
-
8/19/2019 AFJ Predavanja 2.Parc
22/91
PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA 80
2. L1 ∩ L2
3. L1 \ L2
Dokaz. Za dokazivanje gore navedeneih svojstava zatvorenosti koristimo teorem 2.1.
Neka M 1 i M 2 označavaju DKA koji prihvaćaju regularne jezike L1 i L2. Teoremom
2.1 smo pokazali da se mogu konstruirati DKA koji prihvaćaju 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 )
prihvaća regularni jezik L( M ). Konstruirajmo DKA na sljedeći način:
M c = (Q, Σ, δ,q0, Q \ F ).
DKA M c prihvaća jezik:
L( M c) = {w | δ(q0, w) ∈ Q \ F }
= {w | δ(q0, w) F }
= Σ∗ \ {w | δ(q0, w) ∈ F }
= Σ∗ \ L( M )
= L( M c)
Budući da smo za jezik Lc koji je komplement jezika L konstruirali DKA, za-
ključujemo da je i jezik Lc regularan jezik, pa su regularni jezici zatvoreni s obziromna operaciju komplementa.
7.2.1 Zatvorenost s obzirom na reverziranje
U prvom poglavlju smo definirali operaciju reverziranja kao operaciju kojom se simboli
a1a2 . . . an zapisuju zapisuju u obrnutom poretku anan−1 . . . a1. Za označavanje reverzi-
ranja riječi w koristimo oznaku w R. Naprimjer, za riječ w = abaa, imamo w R = aaba.
Nadalje, vrijedi ε R = ε.
Nadalje, reverziranje jezika L, što označavamo kao L R, definiramo kao jezik koji se
sastoji od reverznih riječi iz jezika L:
L R = {w R | w ∈ L}.
. Naprimjer, ako je jezik L definiran na sljedeći način:
L = {ab, abbb, ababa, bbaaa},
tada je reverzni jezik L R:
L R = {ba, bbba, ababa, aaabb}.
-
8/19/2019 AFJ Predavanja 2.Parc
23/91
PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA 81
Teorem 7.4. Ako je jezik L regularan jezik, tada je i jezik L R takoder regularan jezik.
Dokaz. Pretpostavimo da je jezik L definiran regularnim izrazom E . Matematičkomindukcijom na veličini regularnog izraza E možemo 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 defini-
ranog regularnim izrazom E .
• Osnovni slu čaj: 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 slu čaj: Imamo tri slučaja, ovisno o obliku regularnog izraza E .
1. E = E 1 + E 2. Ovaj regularni izraz definira jezik L( E 1) ∪ L( E 2). U ovom
slučaju E R definiramo na sljedeći način: E R = E R1
+ E R2
. Naime, imamo da
vrijedi:
( L( E 1 + E 2)) R
= ( L( E 1) ∪ L( E 2)) R
= L( E R1 ) ∪ L( E R2 )
= L( E R1 + E R2 )
2. E = E 1 E 2. Ovaj regularni izraz definira jezik L( E 1) L( E 2). U ovom slučaju
E R definiramo na sljedeći način: E R = E R2 E R
1. Naime, imamo da vrijedi:
( L( E 1 E 2)) R = ( L( E 1) L( E 2)) R
= ( L( E 2)) R L( E 1))
R
= L( E R2 ) L( E R1 )
= L( E R2 E R1 )
Uzmimo npr. da imamo L( E 1) = {ab, bba} i L( E 2) = {bb, ba}. Tada iamamo
da je:
L( E 1) L( E 2) = {abbb, abba, bbabb, bbaba}.
Za reverzni jezik ( L( E 1) L( E 2)) R dobijamo:
( L( E 1) L( E 2)) R = {bbba, abba, bbabb, ababb}.
Ako nadovežemo jezike ( L( E 2)) R i ( L( E 1))
R imamo:
( L( E 2)) R( L( E 1))
R= {bb, ab}{ba, abb}
= {bbba, bbabb, abba, ababb}
-
8/19/2019 AFJ Predavanja 2.Parc
24/91
PREDAVANJE 7. SVOJSTVA REGULARNIH JEZIKA 82
= ( L( E 1) L( E 2)) R
Općenito, ako za neku riječ w ∈ L( E ) imamo da je w = w1w2, w1 ∈ L( E 1),
w2 ∈ L( E 2), tada je w R = w R2
w R1
.
3. E = E ∗1
. Ovaj regularni izraz definira jezik ( L( E 1))∗. U ovom slučaju E R
definiramo na sljedeći način: E R = ( E R1
)∗. Naime, svaku riječ x ∈ L( E )
možemo zapisati kao:
x = x1 x2 · · · xn,
gdje za svaki xi vrijedi xi ∈ L( E 1). Nadalje, vrijedi:
x R = x Rn x Rn−1 · · · x
R1 .
Budući da za svaki x Ri
vrijedi x Ri
∈ L( E R1
), imamo da je:
x R ∈ L(( E R1 )∗).
S druge strane, svaku riječ y ∈ L(( E R1
)∗), možemo zapisati u obliku:
y = y1 y2 · · · yn,
gdje za svaki yi vrijedi yi ∈ L( E R1
). Reverzna riječ y R je tada:
y R = y Rn y Rn−1 · · · y
R1 ,
te imamo y R ∈ L( E ∗1
) = L( E ). Time je pokazano da za svaku riječ w vrijedi
w ∈ L( E ) ako i samo ako za njenu reverznu riječ w R vrijedi w R ∈ L(( E R1
)∗).
-
8/19/2019 AFJ Predavanja 2.Parc
25/91
Predavanje 8
Formalna gramatika
Prethodno je rečeno da pod formalnim jezikom podrazumijevamo svaki skup riječi nadnekim definiranim alfabetom, te da jezik možemo specificirati tako što ćemo navesti
sve riječi koje se nalaze u tom jeziku. Medutim, takav način specifikacije jezika nije
prihvatljiv za beskonačne jezike. Prema tome, potrebno je pronaći način da se u ne-
koj konačnoj formi specificiraju i oni jezici koji imaju beskonačno mnogo elemenata.
Način za prevazilaženje problema konačne specifikacije formalnih jezika je upotreba
formalne gramatike.Slično kao kod prirodnih jezika kod kojih gramatika predstav-
lja skup pravila koja neki konkretni prirodni jezik (engleski, francuski, bosanski,...)
mora zadovoljavati,formalna gramatika predstavlja skup pravila po kojima se generi-
raju riječi formalnog jezika.
Neformalno, gramatika je skup pravila koja se koriste da se definira struktura ni-
zova simbola nad nekim alfabetom Σ.Gramatika za jezik L koji se gradi nad alfabetom
Σ se sastoji od skupa pravila koji imaju sljedeći oblik:
α → β,
gdje α i β označavaju riječi sastavljene od simbola uzetih iz alfabeta Σ i iz posebnog
skupa simbola kojeg ćemo nazivati skup neterminalnih simbola, te ga označavati sa
N . Pravilo gramatike α → β se obično naziva produkcija i može se čitati na različite
načine, kao npr.”α producira β”,”α zamjenjujemo sa β”,i sl.Nadalje,svaka gramatika
ima specijalni simbol koji se naziva poˇ cetni simbol,te mora postojati barem jedna pro-
dukcija kod koje se lijeva strana sastoji samo od startnog simbola. Naprimjer,ako
je S početni simbol za neku gramatiku,onda mora postojati barem jedna produkcija
sljedećeg oblika:
S → β,
Uzmimo jedan primjer gramatike za neki jezik L i opišimo proces izvodenja riječi iz
produkcijskih pravila. Neka je alfabet Σ definiran na sljedeći način:
Σ = {a, b, c}
Nadalje,neka je jezik L definiran kao L = Σ∗. Dakle,jezik L je sastavljen od svih
mogućih riječi koje se mogu dobiti kombiniranjem znakova iz Σ. Tada bi gramatika za
83
-
8/19/2019 AFJ Predavanja 2.Parc
26/91
PREDAVANJE 8. FORMALNA GRAMATIKA 84
jezik L mogla sadržavati sljedeći skup P produkcijskih pravila:
S → ε
S → aS
S → bS
S → cS
Sada uzmimo bilo koju riječ nad alfabetom Σ i pogledajmo kako se ta riječ izvodi
koristeći produkcijska pravila. Naprimjer,uzmimo riječ bbca. Izvodenje riječi uvijek
počinje početnim simbolom S . Zamijenit ćemo početni simbol sa desnom stranom
produkcije S → bS . Izabrali smo produkciju S → bS zato što se riječ bbca podudara
sa desnom stranom te produkcije, uz pretpostavku da je S = bca. Proces zamjene
simbola S sa simbolima bS možemo opisati na sljedeći načine:”bS proizlazi iz S ”, ”S
proizvodi bS ”,”S generira bS i sl. Ovo izvodenje ćemo zapisivati na sljedeći način:
S ⇒ bS
Simbol ⇒ označava izvodenje u jednom koraku. Desna strana ovog izvodenja sadrži
simbol S , tako da opet po drugi put koristimo produkciju S → bS . Ovu produkciju smo
izabrali zato što se riječ bbca podudara sa nizom bbS , uz pretpostavku da je S = ca.
Time imamo sljedeće izvodenje:
S ⇒ bS ⇒ bbS
Desna strana opet sadrži simbol S . Uz pretpostavku da je S = a,niz bbca se podudara
sa nizom bbcS , pa ćemo primijeniti produkciju S → cS , te imamo:
S ⇒ bS ⇒ bbS ⇒ bbcS
Riječ bbca se podudara sa nizom bbcaS , uz pretpostavku da je S = ε, pa nastavljamo
tako da iskoristimo produkciju S → aS , nakon čega imamo sljedeće izvodenje:
S ⇒ bS ⇒ bbS ⇒ bbcS ⇒ bbcaS
Pošto želimo da naše izvodenje proizvede riječ bbca, na kraju ćemo iskoristiti produk-
ciju S → ε, što će dati izvodenje za riječ bbca:
S ⇒ bS ⇒ bbS ⇒ bbcS ⇒ bbcaS ⇒ bbca
8.1 Formalna definicija gramatike
Prethodno smo uveli pojam gramatike na jedan neformalan način tako što smo uveli po-
trebne pojmove za njenu formalnu definiciju.Naime,uveli smo sljedeća četiri elementa
koja su potreba za formalnu definiciju pa ćemo sada dati i njenu formalnu definiciju.
Neka je sa N označen skup neterminalnih simbola (varijabli) za koje ćemo koristiti ve-
lika slova A, B, C itd.Zatim,neka je sa Σ označen alfabet (skup terminalnih simbola),za
-
8/19/2019 AFJ Predavanja 2.Parc
27/91
PREDAVANJE 8. FORMALNA GRAMATIKA 85
koje ćemo koristiti mala slova a, b, c, itd. Takoder, neka simbol S , S ∈ N ,označava
specijalni neterminalni simbol kojeg ćemo nazivati početni simbol.
Definicija 1.2. Formalna gramatika G je četvorka:
G = ( N , Σ, P, S )
gdje je:
• N konačan skup neterminalnih simbola
• Σ konačan skup terminalnih znakova, Σ ∩ N = ∅
• P konačan skup produkcija oblika α → β, gdje vrijedi:
α ∈ ( N ∪ Σ)∗ N ( N ∪ Σ)∗, β ∈ ( N ∪ Σ)∗,
te pri čemu vrijedi da skupovi N i Σ
nemaju zajedničkih elemenata, tj. vrijedi N ∩ Σ = ∅. Primijetimo da niz α mora sadržavati barem jedan neterminalni
simbol.
• S početni neterminalni simbol, S ∈ N
Za zadanu gramatiku G = ( N , Σ, P, S ) definiramo relaciju ⇒G
nad nizovima iz skupa
( 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 α → β. Oz-
naka G specificira kojoj gramatici pripada primijenjena produkcija.
Neka α1, α2, . . . , αm,pri čemu je m ≥ 1, predstavljaju nizove iz skupa ( N ∪ Σ)∗.
Nadalje, neka vrijedi sljedeće:
α1 ⇒G
α2, α2 ⇒G
α3, . . . , αm−1 ⇒G
αm.
Tada kažemo da gramatika G geneerira niz αm iz niza α1, što zapisujemo na sljedeći
način:
α1∗
⇒G
αm
Dakle, relacijom ⇒G
prikazujemo primjenu jedne produkcija koje pripadaju gramatici
G, dok relacijom∗
⇒G
prikazujemo primjenu nula ili više produkcija koje pripadaju gra-
matici G. Ako je iz datog kontektsa nedvosmisleno jasno na koju gramatiku se relacije
odnose, onda ćemo umjesto oznaka
⇒G
i∗
⇒G
koristiti oznake
⇒ i∗
⇒ .
-
8/19/2019 AFJ Predavanja 2.Parc
28/91
PREDAVANJE 8. FORMALNA GRAMATIKA 86
Ako gramatika iz niza α generira niz β primjenom i produkcija, to ćemo zapisivati na
sljedeći način:
α i⇒G β
Dakako, iz konteksta će uglavnom biti jasno o kojoj gramatici se radi, pa ćemo tada
koristiti sljedeći zapis:
αi
⇒ β
Gramatika G = ( N , Σ, P, S ) generira jezik L(G):
L(G) = {w | w ∈ Σ∗, S ∗
⇒G
w}
Prema tome, neka riječ w je u jeziku L(G) koji generira gramatika G ako za riječ w
vrijedi:
1. Riječ w sadrži isključivo terminalne znakove gramatike.
2. Riječ w je moguće generirati iz početnog neterminalnog simbola S .
8.1.1 Primjeri formalnih gramatika i odgovarajućih jezika
Da bi dobili što jasniju predodžbu o konceptu formalne gramatike, u nastavku ćemo
dati nekoliko vrlo jednostavnih primjera za formalnu gramatiku
Primjer 8.1. Neka imamo sljedeću gramatiku:
G1 = ({S }, {a, b}, P, S ),
gdje su produkcije iz skupa P definirane na sljedeći način:
S → a
S → ab
S → abb
S → abbb
Lako zaključujemo da gramatika G1 generira jezik L1(G1):
L1(G1) = {a, ab, abb, abbb}
Naime, u ovom primjeru se svaku produkciju možemo primijeniti samo u jed-
nom koraku, jer su već nakon tog prvog koraka s desne strane nalaze nizovi kooji
ne uključuju simbole iz skupa neterminalnih simbola N .
Primjer 8.2. Neka imamo sljedeću gramatiku:
G2 = ({S }, {a}, P, S ),
gdje skup P sadrži sljedeće produkcije:
S → ε
-
8/19/2019 AFJ Predavanja 2.Parc
29/91
-
8/19/2019 AFJ Predavanja 2.Parc
30/91
PREDAVANJE 8. FORMALNA GRAMATIKA 88
Prema tome, vrijedi abc ∈ L(G3).
Na temelju prethodna tri izvodenja zaključujemo da jednom primjenom produkcije
S → aAc, zatim n puta (n = 0, 1, 2, 3, . . .) produkcije A → bA, te na kraju jednomprimjenom produkcije A → ε generiramo riječ abnc. Prema tome, zaključujemo da
gramatika G3 generira jezik L(G3):
L(G3) = {abnc | n ∈ N}
Primjer 8.4. Neka imamo sljedeću gramatiku:
G4 = ({S , A, B}, {a, b, c}, P, S ),
gdje skup P sadrži sljedeće produkcije:
S → aSAB
S → aAB
BA → A B
aA → ab
bA → bb
bB → bc
cB → cc
Prvo razmotrimo izvodenje primjenom produkcija S → aA B, aA → ab i bB → bc:
S ⇒ aAB ⇒ abB ⇒ abc
Prema tome, vrijedi abc ∈
L(G4).Zatim razmotrimo izvodenje primjenom produkcija sljedećim redoslijedom 1-2-3-
4-5-6-7:
S ⇒ aSAB ⇒ aaABAB ⇒ aaAABB ⇒ aabABB ⇒ aabbBB ⇒ aabbcB ⇒ aabbcc = a2b2c2
Prema tome, vrijedi a2b2c2 ∈ L(G4).
Na kraju, razmotrimo još i izvodenje primjenom produkcija sljedećim redoslijedom
1-1-2-3-3-3-4-5-6-6-7-7:
S ⇒ aSAB ⇒ aaS ABAB ⇒ aaaABABAB
⇒ aaaAABBAB ⇒ aaaAABABB ⇒ aaaAAABBB
⇒ aaabAABBB ⇒ aaabbABBB ⇒ aaabbbBBB
⇒ aaabbbcBB ⇒ aaabbbccB ⇒ aaabbbccc = a3b3c3
Prema tome, vrijedi a3b3c3 ∈ L(G4).
Na temelju prethodna tri izvodenja možemo zaključiti 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
-
8/19/2019 AFJ Predavanja 2.Parc
31/91
PREDAVANJE 8. FORMALNA GRAMATIKA 89
zamijenili pozicije varijabli A i B, te na taj način postigli da se sve varijable A nalaze
ispred varijabli B. Prema tome, primjenjujući produkciju BA → A B dovoljan broj puta
dobiva se niz an An Bn. Nadalje, jednom primijenimo produkciju aA → ab i dobivamoanbAn−1 Bn, a zatim n − 1 puta primjenjujemo produkciju bA → bb, nakon čega ćemo
dobiti anbn Bn. Na kraju, jednom primjenjujemo produkciju bB → bc i n − 1 puta
produkciju cB → cc, nakon čega se generira riječ anbncn.
Prema tome, zaključujemo da gramatika G4 generira jezik L(G4):
L(G4) = {anbncn | n ∈ N}
8.1.2 Gramatika prirodnog jezika i formalna gramatika
Formalna gramatika ima odredene sličnosti sa gramatikom prirodnih jezika.Ovaj pri-
mjer upravo ima svrhu da ilustrira odredene sličnosti izmedu gramatike prirodnog je-zika i formalne gramatike.
Jedno od glavnih obilježja rečenice je mogućnost da se ona može raščlaniti na
odredene rečenične dijelove. Iako je situacija sa gramatikom prirodnih jezika nešto
složenija, za potrebe ovog primjera ćemo pretpostaviti da su glavni i samostalni rečenični
dijelovi subjekt, predikat i objekt. Nadalje, pretpostavit ćemo da svaki od navedenih
dijelova može imati odredene dodatke, koji onda tvore subjektni skup, predikatni skup
i objektni skup.
Konstruirajmo formalnu gramatiku G = ( N , Σ, P, S ),pri čemu je početni simbol
S = Reˇ cenica,dok su ostala tri elementa definirana na sljedeći način:
N =
Reˇ cenica
SubjektniSkup
PredikatniSkup
ObjektniSkup
Subjekt
Predikat
Objekt
Atribut
Prilog
Σ =
PJEVA ČICE
PJESMEPJEVAJU
PI ŠU
POZNATE
LIJEPE
UVIJEK
PONEKAD
. (ta čka)
-
8/19/2019 AFJ Predavanja 2.Parc
32/91
PREDAVANJE 8. FORMALNA GRAMATIKA 90
P =
1. Reˇ cenica → SubjektniSkupPredikatniSkupObjektniSkup.
2. SubjektniSkup → Atribut Subjekt
3. SubjektniSkup → Subjekt
4. PredikatniSkup → PrilogPredikat
5. PredikatniSkup → Predikat
6. ObjektniSkup → Atribut Objekt
7. ObjektniSkup → Objekt
8. Subjekt → PJEVA ČICE
9. Subjekt → KNJI ŽEVNICE
10. Predikat → PJEVAJU
11. Predikat → PI ŠU
12. Objekt → PJESME
13. Objekt → KNJIGE
14. Atribut → POZNATE
15. Atribut → LIJEPE
16. Prilog → UVIJEK
17. Prilog → PONEKAD
Navedene neterminalne simbole iz skupa N smo stavili u zagrade kako bi smo
te simbole prikazali kao nedjeljive elemente,te kako bismo ih razlikovali od termi-
nalnih simbola iz skupa Σ koji čine rječnik jezika.Kao što vidimo u skupu Σ imamo
devet terminalnih simbola, uključujući i simbol . (tačka) koji predstavlja oznaku kraja
rečenice.Skup P sadrži sedamnaest produkcijskih pravila.Primjenom produkcijskih pra-
vila grade se rečenice. Pravilo 1 specificira temeljni dio organizacije rečenice.Pravila
2-7 specificiraju pravila za organizaciju subjekta,predikata i objekta,zajedno sa njiho-
vim dodacima.Pravila 8-17 odreduju način na koji se neterminalni simboli preslikavaju
u terminalne simbole iz riječnika odredenog prirodnog jezika.
U nastavku ćemo dati nekoliko primjera izvodenja rečenica koje pripadaju jeziku
L(G).Generiranje rečenice ”PJEVAČICE PJEVAJU PJESME.” koja pripada jeziku L(G)
koja je sastavljena od niza isključivo terminalnih simbola,opisujemo na sljedeći način:
Reˇ cenica ⇒1
SubjektniSkupPredikatniS kupObjektniS kup.
⇒3
Subjekt PredikatniS kupObjektniS kup.
⇒5
Subjekt Predikat ObjektniS kup.
⇒7
Subjekt Predikat Ob jekt .
-
8/19/2019 AFJ Predavanja 2.Parc
33/91
PREDAVANJE 8. FORMALNA GRAMATIKA 91
⇒8
PJEVA ČICEPredikat Objekt .
⇒10 PJEVA ČICE PJEVAJUOb jekt .
⇒12
PJEVA ČICE PJEVAJU PJESME.
Generiranje rečenice ”POZNATE KNJIŽEVNICE UVIJEK PIŠU LIJEPE PJE-
SME.” koja takoder pripada jeziku L(G) opisujemo na sljedeći način:
Reˇ cenica ⇒1
S ubjektniS kupPredikatniS kupOb jektniS kup.
⇒2
Atribut Subjekt PredikatniS kupObjektniS kup.
⇒4
Atribut Subjekt PrilogPredikat ObjektniS kup.
⇒6
Atribut Subjekt PrilogPredikat Atribut Ob jekt .
⇒14 POZNATESubjekt PrilogPredikat Atribut Ob jekt .
⇒9
POZNATE KNJI ŽEVNICEPrilogPredikat Atribut Ob jekt .
⇒16
POZNATE KNJI ŽEVNICE UVIJEKPredikat atribut Ob jekt .
⇒11
POZNATE KNJI ŽEVNICE UVIJEK PI ŠU Atribut Ob jekt .
⇒15
POZNATE KNJI ŽEVNICE UVIJEK PI ŠU LIJEPEOb jekt .
⇒12
POZNATE KNJI ŽEVNICE UVIJEK PI ŠU LIJEPE PJESME.
Opišimo još generiranje rečenice ”POZNATE PJEVAČICE PONEKAD PIŠU KNJIGE.”
koja takoder pripada jeziku L(G):
Reˇ cenica ⇒1
S ubjektniS kupPredikatniS kupObjektniS kup.
⇒2
Atribut S ubjekt PredikatniS kupObjektniS kup.
⇒4
Atribut S ubjekt PrilogPredikat ObjektniS kup.
⇒7
Atribut S ubjekt PrilogPredikat Ob jekt .
⇒14
POZNATEPrilogPredikat Atribut Objekt .
⇒8
POZNATE PJEVA ČICEPredikat Atribut Objekt .
⇒17
POZNATE PJEVA ČICE PONEKAD Atribut Ob jekt .
⇒11
POZNATE PJEVA ČICE PONEKAD PI ŠUOb jekt .
⇒13
POZNATE PJEVA ČICE PONEKAD PI ŠU KNJIGE.
Na kraju istaknimo da je formalizacija prirodnih jezika izuzetno komplicirana.Dapače,
mnogi lingvisti problematiziraju uopće ideju formalizacije prirodnih jezika,pri tome
-
8/19/2019 AFJ Predavanja 2.Parc
34/91
PREDAVANJE 8. FORMALNA GRAMATIKA 92
ističući 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 dinamičnost i otvorenost prirodnih jezika. Na-dalje prirodni jezici su višeznačni, 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 omogućava još jedan način za specifikaciju regularnih jezika.
8.2.1 Desno-linearna i lijevo-linearna gramatika
Definicija 8.1. Za gramatiku G = ( N , Σ, P, S ) kažemo da je desno-linerna ako sve
produkcije iz skupa P imaju sljedeći oblik:
A → wB,
A → w,
gdje je A, B ∈ N , a w ∈ Σ∗. S druge strane, za gramatiku G kažemo da je lijevo-
linearna ako sve produkcije iz skupa P imaju sljedeći oblik:
A → Bw,
A → w,
Za gramatiku koja je desno-linearna ili lijevo-linearna kažemo da je regularna grama-
tika.
Primijetimo da se u produkcijama regularne gramatike neterminalni simbol mo že
pojaviti s desne strane najviše 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 sljedeći način:
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 sljedeći način:
-
8/19/2019 AFJ Predavanja 2.Parc
35/91
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. sljedeći postupak generiranja riječi ababa na temelju gramatike G1:
S ⇒ abS ⇒ ababS ⇒ ababa (8.1)
Lako zaključujemo da je je jezik L(G1) definiran regularnim izrazom r 1:
r 1 = (ab)∗a.
S druge strane, razmotrimo npr. postupak generiranja riječi aababab na temelju gra-
matike G2:
S ⇒ Aab ⇒ Aabab ⇒ Aababab ⇒ Bababab ⇒ aababab
Jezik L(G2) je definiran regularnim izrazom r 2:
r 2 = aab(ab)∗.
Primjer 8.6. Gramatika
G = ({S , A, B}, {a, b}, P, S ),
gdje je skup produkcija P definiran na sljedeći način:
S → A,
A → aB | ε,
B → Ab,
nije regularna gramatika. Naime, iako sve produkcije imaju desno-linearni ili lijevo-
linearni oblik, ipak gramatika G nije niti desno-linearna niti lijevo-linearna gramatika,
pa prema tome gramatika G nije regularna gramatika. Gramatike kod kojih se neter-
minalni simbol može pojaviti s dese strane produkcije najviše 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.
-
8/19/2019 AFJ Predavanja 2.Parc
36/91
PREDAVANJE 8. FORMALNA GRAMATIKA 94
8.3 Ekvivalentnost desno-linearne gramatike i regular-
nih jezika8.3.1 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 čemu
je S = A0. Nadalje, pretpostavimo da su produkcije sljedećeg oblika:
A0 → v1 Ai
Ai → v2 A j
. . .
An → vl
. . .
Ako je w neka riječ iz jezika L(G), tada zbog oblika produkcija iz skupa P, postupak
generiranja riječi w mora imati sljedeći oblik:
A0 ⇒ v1 Ai (8.2)
⇒ v1v2 A j (8.3)
∗⇒ v1v2 . . . vk Ak (8.4)
⇒ v1v2 . . . vk vl = w (8.5)
Konstruirajmo NKA koji simulira gore prikazani postupak izvodenja. Početno sta-
nje NKA je označeno kao A0. Nadalje, za svaki neterminalni simbol A i uvedimo ne-privatljivo stanje Ai. NKA konstruiramo tako da za produkciju oblika:
Ai → a1a2 . . . am A j,
definiramo funkciju prijelaza δ tako da omogućimo prijelaz iz stanja Ai u stanje A jčitanjem niza simbola a1a2 . . . am. Odnosno, funkcija prijelaza δ treba biti definirana
tako da za njeno proširenje δ∗ vrijedi:
δ∗( Ai, a1a2 . . . am) = A j.
Nadalje, za svaku produkciju oblika:
Ai → a1a2 . . . am,
NKA konstruiramo tako da vrijedi:
δ∗( Ai, a1a2 . . . am) = A f ,
gdje je A f neko prihvatljivo stanje. Način konstrukcije NKA na prethodno opisani
način je prikazan na slici 9.1.
-
8/19/2019 AFJ Predavanja 2.Parc
37/91
PREDAVANJE 8. FORMALNA GRAMATIKA 95
Ai . . . A ja1 a2 am
(a) Prikaz produkcije Ai → a1a2 . . . am A j
Ai . . . A f a1 a2 am
(b) Prikaz produkcije Ai → a1a2 . . . am
Slika 8.1: DKA koji prihvaćaju jezike L1 i L2
Za zadanu desno-linearnu gramatiku konstruiramo NKA objedinjujući pojedine di-
jelove koji su izgradeni na prethodno opisani način.
Pretpostavimo sada da vrijedi w ∈ L(G), pri čemu gramatika G generira riječ w na
način kako je to opisano izrazom 9.2. Tada NKA sadrži putanju od A0 do Ai koja je
označena sa v1, zatim putanju od Ai do A j koja je označena sa v2, itd. Zaključujemo da
tada vrijedi:
A f ∈ δ∗( A0, w),
pa NKA M prihvaća riječ w.
S druge strane, pretpostavimo da automat M prihvaća riječ w. Imajući na umu
način na koji je konstruiran NKA M , za prihvaćanje riječi w automat mora proći kroz
niz stanja A0, Ai, . . . do stanja A f , koristeći putanje označene sa v1, v2, . . .. Prema tome,
riječ w mora imati sljedeći oblik:
w = v1v2 · · · vk vl.
Drugim riječima, moguće je sljedeće generiranje riječi w:
A0 ⇒ v1 Ai
⇒ v1v2V j∗
⇒ v1v2 · · · vk V k
⇒ v1v2 · · · vk vl
Prema tome, vrijedi w ∈ L(G), te je time teorem dokazan.
Primjer 8.7. U ovom primjeru ćemo konstruirati NKA koji prihvaća jezik L(G) kojeg
generira gramatika
G = ({ A0, A1}, {a, b}, P, A0),
gdje skup P sadrži sljedeće produkcije:
A0 → aA1
A1 → babA0 | b.
Na temelju prethodno pisanog načina konstrukcije NKA imamo sljedeće:
-
8/19/2019 AFJ Predavanja 2.Parc
38/91
PREDAVANJE 8. FORMALNA GRAMATIKA 96
• Na temelju produkcije A0 → aA1 omogućujemo prijelaz iz stanja A0 u stanje A1čitanjem simbola a.
• Na temelju produkcije A1 → babA0 omogućujemo prijelaz iz stanja A1 u stanje
A0 čitanjem niza simbola bab.
• Na temelju produkcije A1 → b omogućujemo prijelaz iz stanja A1 u prihvatljivo
stanje A f č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 prihvaća
NKA M , opisan je regularnim izrazom:
(abab)∗ab.
A0 A1 A f a
b b
a
b
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 može se konstruirati desno-linearna gramatika koja
generira taj jezik. Naime, za svaki regularni jezik postoji DKA M koji prihvaća je-
zik L, pa ćemo pokazati da se za svaki zadani DKA M može konstruirati gramatika
G koja generira jezik L = L(G) = L( M ). Pri opisu načina konstrukcije gramatike G
za zadani DKA ćemo koristiti sličan pristup kao i pri opisu konstrukcije DKA za za-
danu gramatiku u teoremu 9.1. Naime, opisani pristup u tom teoremu ćemo zapravo
samo preokrenuti u suprotni smjer. Stanja DKA će postati neterminalni simboli gra-
matike, dok će ulazni simboli čijim čitanje se primjenjuj odgovarajući prijelazi postati
terminalni simboli u produkcijama.
Teorem 8.2. Neka DKA M = (Q, Σ, δ,q0, F ) prihva´ ca 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 sljedeći
Q = {q0, q1, . . . ,qn}.
Nadalje, pretpostavimo da je alfabet Σ DKA M definiran na sljedeći način:
Σ = {a1, a2, . . . ,am}.
Konstruirajmo desno-linearnu gramatiku G = ( N , Σ, P, S ) na sljedeći način:
-
8/19/2019 AFJ Predavanja 2.Parc
39/91
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 jqk .
Osim toga, ako vrijedi qk ∈ F , tada u skup produkcija P dodajemo i produkcije
oblika:
qk → ε.
• početni simbol S = q0.
Prvo ćemo pokazati da gramatika G konstruirana na prethodno opisani način može
generirati svaku riječ iz jezika L( M ). Razmotrimo riječ w ∈ L( M ) sljedećeg oblika:
w = aia j · · · ak al.
DKA M koji prihvaća riječ w mora primijeniti sljedeće prijelaze:
δ(q0, ai) = q p,
δ(q p, ai) = qr ,
...
δ(qs, ak ) = qt
δ(qt , al) = q f ∈ F .
Imajući na umu način na koji je konstruirana gramatika G , imamo po jednu pro-
dukciju za svaki gore prikazani prijelaz. Prema tome, gramatika G omogućuje sljedeće
izvodenje riječi w:
q0 ⇒ aiq p (8.6)
⇒ aia jqr (8.7)
∗
⇒ aia j · · · akql (8.8)
⇒ aia j · · · ak alq f (8.9)
⇒ aia j · · · ak al, (8.10)
pa zaključujemo da vrijedi w ∈ L(G).
-
8/19/2019 AFJ Predavanja 2.Parc
40/91
PREDAVANJE 8. FORMALNA GRAMATIKA 98
S druge strane, ako vrijedi w ∈ L(G), tada generiranje riječi ima oblik 9.6, što
zapravo podrazumijeva da vrijedi:
δ∗(q0, aia 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 sljedećom tabelom:
δ a b
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.
q0 q1 q2a
b
a
b
a
b
Slika 8.3: Dijagram stanja DKA za koji konstruiramo gramatiku G
Gramatiku G konstruiramo na sljedeći način:
• 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 seprodukcija q0 → aq1, jer DKA M prelazi iz stanja q0 u stanje q1 čitanjem simbola
a. Nadalje, gradi se produkcija q0 → bq2, jer DKA M prelazi iz stanja q0 u stanje
q2 čitanjem simbola b. Opisani postupak izgradnje produkcija se nastavlja i za
sve ostale prijelaze DKA M . Budući da su stanja q0 i q2 prihvatljiva stanja, grade
se i produkcije q0 → ε i q2 → ε.
-
8/19/2019 AFJ Predavanja 2.Parc
41/91
PREDAVANJE 8. FORMALNA GRAMATIKA 99
Na temelju prethodno opisanog postupka konstruiramo gramatiku G:
G = ({q0, q1, q2}, {a, b}, P, q0),
gdje skup P sadrži sljedeće produkcije:
q0 → aq1
q0 → bq2
q1 → aq2
q1 → bq1
q2 → aq0
q2 → bq1
q0 → ε
q2 → ε
Naprimjer, DKA M prihvaća riječ abbba jer vrijedi:
δ(q0, abbba) = q2,
gdje je q2 prihvatljivo stanje. S druge strane, konstruirana gramatika G generira riječ
abbba na sljedeći način:
q0 ⇒ aq1
⇒ abq1
⇒ abbq1
⇒ abbbq1
⇒ abbbaq2
⇒ abbbaε = abbba
8.4 Ekvivalentnost lijevo-linearne gramatike i regular-
nih jezika
Prethodno prikazani teoremi uspostavlaju vezu izmedu regularnih jezika i desno-linearnih
gramatika. Slična veza se može uspostaviti i izmedu regularnih jezika i lijevo-linearnihgramatika, pa se na taj način zapravo može pokazati potpuna ekvivalentnost izmedu
regularnih jezika i regularnih gramatika.
-
8/19/2019 AFJ Predavanja 2.Parc
42/91
PREDAVANJE 8. FORMALNA GRAMATIKA 100
8.4.1 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 prihva´ ca jezik L( M ) = L(G). Drugim rijeˇ cima,
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 prihvaća jezik L( M ) = L(G) na sljedeći način:
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 sljedeći
način:
• Produkcije lijevo-linearne gramatike G oblika
A → Bw
se preurede u produkcije oblika
A → w R B.
• Produkcije lijevo-linearne gramatike G oblika
A → w
se preurede u produkcije oblika
A → w R.
Ovako konstruirana desno-linearna gramatika G 1 generira reverzne riječi iz je-
zika L(G), tj. vrijedi: L(G1) = L(G)
R (8.11)
2. Na temelju konstruirane desno-linearne gramatike G1 konstruiramo NKA M 1koji prihvaća jezik:
L( M 1) = L(G1). (8.12)
3. Na temelju NKA M 1 konstruiramo ε-NKA M koji prihvaća jezik:
L( M ) = L( M 1) R, (8.13)
na sljedeći način:
• Preuredujemo NKA M tako da ima samo jedno prihvatljivo stanje. Naime,
ako NKA M ima više prihvatljivih stanja, tada se dodaje novo i jedinstveno
prihvatljivo stanje, kao i ε-prijelazi iz svih prijašnjih prihvatljivih stanja u
novo prihvatljivo stanje. Stara prihvatljiva stanja više nisu prihvatljiva, pa
ostaje samo jedno novo prihvatljivo stanje koje smo dodali.
• Za početno stanje ε-NKA M se uzima prihvatljivo preuredenog NKA M .
-
8/19/2019 AFJ Predavanja 2.Parc
43/91
PREDAVANJE 8. FORMALNA GRAMATIKA 101
• Za prihvatljivo stanje ε-NKA M se uzima početno stanje preuredenog
NKA M
• Funkcija prijelaza NKA M 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( M 1) R
= L(G1) R
= ( L(G) R)
= L(G)
Dakle, konstruirani ε-NKA M prihvaća jezik L(G).
Primjer 8.9. Neka je zadana lijevo-linearna gramatika:
G = ({S }, {a, b}, P, S ),
gdje skup P sadrži sljedeće produkcije:
S → S baa | b
Gramatika G generira jezik opisan regularnim izrazom b(baa)∗
Konstruiramo ε-NKA za zadanu gramatiku G na sljedeći način:
1. Prvo izgradujemo desno-linearnu gramatiku:
G1 = ({S }, {a, b}, P1, S ),
gdje skup P1 sadrži sljedeće produkcije:
S → aabS | b
Skup P1 smo dobili odgovarajućim 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 M 1 koji
prihvaća jezik L( M 1) = L(G1). Konstruirani NKA M 1 je prikazan na slici 9.4a.
3. Konstruiramo NKA M koji prihvaća jezik opisan regularnim izrazom b(baa)∗,
tako da obrnemo smjer usmjerenih grana na dijagramu stanja NKA M 1 (slika
9.4a), te zamijenimo ulogu početnog i prihvatljivog stanja. Konstruirani NKA M je prikazan na slici 9.4b.
-
8/19/2019 AFJ Predavanja 2.Parc
44/91
-
8/19/2019 AFJ Predavanja 2.Parc
45/91
PREDAVANJE 8. FORMALNA GRAMATIKA 103
Ovako konstruirana lijevo-linearna gramatika G generira reverzne riječi iz jezika
L(G1), tj. vrijedi:
L(G) = L(G1) R (8.15)
Uzimajući u obzir 9.14 i 9.15 imamo:
L(G) = L(G1) R
= L( M 1) R
= ( L( M ) R) R
= L( M )
Kombinirajući teoreme 9.1, 9.2, 9.3 i 9.4 dobijamo teorem 9.5 kojm izražavamo
ekvivalentnost izmedu regularnih jezika, lijevo-linearne gramatike, desno-linearne
gramatike i regularne gramatike.
Teorem 8.5. Vrijede sljede´ ce tvrdnje:
• Jezik L je r