Konani automati i regularni izrazi Cvetana Krstev Nedeterministiki

  • Slides: 39
Download presentation
Konačni automati i regularni izrazi Cvetana Krstev

Konačni automati i regularni izrazi Cvetana Krstev

Nedeterministički konačni automati • Dijagram sa slike narušava definiciju konačnog automata jer postoje dva

Nedeterministički konačni automati • Dijagram sa slike narušava definiciju konačnog automata jer postoje dva luka koja napuštaju stanje s 0 a koja su obeležena istim simbolom 1. • Takvi automati se nazivaju nedeterministički konačni automati; • deterministički konačni automati kod kojih za svaki par (stanje, simbol) postoji tačno jedan prelaz su podklasa nedeterminističkih konačnih automata. 2

Ponašanje nedeterminističkih konačnih automata • Nedeterministički KA prihvata nisku simbola ako za nju postoji

Ponašanje nedeterminističkih konačnih automata • Nedeterministički KA prihvata nisku simbola ako za nju postoji neki put od početnog do nekog završnog stanja: – Automat prihvata 111 jer postoji put s 0, s 1, a s 1 je završno stanje; – Automat prihvata 101010 jer postoji put s 0, s 2, s 3, a s 3 je završno stanje; – Automat ne prihvata 101 jer ni put s 0, s 1, φ, φ ni put s 0, s 2, s 3, s 2 ne vode u završno stanje. 3

Konstruisanje nedeterminističkih automata c) • Automat a) prihvata sve niske koje sadrže najmanje dve

Konstruisanje nedeterminističkih automata c) • Automat a) prihvata sve niske koje sadrže najmanje dve uzastopne jedinice • Automat b) prihvata sve niske u kojima se obrazac 10 ponavlja; • Automat c) prihvata uniju ova dva jezika i njega je lakše konstruisati 4 kao NKA.

Primer • • Svi drugi parovi (stanje, simbol) vode u stanje φ koje blokira

Primer • • Svi drugi parovi (stanje, simbol) vode u stanje φ koje blokira automat. Automat prihvata niske: aa, ab, aaa, aab, aba, abb. . . Automat ne prihvata niske: b, abab, abbab. . . Jezik koji automat prihvata je: L = a*ab*( a | b ) 5

Konstrukcija determinističkog automata iz nedeterminističkog • Nedeterministički automat ima skup stanja: • Σ =

Konstrukcija determinističkog automata iz nedeterminističkog • Nedeterministički automat ima skup stanja: • Σ = {s 0, s 1, s 2} • Odgovarajući deterministički KA će imati skup stanja koji se sastoji od partitivnig skupa stanja nedeterminističkog KA: – {[s 0], [s 1], [s 2], [s 0, s 1], [s 0, s 2], [s 1, s 2], [s 0, s 1, s 2]} • Skup ulaznih simbola je nepromenjen; 6

Pravila prelaska determinističkog KA • Za sva pravila prelaska nedeterminističkog KA grade se odgovarajuća

Pravila prelaska determinističkog KA • Za sva pravila prelaska nedeterminističkog KA grade se odgovarajuća pravila determinističkog KA, npr: – (s 0, a) → {s 0, s 1} postaje ([s 0], a) → [s 0, s 1] • Da bi se odredila pravila prelaska koja su nastala od više stanja polaznog automata pravi se unija svih stanja do kojih se po određenom simbolu stiže, i ta unija je novo stanje, npr. – (s 0, a) → {s 0, s 1} i (s 1, a) → {s 2} – ([s 0, s 1], a) → [s 0, s 1, s 2] 7

