Download - Algebra formalnih jezika
![Page 1: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/1.jpg)
Interpretacija programa
Krunoslav Puljić
2015/2016
![Page 2: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/2.jpg)
Gramatika neograničenih produkcija
Kontekstno ovisna gramatika
Kontekstno neovisna
gramatika
Hijerarhija automata i gramatika
Regularna
gramatika
Turingov stroj
Linearno ograničeni automat
Potisni automat
Konačni
automat
Rekurzivno prebrojivi jezici
Kontekstno ovisni jezici
Kontekstno neovisni
jezici
Regularni
jezici
Leksička
analiza
Sintaksna
analiza
Semantička
analiza
![Page 3: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/3.jpg)
Formalni jezici
• Znak – apstraktni pojam koji se ne definira
– 0, 1; a, b, c, d
• Abeceda – konačan skup znakova
– Binarna abeceda {0,1};
• Niz – konačan slijed znakova abecede pozicioniranih jedan do drugog
– Nizovi 001, 11010, 1100011 nad abecedom {0,1}
– Duljina niza |ω|
– Prazan niz ɛ
– Nadovezivanje nizova
![Page 4: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/4.jpg)
Formalni jezici
• Formalni jezik - skup nizova nad abecedom
– Intuitivno: jezik je skup riječi
– Prazan skup L1 = { }
– Skup s jednim elementom: praznim nizom • L2 = { ɛ }
– Skup nizova u kojima je broj 0 i 1 paran
• L3 = { 00, 11, 0011, 1001, 1010, ... }
• L3 je zadan nad binarnom abecedom i nije konačan skup
– Skup svih mogućih nizova nad abecedom Σ
• L4 = Σ* = { ɛ, 0, 1, 00, 01, 10, 11, 000, 001, 010, ... }
• L4 nije konačan
![Page 5: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/5.jpg)
Formalni jezici
• Operacije nad formalnim jezicima
– Unija L U N
– Presjek L ∩ N
– Razlika L – N
– Nadovezivanje L N
– Kartezijev produkt L
N
– Partitivni skup 2L – skup svih podskupova
– Kleeneov operator L*
– Kleeneov operator L+
– Komplement jezika Lc
![Page 6: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/6.jpg)
Formalni jezici – Kleenov operator
• L2 = L L ; L3 = L L L
• L0 = { ɛ }; Li = Li-1 L
• L* = L0 U L1 U L2 U L3 U ...
• L+ = L1 U L2 U L3 U L4 U ...
![Page 7: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/7.jpg)
Regularni jezici
• Jezik je regularan akko postoji konačni automat koji ga prihvaća – Za bilo koji regularan jezik moguće je izgraditi konačni
automat koji ga prihvaća
– Bilo koji konačni automat prihvaća jedan od regularnih jezika
• Regularni jezici su najjednostavniji jezici – ...jer je za njihovo prihvaćanje potrebno izgraditi
najjednostavniji automat – konačni
• Regularni izrazi – jednostavan način opisa regularnih jezika
![Page 8: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/8.jpg)
Konačni automati
• Deterministički konačni automat (DKA) – Koristi se u leksičkoj analizi gotovo svih jezičnih procesora
• DKA se sastoji od konačnog skupa stanja i funkcije prijelaza – Funkcija prijelaza jednoznačno je određena znakom na
ulazu i stanjem u kojem se nalazi automat • Za pojedini znak i stanje postoji samo jedan prijelaz
– Jedno od stanja je početno stanje • Tu automat započinje svoj rad
– Ako DKA nakon pročitanih svih znakova niza x prijeđe u jedno od prihvatljivih (završnih) stanja, niz x se prihvaća
• Inače se ne prihvaća
![Page 9: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/9.jpg)
DKA
• DKA prikazujemo dijagramom stanja ili tablicom prijelaza
![Page 10: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/10.jpg)
DKA primjer
S
a Primjer:
Jezik L = { ɛ, a, a2, a3, ... } nad abecedom { a }
a*
Jezik L = { a, a2, a3, ... } nad abecedom { a }
a+
S2
a
S1
a
![Page 11: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/11.jpg)
DKA
• DKA je uređena petorka (Q, ∑, δ, q0, F) gdje je
– Q – konačni skup stanja
– ∑ – konačan skup ulaznih znakova
– δ – funkcija prijelaza Q
∑ → Q
– q0 ∊ Q – početno stanje
– F ⊆ Q – skup prihvatljivih (završnih) stanja
![Page 12: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/12.jpg)
DKA primjer
• Prikaz konačnog automata
pomoću usmjerenog grafa
• Koristi se i naziv dijagram
stanja
• Abeceda
D = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
• Jezik
L = { riječi “djeljive s 3” }
L = { ɛ, 0, 3, 6, 9, 12, 15, ... }
• dozvoljene vodeće nule
npr. 003
• L je podskup od D*
D
J S
1, 4, 7
2, 5, 8
0, 3, 6, 9
2, 5, 8
1, 4, 7
2, 5, 8
1, 4, 7
0, 3, 6, 9
0, 3, 6, 9
![Page 13: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/13.jpg)
DKA primjer
Q = { S, J ,D }
∑ = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
Δ (J, 2) = S (npr.)
q0 = S
F = { S }
D
J S
1, 4, 7
2, 5, 8
0, 3, 6, 9
2, 5, 8
1, 4, 7
2, 5, 8
1, 4, 7
0, 3, 6, 9
0, 3, 6, 9
![Page 14: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/14.jpg)
Sta
nje
Ulazni znak Oznaka prihvatljivosti
0 1 2 3 4 5 6 7 8 9
S S J D S J D S J D S 1
J J D S J D S J D S J 0
D D S J D S J D S J D 0
Prikaz konačnog
automata pomoću
tablice prijelaza D
J S
1, 4, 7
2, 5, 8
0, 3, 6, 9
2, 5, 8
1, 4, 7
2, 5, 8
1, 4, 7
0, 3, 6, 9
0, 3, 6, 9
![Page 15: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/15.jpg)
Funkcija prijelaza δ
• novo stanje = δ (staro stanje, ulazni znak)
• δ : Q
∑ → Q
![Page 16: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/16.jpg)
Proširenje funkcije δ
• Definira se i δ’ : Q
∑* → Q.
– Određuje stanje DKA nakon što je pročitan niz
(riječ) w.
– ∑* je skup svih mogućih nizova ulaznih
znakova
• w, x, y, z će označavati ulazne nizove iz ∑*
• a, b, c, ... , 0, 1, 2, ... će označavati ulazne znakove
• p, q, ... će označavati stanja
![Page 17: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/17.jpg)
Proširenje funkcije δ
• δ’(q,w) određuje stanje DKA nakon što je u
stanju q pročitan niz ulaznih znakova w
• δ’(q,w) se definira ovako:
1) δ’(q, ε) = q, gdje je ε prazni niz
2) za bilo koji niz ulaznih znakova w i za bilo
koji ulazni znak a vrijedi:
• δ’(q, wa) = δ(δ’(q, w) , a), gdje je w∊Σ*, i a∊Σ
![Page 18: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/18.jpg)
Proširenje funkcije δ
• (1) kaže da DKA ne može promijeniti
stanje, a da ne pročita barem jedan ulazni
znak
• (2) definira kako se računa stanje u koje
prelazi DKA čitanjem niza znakova wa
![Page 19: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/19.jpg)
Proširenje funkcije δ
• Ako u (2) uvrstimo w= ε, dobije se
– δ’(q, a) = δ’(q, εa) = δ(δ’(q, ε),a) = δ(q, a)
– Ako ne razlikujemo ulazni znak a∊Σ i niz a∊Σ *
duljine |a|=1, funkcije δ i δ’ imaju jednaku
vrijednost za sve one argumente za koje su
obje strane definirane
• Zato koristimo samo jednu oznaku (δ) za obje
funkcije
![Page 20: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/20.jpg)
Prihvaćanje niza
• DKA dka=(Q, ∑, δ, q0, F) prihvaća niz x ako je
δ(q0, x)=p ∊ F
• DKA prihvaća skup
–L(dka) = { x ∊ Σ * : δ(q0, x) ∊ F }
–L(dka) ⊆ Σ *
• Za sve nizove koji nisu u L(dka) kažemo da
ih DKA ne prihvaća
![Page 21: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/21.jpg)
Model konačnog automata
• Dijelovi DKA:
– Konačna ulazna traka
– Glava za čitanje
– Upravljačka jedinica
• Upravljačka jedinica pamti samo stanje u kojem se
nalazi (nema druge memorije)
– Upravljačka jedinica u stanju q pročita ulazni znak a s ulazne
trake, promijeni stanje u novo stanje δ(q, a) i pomakne glavu za
čitanje jedno mjesto u desno
– Ako je novo stanje prihvatljivo, onda DKA prihvaća do tada
pročitani niz (ali bez znaka na kojem je pozicionirana glava za
čitanje)
• Pomakom glave izvan krajnje desne pozicije, prihvaća se ili ne prihvaća cijeli
niz ispisan na traci, ovisno o stanju u kojem se DKA nalazi
Upravljačka jedinica
Stanje
a1 ... ai ... an-1 Ulazna traka
Glava za čitanje
![Page 22: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/22.jpg)
Model konačnog automata
• Usporedba s Turingovim strojem (za sada)
– Traka je konačna
– Sa trake se samo čita (nema pisanja)
– Glava ide samo u desno
• Čitanje znaka “potroši” taj znak s trake
![Page 23: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/23.jpg)
Primjeri...
• Q = {pp, nn, pn, np}
• Σ = {0, 1}
• q0 = pp
• F = {pp, nn}
• δ(pp,1)=pn, δ(pp,0)=np, δ(pn,1)=pp, δ(pn,0)=nn,
δ(np,1)=nn, δ(np,0)=pp, δ(nn,1)=np, δ(nn,0)=pn
• DKA prihvaća sve nizove nula i jedinica koji imaju:
– paran broj jedinica i paran broj nula, ili
– neparan broj jedinica i neparan broj nula
![Page 24: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/24.jpg)
Primjeri...
• DKA s prethodnog slajda se može prikazati i dijagramom stanja i tablicom prijelaza
np
pn pp
0
nn
0
1
1
1
0
1
0
0 1
pp np pn 1
pn nn pp 0
np pp nn 0
nn pn np 1
![Page 25: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/25.jpg)
Prihvaćanje niza
• Postupak prihvaćanja niza
![Page 26: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/26.jpg)
Prihvaćanje niza
• Tablica prijelaza i dijagram stanja
olakšavaju postupak prihvaćanja niza
![Page 27: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/27.jpg)
Zadatak
• Implemetirajte DKA
– Koristite C++
• Dev-C++ ili Visual Studio ili vi i gcc
• Python, Java itd.
– Neka abeceda bude {0,1}, tj. podskup int-ova (enum)
– Stanja označite malim slovima engleske abecede
{a,b,c, ... ,z}, tj. podskup char-ova
– Sami osmislite kako ćete unositi funkciju prijelaza
– Zadajte i početno stanje i skup završnih stanja
• Provjerite da se radi o stanjima, te javite grešku
• ili ih ubacite u skup stanja ako ih nema
![Page 28: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/28.jpg)
Zadatak
• Implemetirajte DKA
– Implementirajte učitavanje DKA iz datoteke
![Page 29: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/29.jpg)
Minimizacija DKA
• Za bilo koji DKA moguće je izgraditi
proizvoljno mnogo drugih DKA koji
prihvaćaju isti jezik
– Ideja: izgraditi DKA s što manjim brojem
stanja
• Teorem: minimalni DKA je jedinstven
![Page 30: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/30.jpg)
Istovjetnost stanja DKA
• Stanje p DKA M=() je istovjetno stanju p’
DKA M’=() akko DKA M u stanju p
prihvaća isti skup nizova kao i DKA M’ u
stanju p’
– Za bilo koji niz w skupa * mora vrijediti:
δ(p,w) i δ’(p’,w) su oba završna ili oba
nezavršna stanja
![Page 31: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/31.jpg)
Istovjetnost stanja DKA
• Relacija istovjetnosti je tranzitivna
– Da bismo smanjili broj stanja zadanog DKA,
grupa istovjetnih stanja se zamijeni jednim
jedinstvenim stanjem
• Primjer: neka su p4 i p5 istovjetna stanja
c d
p1 p1 p4 0
p2 p3 p5 1
p3 p5 p1 0
p4 p2 p3 1
p5 p2 p3 1
c d
p1 p1 X 0
p2 p3 X 1
p3 X p1 0
X p2 p3 1
X p2 p3 1 postaje
višak
![Page 32: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/32.jpg)
Istovjetnost DKA
• DKA M i M’ su istovjetni akko su istovjetna
njihova početna stanja q0 i q0’
![Page 33: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/33.jpg)
Ispitivanje istovjetnosti stanja
• Istovjetnost stanja p i q svodi se na
ispitivanje dva uvjeta:
– Uvjet podudarnosti: p F i q F ili p F i q F
– Uvjet napredovanja: a mora vrijediti da su
stanja δ(p,a) i δ(q,a) istovjetna
![Page 34: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/34.jpg)
Pronalaženje istovjetnih stanja
• Primjer:
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
![Page 35: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/35.jpg)
Pronalaženje istovjetnih stanja
• Nekoliko algoritama
• Algoritam 1: gradimo tablicu (korak 1)
– Za sve ulazne znakove gradimo poseban
stupac
– Par stanja za koji ispitujemo istovjetnost
upisuje se u prvi redak
c d
p0, p7
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
![Page 36: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/36.jpg)
Pronalaženje istovjetnih stanja
• Nekoliko algoritama
• Algoritam 1: gradimo tablicu (korak 2)
– Uvjet podudarnosti ispituje se za sve parove
stanja koje upisujemo u retke tablice
• Ako par nije podudaran, početna stanja nisu
istovjetna
• Ako je par podudaran određujemo nove
parove stanja ovisno o znaku abecede
u stupcu
c d
p0, p7 p0, p6
p3
p0 i p7 su oba
nezavršna pa su
podudarna
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
![Page 37: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/37.jpg)
Pronalaženje istovjetnih stanja • Nekoliko algoritama
• Algoritam 1: gradimo tablicu (korak 3)
– Za novi par postoje tri mogućnosti:
• Dva ista stanja
– Nema akcije
• Dva različita stanja koja su se već pojavila
– Nema akcije
• Dva različita stanja koja se još nisu pojavila
– Ubacujemo novi redak u tablicu
c d
p0, p7 p0, p6 p3
p0, p6 ubačen novi
redak
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
![Page 38: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/38.jpg)
Pronalaženje istovjetnih stanja • Algoritam 1: gradimo tablicu (korak 4)
– Ako se u prethodnom koraku ne pojavi niti
jedan novi redak u tablici, onda je par stanja
zapisan u prvom retku tablice istovjetan
• Kao i svi ostali parovi stanja zapisani u ostalim
recima tablice
– Zbog uvjeta napredovanja
– Ako postoji novi redak, vraćamo se na
korak 2
c d
p0, p7 p0, p6 p3
p0, p6 Stanja nisu
podudarna pa niti
početni par nije
istovjetan. KRAJ.
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
![Page 39: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/39.jpg)
Pronalaženje istovjetnih stanja • Provjerimo eventualnu istovjetnost stanja
p0 i p1
c d
p0, p1 podudarna stanja
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
c d
p0, p1 p0, p2 p3, p5
p0, p2 podudarna stanja
p3, p5
c d
p0, p1 p0, p2 p3, p5
p0, p2 p0, p2 p3, p7
p3, p5
p3, p7
![Page 40: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/40.jpg)
Pronalaženje istovjetnih stanja • Provjerimo eventualnu istovjetnost stanja
p0 i p1
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
c d
p0, p1 p0, p2 p3, p5
p0, p2 p0, p2 p3, p7
p3, p5 podudarna stanja
p3, p7
c d
p0, p1 p0, p2 p3, p5
p0, p2 p0, p2 p3, p7
p3, p5 p6 p5, p7
p3, p7
p5, p7
![Page 41: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/41.jpg)
Pronalaženje istovjetnih stanja • Provjerimo eventualnu istovjetnost stanja
p0 i p1
• budući da nema novih redaka u tablici, par
stanja u prvom retku prvog stupca je
podudaran
– kao i parovi stanja u ostalim recima prvog stupca
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
c d
p0, p1 p0, p2 p3, p5
p0, p2 p0, p2 p3, p7
p3, p5 p6 p5, p7
p3, p7 p6 p3, p7 podudarna stanja
p5, p7 p6 p3, p5 podudarna stanja
![Page 42: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/42.jpg)
Pronalaženje istovjetnih stanja • p0 i p1 su istovjetna, kao i p0 i p2
– zbog tranzitivnosti i komutativnosti su sva tri
stanja istovjetna p0 ~ p1 ~ p2
• uvedimo za njih oznaku A
• p3 i p5 su istovjetna, kao i p5 i p7
– zato su sva tri stanja istovjetna p3 ~ p5 ~ p7
• uvedimo za njih oznaku B
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
c d
p0, p1 p0, p2 p3, p5
p0, p2 p0, p2 p3, p7
p3, p5 p6 p5, p7
p3, p7 p6 p3, p7 podudarna stanja
p5, p7 p6 p3, p5 podudarna stanja
![Page 43: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/43.jpg)
Pronalaženje istovjetnih stanja • p0 ~ p1 ~ p2
• uvedimo za njih oznaku A
• p3 ~ p5 ~ p7
• uvedimo za njih oznaku B
c d
p0 p0 p3 0
p1 p2 p5 0
p2 p2 p7 0
p3 p6 p7 0
p4 p1 p6 1
p5 p6 p5 0
p6 p6 p3 1
p7 p6 p3 0
c d
A A B 0
A A B 0
A A B 0
B p6 B 0
p4 A p6 1
B p6 B 0
p6 p6 B 1
B p6 B 0
c d
A A B 0
B p6 B 0
p4 A p6 1
p6 p6 B 1
![Page 44: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/44.jpg)
Nedohvatljiva stanja
– Red ToDo; Skup D, Done;
– Ubaci q0 u ToDo i u D;
– Dok ToDo nije prazan radi:
• Skini stanje s pocetka reda
• Ubaci ga u Done
• Pogledaj do kuda možeš doći iz tog stanja
• Ubaci nova stanja (not Done) u ToDo
• Ubaci sva stanja u D
– http://web.studenti.math.pmf.unizg.hr/~nuno/
ip/2015/
![Page 45: Algebra formalnih jezika](https://reader031.vdocuments.pub/reader031/viewer/2022013120/58998ecd1a28abeb468b5efc/html5/thumbnails/45.jpg)
Zadatak
• Implemetirajte funkciju koja provjerava da li DKA
prihvaća zadanu riječ
– Riječ = niz (polje, vektor) znakova abecede
• string?
• Primjenite DKA na nekoliko jednostavnih
primjera, te provjerite da li automat prihvaća
zadane riječi