Konaˇ cni automati
7.2 Konaˇ cni automati
U ovom poglavlju obradit ´cemo konaˇcne automate koji predstavljaju joˇs jedan naˇcin reprezentacije jezika. Konaˇcni automati su pojednostavljeni modeli raˇcunala. Sastoje se od procesorske jedinice, koja moˇze obradivati ulaze, koji se, recimo, nalaze na traci. Konaˇcni se automat moˇze prikazati sljede´com slikom:
abbaaab
Slika 7.2
Pri tome se na traci nalaze simboli abecede konaˇcnog automata. Konaˇcni automat ˇcita zapis na traci s lijeva na desno, od njegova poˇcetka do kraja. Automat ne moˇze mijenjati zapis na traci, niti se moˇze vra´cati na ve´c proˇcitan dio zapisa. Automat u sebi sadrˇzi program koji se sastoji od konaˇcnog skupa stanja, od kojih je jedno poˇcetno i funkcije prijelaza iz stanja u stanje. Kada se automat nalazi u zavrˇsnom stanju, ˇzaruljica ´ce zasvijetliti. Kada automat proˇcita cijeli zapis, on stane. Ako je stao u zavrˇsnom stanju, ˇzaruljica ´ce svijetliti, indiciraju´ci da je automat prepoznao rijeˇc na traci kao rijeˇc jezika o kojem odluˇcuje. Ako automat stane u stanju koje nije zavrˇsno, onda ˇzaruljica ne´ce svijetliti, i tako ´ce se znati da rijeˇc ne pripada jeziku danog automata.
Konaˇcni automati imaju veliku ulogu u leksiˇckoj analizi kod prevodenja programskih jezika, kod editora teksta, kod operacijskih sustava za evalu- aciju regularnih izraza itd.
Konaˇcni se automat moˇze matematiˇcki definirati na sljede´ci naˇcin: Definicija 7.8 Deterministiˇcki konaˇcni automat (DKA) ili samo konaˇcni
automat je petorka M = hΣ, K, S, F, δi, pri ˇcemu je: • Σ konaˇcna abeceda automata,
• K konaˇcan skup stanja automata,
7.2. KONA ˇ CNI AUTOMATI • S ∈ K poˇcetno stanje,
• F ⊆ K skup zavrˇsnih stanja automata, • δ : K × Σ → K funkcija prijelaza.
Neka je w : σ 1 ...σ n ∈Σ ∗ rijeˇc nad abecedom Σ. Tada konaˇcni automat M nad abecedom Σ vrˇsi niz koraka na toj rijeˇci;
(q 0 ,σ 1 σ 2 ...σ n ) ⊢ M (q f (1) ,σ 2 ...σ n ) ⊢ M ... ⊢ M (q f (n) , ε)), odnosno
(q 0 ,σ 1 σ 2 ...σ n ) ∗ ⊢ M (q f (n) , ε)).
Primjer 7.8 Napravimo sada konaˇcan automat za jezike iz primjera 7.5
1. Σ = {a, b, c}
K= {q 0 ,q 1 ,q 2 ,q 3 ,q 4 }
S=q 0 F= {q 3 } Funkciju δ definiramo sljede´com tablicom:
Tablica 7.1
Konaˇcni se automati najˇceˇs´ce prikazuju usmjerenim matematiˇckim grafom, pa se ovaj automat moˇze prikazati sljede´cim grafom:
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 301
a,b
b,c q 4
S=q 0 F= {q 3 } Funkcija δ definira se tablicom
Tablica 7.2
odnosno, usmjerenim grafom prikazano
7.2. KONA ˇ CNI AUTOMATI
a,b,c
q 4 a,b,c
S=q 0 F= {q 4 } Funkcija δ dana je sljede´com tablicom
Table 7.3
Ovaj se konaˇcni automat moˇze prikazati sljede´cim grafom
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 303
a,b Slika 7.5
Definirajmo sada nedeterministiˇcki konaˇcni automat. Definicija 7.9 Nedeterministiˇcki konaˇcni automat (NKA) je petorka M =
hΣ, K, S, F, δi, pri ˇcemu je • Σ konaˇcna abeceda automata, • K konaˇcan skup stanja automata, • S ∈ K poˇcetno stanje, • F ⊆ K skup zavrˇsnih stanja automata, • δ : K × Σ × K relacija prijelaza.
Razlika izmedu DKA i NKA je u tome ˇsto je kod DKA δ funkcija, dok je kod N KA δ relacija. Drugim rijeˇcima, kod deterministiˇckog je konaˇcnog automata, stanjem u kojem se automat nalazi i proˇcitanim znakom s trake, jednoznaˇcno odredeno stanje u koje ´ce automat prije´ci, dok kod NKA nije tako. Kod NKA za isto stanje i ulazni znak automat ponekad moˇze prije´ci u razliˇcita stanja.
Ova relaksacija dovodi, medutim do raznih nedoumica. Kako tretirati mogu´cnost izbora? Ho´ce li automat stanje izabrati nasumce, ne vode´ci raˇcuna o rjeˇsenju ili ´ce on upravo izabrati onaj izbor koji ´ce dovesti do rjeˇsenja. To su dvije vrste determinizma, od kojih se prvi naziva davolski ili ”don’t care” nedeterminizam, a drugi andeoski ili ”don’t know” nede- terminizam. Prvi je nedeterminizam vrlo lako izvesti, no on ne predstavlja pravi nedeterminizam, koji bi dao ve´ce mogu´cnosti programu, ve´c pred- stavlja randomizaciju algoritma. Druga je vrsta nedeterminizma ona koja
7.2. KONA ˇ CNI AUTOMATI se podrazumijeva kada se govori o nedeterminizmu. Zaista, pretpostavlja se
da nedeterministiˇcki automat moˇze, bez ikakve provjere u svakom sluˇcaju napraviti onaj izbor koji ´ce ga dovesti do toˇcnog rjeˇsenja i izbje´ci sve izbore koji bi ga doveli do pogreˇsnog. Ovaj se nedeterminizam ˇcesto ilustrira i tako
da se kaˇze da se automat u trenutku nedeterministiˇckog izbora kopira u onoliko kopija koliko je mogu´cnosti izbora, te da svaka kopija napravi jedan od mogu´cih izbora, a ostatak se rijeˇci procesira na svima njima paralelno. Jasno je da stvarni automati ne mogu imati mo´c kopiranja samog sebe, ali isto tako je jasno da oni ne mogu imati ni mogu´cnost nedeterministiˇckog izbora. Stoga je nedeterminizam u potpunosti teorijski koncept koji nije mogu´ce praktiˇcno izvesti. No, on se svejedno koristi u teoriji raˇcunalstva jer je vrlo bitan u klasifikaciji problema.
Primjer 7.9 Napravimo NKA koji odluˇcuje o jeziku nad abecedom Σ = {a, b}, koji se sastoji od rijeˇci koje na poˇcetku imaju proizvoljan broj a-ova, nakon ˇcega slijedi paran broj b-ova, iza ˇcega se nalazi toˇcno jedna pojava slova a.
Konaˇcni automat, koji odluˇcuje o gore opisanom jeziku, dan je sljede´cim grafom:
q 2 b a,b
a,b
a,b
Slika 7.6
Sljede´ce ˇsto ´cemo definirati jest proˇsirenje konaˇcnog automata: deter- ministiˇcki konaˇcni automat s ε prijelazima. On se definira na sljede´ci naˇcin:
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 305 Definicija 7.10 Nedeterministiˇcki konaˇcni automat s ε prijelazima (u oz-
naci εNKA) je petorka M = hΣ, K, S, F, δi, pri ˇcemu je • Σ konaˇcna abeceda automata, • K konaˇcan skup stanja automata, • S ∈ K poˇcetno stanje, • F ⊆ K skup zavrˇsnih stanja automata, • δ : K × (Σ ∪ {ε}) × K relacija prijelaza.
Dakle, razlika u definicijama NKA i εNKA je minimalna, u definiciji funkcije δ, i to samo u tome ˇsto je dopuˇsteno da njen drugi argument, osim slova abecede Σ bude i ε. Drugim rijeˇcima, osim standardnih prijelaza dozvoljeni su i prijelazi iz stanja u stanje bez ˇcitanja trake. Ovakvo svojstvo nema smisla definirati nad deterministiˇckim automatom jer bi kod DKA sva stanja povezana ε prijelazima bila medusobno ekvivalentna, da bi se mogla saˇzeti u jedno jedino stanje, ˇcime bi se trivijalno eliminirali svi ε prijelazi.
Prirodno se postavlja pitanje o kojoj klasi jezika mogu odluˇcivati konaˇcni automati? Pokazuje se da vrijedi sljede´ci teorem:
Teorem 7.1 Za jezik L moˇze se napraviti deterministiˇcki konaˇcni automat koji odluˇcuje o L ako i samo ako je L regularan jezik.
Dokaz ovog teorema ide preko uspostavljanja veza svih triju uvedenih konaˇcnih automata. Dokazuje se sljede´ci niz ekvivalencija:
DKA ⇔ NKA ⇔ εDKA ⇔ RL
Medutim, ovaj niz ekvivalencija ne´cemo dokazivati jer on prelazi okvire ove knjige. Dokazi ovih ekvivalencija mogu se na´ci u [3]. No, postoji joˇs jedno zanimljivo pitanje. Postoje li jezici koji nisu regu- larni? Drugim rijeˇcima, postoji li neki jezik koji nije u u ˇsrafiranom dijelu, nego je u bijelom dijelu na sljede´coj slici?
RL
Slika 7.7
7.2. KONA ˇ CNI AUTOMATI Na ovo vaˇzno pitanje odgovorit ´cemo konstruiranjem jezika koji nisu
regularni. U dokazivanju da neki jezik nije regularan znaˇcajnu ulogu ima sljede´ci vrlo poznati teorem:
Teorem 7.2 (Lema o pumpanju) Neka je L regularan jezik. Tada pos- toje nizovi znakova x, y, z
∈ Σ takvi da je y 6= ε i da je xy n z ∈ L za svaki n ∈N 0 .
Dokaz. Kako je L beskonaˇcan regularan jezik, za njega postoji DKA koji o njemu odluˇcuje. Pretpostavimo da imamo DKA M s n stanja koji odluˇcuje o jeziku L. No, kako je L beskonaˇcan, L mora sadrˇzavati nizove
znakova ˇcija je duljina ve´ca od n. Neka je w : σ 1 σ 2 ...σ n ∈ L i neka je |w| > n. Ako se rijeˇc w obradi konaˇcnim automatom M, on ´ce izvrˇsiti sljede´ci niz pretvorbi:
(q 0 , w) ∗ ⊢ M (ε, q f (|w|) ),
pri ˇcemu je q f (|w|) ∈ F . Kako je |w| > n, po Dirichletovom prin- cipu, mora postojati stanje q i kroz koje je automat proˇsao barem dva puta obraduju´ci rijeˇc w, tj. postoje 0 ≤ j < k ≤ |w| takvi da je q f (j) =q f (k) . To znaˇci da niz znakova σ j ...σ k provodi automat iz stanja q f (j) u stanje q f (j) . No, onda niz znakova σ j ...σ k moˇze biti maknut iz rijeˇci w, a automat ´ce joˇs uvijek zavrˇsiti u istom, zavrˇsnom stanju. Dakle, automat ´ce prepoznati
i rijeˇc xz. S druge strane, dodamo li iza niza znakova σ j ...σ k isti taj niz znakova joˇs n −1 puta, nakon procesiranja svih n pojava podstringa σ j ...σ k automat ´ce se joˇs uvijek nalaziti u stanju q f (j) , pa ´ce do kraja rijeˇci xy n z automat zavrˇsiti u stanju q f (|w|) , koje je zavrˇsno, pa ´ce automat prepoznavati i rijeˇc xy n z.
Sada ´cemo dati nekoliko primjera jezika koji nisu regularni. Primjer 7.10 Neka je dan jezik L = n {a : n je prost broj }. Dokaˇzimo da
jezik L nije regularan. Neka je xyz
∈ L. Tada, prema lemi o pumpanju i rijeˇc xy n z ∈ L.
Neka je y : a n . Tada je xz : a −k . No, tada je −k |xy z | = (n − k) + (n − k) · k = (n − k)(k + 1), ˇsto oˇcito nije prost broj, a to se kosi s lemom o
pumpanju, pa zakljuˇcujemo da L nije regularan.
0 }. Dokaˇzimo da L nije regularan.
n Primjer 7.11 n Neka je dan jezik L = {a b :n ∈N
Neka je xyz ∈ L. Imamo tri mogu´ca sluˇcaja:
1. Neka je y : a n . U tom sluˇcaju ´ce xy z za n 6= 1 imati razliˇcit broj a-ova i b-ova, pa ne´ce biti element od L.
2. Sluˇcaj kada je y : b k jednak je kao i prethodni sluˇcaj.
POGLAVLJE 7. MATEMATI ˇ CKA TEORIJA RA ˇ CUNALSTVA 307
3. Neka je y : a n b . No, tada ´ce za n > 1 rijeˇc xy z imati pojavu slova b kojoj slijedi pojava slova a, a to nije dozvoljeno u jeziku L.
Budu´ci da nije zadovoljena lema o pumpanju, jezik L nije regularan.