Sva pravila prelaska determinističkog KA • Svi drugi parovi stanja novog KA (koji su

Sva pravila prelaska determinističkog KA • Svi drugi parovi stanja novog KA (koji su elementi partitivnog skupa stanja polaznog KA) i ulaznog simbola vode u stanje koje blokira φ; • Završna stanja novog KA su sva stanja koja u sebi sadrže neko završno stanje polaznog automata; – U našem primeru to su stanja [s 1, s 2], [s 2] i [s 0, s 1, s 2]. 8

Deterministički konačni automat • Neka stanja se ne pojavljuju u dijagramu stanja jer ka

Deterministički konačni automat • Neka stanja se ne pojavljuju u dijagramu stanja jer ka njima ne vodi nijedan luk pa su ona nepotrebna; to su stanja [s 0, s 2], [s 1] • Ovaj dijagram stanja pokazuje da KA prihvata jezik L = a*ab*(a|b) 9

Konačni automati i regularne gramatike • Jezici koje prihvataju konačni automati se poklapaju sa

Konačni automati i regularne gramatike • Jezici koje prihvataju konačni automati se poklapaju sa jezicima koje generišu regularne gramatike: – Za svaki deterministički konačan automat postoji desno linearna gramatika koja ga generiše i – Za svaki regularni jezik postoji konačan automat koji ga prihvata. • Ova dva formalizma su ekvivalentna 10

Konačni automati → regularne gramatike • Neka je dat automat A = <V, Σ,

Konačni automati → regularne gramatike • Neka je dat automat A = <V, Σ, R, F>. Za njega se može konstruisati gramatika G = (VN, VT, P, S) na sledeći način: – – Skup neterminala je VN = Σ Skup terminala je VT = V Početni simbol gramatike je S = s 0, Pravila gramatike P su: • A → a. B P, ako postoji pravilo prelaska (A, a) → B u skupu R; • A → a P, ako postoji pravilo prelaska (A, a) → C u skupu R i C F; • S → ε P, ako je početno stanje automata u skupu završnih stanja. 11

Primer konačnog automata i njegovog dijagrama stanja Ovaj automat prihvata jezik L = a*b*

Primer konačnog automata i njegovog dijagrama stanja Ovaj automat prihvata jezik L = a*b* 12

Pravila generisanja odgovarajuće desno-linearne gramatike G = {Σ, V, P, S 0} S 0

Pravila generisanja odgovarajuće desno-linearne gramatike G = {Σ, V, P, S 0} S 0 → a. S 0 | a | b. S 1 | b | ε S 1 → a. S 2 | b. S 1 | b S 2 → a. S 2 | b. S 2 Iz ove gramatike su mogu isključiti pravila S 1 → a. S 2 i S 2 → a. S 2 | b. S 2 jer ona ne vode generisanju nijedne niske terminala. 13

regularne gramatike → konačni automati • Neka je data regularna gramatika G = <VN,

regularne gramatike → konačni automati • Neka je data regularna gramatika G = <VN, VT, P, S> • Konačni automat se generiše na sledeći način: – Skup stanja KA Σ = VN {X} (X dodatno stanje); – Ulazni simboli V = VT, – Pravila prelaska: • X (A, a) ako je A → a P – X (A, a), ako je A → a. B, B → ε • B (A, a) ako je A → a. B P • φ (X, a) a VT, – Početno stanje s 0 = S, – F = {X} ako ε L(G), inače F = {X, S} ako ε L(G) 14

Primer regularne gramatike i odgovarajućeg konačnog automata • Neka je data regularna gramatika G

Primer regularne gramatike i odgovarajućeg konačnog automata • Neka je data regularna gramatika G = <VN, VT, P, S> gde su: – VN = {S, B} – VT = {a, b} – P = {S → a. B, S → ε, B → b. S, B → b} • Odgovarajući konačan automat je: – Σ = {S, B, X} – V = {a, b} – Pravila prelaska: • (B, b) → {X, S}; (S, a) → {B}; – Skup završnih stanja je = {X, S} 15

Dijagram stanja odgovarajućeg konačnog automata – Σ = {S, B, X} – V =

Dijagram stanja odgovarajućeg konačnog automata – Σ = {S, B, X} – V = {a, b} – Pravila prelaska: • (B, b) → {X, S}; (S, a) → {B}; – Skup završnih stanja je = {X, S} 16

Konačni automati i regularni izrazi (1) a) b) s 0 • Za svaki regularni

Konačni automati i regularni izrazi (1) a) b) s 0 • Za svaki regularni izraz postoji konačan automat koji ga prihvata. Proći ćemo korak po korak kroz definiciju regularnih izraza: a) Prazan skup je regularni izraz ; početno stanje koje nije završno; b) Regularni izraz predstavlja jezik { }; početno stanje je i završno. 17

Konačni automati i regularni izrazi (2) c) Ako je a , pri čemu je

Konačni automati i regularni izrazi (2) c) Ako je a , pri čemu je alfabet, onda izraz a predstavlja jezik {a}. U dijagramu stanja iz početnog stanja vodi luk u završno stanje preko simbola a 18

Konačni automati i regularni izrazi (3) • Ako su p i q regularni izrazi

Konačni automati i regularni izrazi (3) • Ako su p i q regularni izrazi jezika L(p) i L(q) onda je (p+q) regularni izraz jezika L(p) L(q); • Neka su Ap i Aq konačni automati regularnih izraza p i q takvi da u njima ne postoji luk koji ulazi u početno stanje; • NKA koji prepoznaje jezik L(p) L(q) ima jedno početno stanje i sva ostala stanja automata Ap i Aq; – Iz početnog stanja vode lukovi u sva stanja automata Ap u koja se stizalo iz početnog stanja tog automata; – Iz početnog stanja vode lukovi u sva stanja automata Aq u koja se stizalo iz početnog stanja tog automata; – Lukovi između svih ostalih stanja se zadržavaju; – Početno stanje je i završno ako je početno stanje Ap ili Aq bilo završno. 19

