Отпремање презентације траје. Молимо да сачекате

Отпремање презентације траје. Молимо да сачекате

Konačni automati i regularni izrazi

Сличне презентације


Презентација на тему: "Konačni automati i regularni izrazi"— Транскрипт презентације:

1 Konačni automati i regularni izrazi
Cvetana Krstev

2 Nedeterministički konačni automati
Dijagram sa slike narušava definiciju konačnog automata jer postoje dva luka koja napuštaju stanje s0 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.

3 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 s0, s1, s1, s1, a s1 je završno stanje; Automat prihvata jer postoji put s0, s2, s3, s2, s3, s2, s3, a s3 je završno stanje; Automat ne prihvata 101 jer ni put s0, s1, φ, φ ni put s0, s2, s3, s2 ne vode u završno stanje.

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

5 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 )

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

7 Pravila prelaska determinističkog KA
Za sva pravila prelaska nedeterminističkog KA grade se odgovarajuća pravila determinističkog KA, npr: (s0, a) → {s0, s1} postaje ([s0], a) → [s0, s1] 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. (s0, a) → {s0, s1} i (s1, a) → {s2} ([s0, s1], a) → [s0, s1, s2]

8 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 [s1, s2], [s2] i [s0, s1, s2].

9 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 [s0, s2], [s1] Ovaj dijagram stanja pokazuje da KA prihvata jezik L = a*ab*(a|b)

10 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

11 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 = s0, Pravila gramatike P su: A → aB  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.

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

13 Pravila generisanja odgovarajuće desno-linearne gramatike
G = {Σ, V, P, S0} S0 → aS0 | a | bS1 | b | ε S1 → aS2 | bS1 | b S2 → aS2 | bS2 Iz ove gramatike su mogu isključiti pravila S1 → aS2 i S2 → aS2 | bS2 jer ona ne vode generisanju nijedne niske terminala.

14 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 → aB, B → ε B  (A, a) ako je A → aB  P φ  (X, a)  a  VT, Početno stanje s0 = S, F = {X} ako ε  L(G), inače F = {X, S} ako ε  L(G)

15 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 → aB, S → ε, B → bS, 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}

16 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}

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

18 Konačni automati i regularni izrazi (2)
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

19 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.

20 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 S0’; Gde god je u polaznom automatu postojao luk iz stanja Si u stanje S0 sa ulaznim simbolom a treba dodati luk iz stanja Si u stanje S0’; Ako je polazni automat imao petlju u stanju S0 sa nekim simbolom treba dodati petlju s istim simbolom u stanju S0’; Za svaki prelazak iz stanja S0 u stanje Si treba dodati prelazak iz stanja S0’ u stanje Si.

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

22 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)*

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

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

25 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 Ap i Aq: Skup stanja automata Apq je Σ = Σp  Σq Skup simbola automata Apq je V = Vp  Vq

26 Konačni automati i regularni izrazi (4)
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, s  p-Fp; Za sva završna stanja automata Ap moguć je prelazak u automat Aq preko njegovog početnog stanja s0q, tj. (u,a) = {(s,a), (s0q,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.

27 Konačni automati i regularni izrazi (4)
Početno stanje automata Apq je početno stanje automata Ap, tj. s0 = s0p 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).

28 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) s0 i s1, stanja automata b), dok se stanjima prelaska završnog stanja automata a) s2 dodaju prelasci koji odgovaraju početnom stanju s3 automata b).

29 Automat jezika L(p)L(q)=10(10)*(11*00*)
Preko završnog stanja prvog automata s2 se prelazi u drugi automat; Početno stanje drugog automata s3 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 ε.

30 Automat jezika L(q)L(p)=(11*00*)10(10)*
Preko završnih stanja prvog automata s4 i s5 se prelazi u drugi automat; Početno stanje drugog automata s0 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 ε.

31 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)→s0; Skup završnih stanja F = Fp {s0} bez obzira da li je s0  Fp.

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

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

34 Zadatak: Na osnovu automata A konstruisati desno-linearnu gramatiku koja generiše jezik L
b a a a b 1 2 3 4 5 VN = Σ = {1, 2, 3, 4, 5} VT = V = {a, b} S = s0 = S1 Pravila prelaska automata i odgovarajuća pravila gramatike: (1, a) → 2  S1 → aS2 A → aB  P, ako postoji pravilo (2, a) → 3  S2 → aS3 prelaska (A, a) → B (3, b) → 3  S3 → bS3 (3, a) → 4  S3 → aS4 (4, b) → 5  S4 → bS5 A → a  P, ako postoji pravilo 5  F  S4 → b prelaska (A, a) → C i C  F

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

36 Na osnovu gramatike konstruisati automat
P = { S → aA, A → aA, A → bA, A → bB, B → ε} Σ = VN  {X}; V = VT = {a, b}; (S, a) = {A} (zbog S → aA) (A, a) = {A} (zbog A → aA, A → aB) (A, b) = {A, B, X} (A zbog A → bA, B zbog A → bB i X A → bB i B → ε) F = {X} a a,b S A B X b b

37 Zadatak: konstruisati konačan automat koji prepoznaje jezik 010*1
1 1 S0 S1 S2 S3

38 Zadatak: konstruisati konačan automat koji prepoznaje jezik (010*1)*
1 1 S0 S1 S2 S3 1

39 Zadatak: konstruisati konačan automat koji prepoznaje jezik (010*1)*1
1 1 1 1 S0 S1 S2 S3 S0’ S1’ 1


Скинути ppt "Konačni automati i regularni izrazi"

Сличне презентације


Реклама од Google