Konstrukcija automata u kome nijedan luk ne ulazi u početno stanje • Treba duplirati

Konstrukcija automata u kome nijedan luk ne ulazi u početno stanje • Treba duplirati sva stanja polaznog automata i sve lukove osim onih koji vode u početno stanje; • Treba dodati stanje S 0’; • Gde god je u polaznom automatu postojao luk iz stanja Si u stanje S 0 sa ulaznim simbolom a treba dodati luk iz stanja Si u stanje S 0’; • Ako je polazni automat imao petlju u stanju S 0 sa nekim simbolom treba dodati petlju s istim simbolom u stanju S 0’; • Za svaki prelazak iz stanja S 0 u stanje Si treba dodati prelazak iz stanja S 0’ u stanje Si. 20

Primer konstrukcije KA bez lukova ka početnom stanju • U automatu a) ulaze dva

Primer konstrukcije KA bez lukova ka početnom stanju • U automatu a) ulaze dva luka u početno stanje s 0; (automat prepoznaje niske koje sadrže neparan broj jedinica) • U automatu b) je dodato novo početno stanje s 0’; • U automatu a) luk iz s 1 vodi u s 0, pa je u automatu b) dodat luk s 1 u s 0’; • U automatu a) postoji petlja u stanju s 0, pa je u automatu b) dodata petlja u s 0’ sa istim simbolom 0; • U automatu a) luk iz s 0 vodi u s 1, pa je u automatu b) dodat luk s 0’ u s 1. 21

Primer automata za regularni izraz p+q • Automat na slici a) predstavlja automat regularnog

Primer automata za regularni izraz p+q • Automat na slici a) predstavlja automat regularnog izraza p = 0* • Automat na slici b) predstavlja automat regularnog izraza q = 0*1(0*10*1)* • Treba konstruisati automat p + q = 0*+ 0*1(0*10*1)* 22

Konstrukcija KA u kojima nema lukova koji ulaze u početno stanje 23

Konstrukcija KA u kojima nema lukova koji ulaze u početno stanje 23

p + q = 0*+ 0*1(0*10*1) Početna stanja su spojena • s 0’ iz

p + q = 0*+ 0*1(0*10*1) Početna stanja su spojena • s 0’ iz c) je postalo s 1; • s 0’ iz d) je postalo s 2; • s 1 iz d) je postalo s 3; Početno stanje je i završno jer je početno stanje automata c) bilo završno. 24

Konačni automati i regularni izrazi (4) • Ako su p i q regularni izrazi

Konačni automati i regularni izrazi (4) • Ako su p i q regularni izrazi jezika L(p) i L(q) onda je pq regularni izraz jezika L(p)L(q). • Neka je Ap = <Vp, Σp, Rp, Fp> KA regularnog izraza p. • Neka je Aq = <Vq, Σq, Rq, Fq> KA regularnog izraza q. • Automat Apq = <V, Σ, R, F> koji prepoznaje jezik L(p)L(q) se dobija serijskim povezivanjem automata A p i A q: a) Skup stanja automata Apq je Σ = Σp Σq b) Skup simbola automata Apq je V = Vp Vq

Konačni automati i regularni izrazi (4) c) Pravila prelaska automata Apq su: • •

Konačni automati i regularni izrazi (4) c) Pravila prelaska automata Apq su: • • • Za sva stanja automata Ap koja nisu završna preuzimaju se pravila prelaska toga automata, tj. (u, a) = {(s, a)}, gde je u , u=s, s p-Fp; Za sva završna stanja automata Ap moguć je prelazak u automat Aq preko njegovog početnog stanja s 0 q, tj. (u, a) = {(s, a), (s 0 q, a)}, gde je u , u=s, s p, s Fp; Preuzimaju se sva pravila prelaska automata Aq, tj. (u, a) = {(t, a)}, gde je u , u=t, t q.

Konačni automati i regularni izrazi (4) d) Početno stanje automata Apq je početno stanje

Konačni automati i regularni izrazi (4) d) Početno stanje automata Apq je početno stanje automata Ap, tj. s 0 = s 0 p e) Završna stanja automata Apq: – Ako ε L(q), onda je F = Fq, pa automat Apq prihvata nisku samo kada stigne do kraja niske iz L(q): – Ako ε L(q), onda je F = Fp Fq, pa automat Apq prihvata i niske oblika xε = x, gde je x L(p).

Primer automata za regularni izraz pq • Automat a) prepoznaje jezik L(p)=10(10)*; • Automat

Primer automata za regularni izraz pq • Automat a) prepoznaje jezik L(p)=10(10)*; • Automat b) prepoznaje jezik L(q)=11* 00*; • Zadržavaju se stanja automata a) s 0 i s 1, stanja automata b), dok se stanjima prelaska završnog stanja automata a) s 2 dodaju prelasci koji odgovaraju početnom stanju s 3 automata b).

Automat jezika L(p)L(q)=10(10)*(11* 00*) • Preko završnog stanja prvog automata s 2 se prelazi

Automat jezika L(p)L(q)=10(10)*(11* 00*) • Preko završnog stanja prvog automata s 2 se prelazi u drugi automat; • Početno stanje drugog automata s 3 više nije potrebno jer u njega ne vodi nijedan luk (a više nije početno); • Završna stanja su samo završna stanja drugog automata jer prvi automat ne prihvata praznu nisku ε.

Automat jezika L(q)L(p)=(11* 00*)10(10)* • Preko završnih stanja prvog automata s 4 i s

Automat jezika L(q)L(p)=(11* 00*)10(10)* • Preko završnih stanja prvog automata s 4 i s 5 se prelazi u drugi automat; • Početno stanje drugog automata s 0 više nije potrebno jer u njega ne vodi nijedan luk (a više nije početno); • Završno stanje je samo završno stanje drugog automata jer prvi automat ne prihvata praznu nisku ε.

Konačni automati i regularni izrazi (5) • Ako je p regularni izrazi jezika L(p)

Konačni automati i regularni izrazi (5) • Ako je p regularni izrazi jezika L(p) onda je p* regularni izraz jezika L(p)*. • Neka je Ap = <Vp, Σp, Rp, Fp> KA regularnog izraza p. • Onda je Ap* = <Vp, Σp, R, F>: – Skup pravila prelaska R je unija skupa Rp i novih pravila prelaska: za svako (s, a)→t, s p, t Fp dodaje se novo pravilo prelaska (s, a)→s 0; – Skup završnih stanja F = Fp {s 0} bez obzira da li je s 0 Fp.

Automati jezika L(p)=01*0(00|11*) i L*(p)=(01*0(00|11*) )*

Automati jezika L(p)=01*0(00|11*) i L*(p)=(01*0(00|11*) )*

Zadatak: Konstruisati automat A koji prepoznaje jezik L =aab*ab b 1 a 2 a

Zadatak: Konstruisati automat A koji prepoznaje jezik L =aab*ab b 1 a 2 a 3 a 4 b 5

Zadatak: Na osnovu automata A konstruisati desno-linearnu gramatiku koja generiše jezik L b 1

Zadatak: Na osnovu automata A konstruisati desno-linearnu gramatiku koja generiše jezik L b 1 • • a 2 a 3 a 4 b 5 VN = Σ = {1, 2, 3, 4, 5} VT = V = {a, b} S = s 0 = S 1 Pravila prelaska automata i odgovarajuća pravila gramatike: – (1, a) → 2 S 1 → a. S 2 A → a. B P, ako postoji pravilo – – – (2, a) → 3 (3, b) → 3 (3, a) → 4 (4, b) → 5 5 F S 2 → a. S 3 → b. S 3 → a. S 4 → b. S 5 S 4 → b prelaska (A, a) → B A → a P, ako postoji pravilo prelaska (A, a) → C i C F

Zadatak: opisati regularnim izrazom jezik koji generiše sledeća gramatika • Gramatika: • G =

Zadatak: opisati regularnim izrazom jezik koji generiše sledeća gramatika • Gramatika: • G = < Σ, N, P, S > – Σ = {a, b} – N = {S, A, B} – P = { S → a. A, A → b. B, B → ε} • Jezik je L = a(a|b)*b – Sve niske simbola a i b koje počinju s a i završavaju s b.

Na osnovu gramatike konstruisati automat • P = { S → a. A, A

Na osnovu gramatike konstruisati automat • P = { S → a. A, A → b. B, B → ε} – – – Σ = VN {X}; V = VT = {a, b}; (S, a) = {A} (zbog S → a. A) (A, a) = {A} (zbog A → a. A, A → a. B) (A, b) = {A, B, X} (A zbog A → b. A, B zbog A → b. B i X A → b. B i B → ε) F = {X} a S a, b A B b b X

Zadatak: konstruisati konačan automat koji prepoznaje jezik 010*1 0 S 0 0 S 1

Zadatak: konstruisati konačan automat koji prepoznaje jezik 010*1 0 S 0 0 S 1 1 S 2 1 S 3

Zadatak: konstruisati konačan automat koji prepoznaje jezik (010*1)* 0 S 0 0 S 1

Zadatak: konstruisati konačan automat koji prepoznaje jezik (010*1)* 0 S 0 0 S 1 1 1 S 2 1 S 3

Zadatak: konstruisati konačan automat koji prepoznaje jezik (010*1)*1 1 0 S 0 0 S

Zadatak: konstruisati konačan automat koji prepoznaje jezik (010*1)*1 1 0 S 0 0 S 1 1 1 S 2 1 1 S 3 S 0’ 1 S 1’