Konačni automati i regularni izrazi

Slides:



Advertisements
Сличне презентације
Направити добру Power Point презeнтацију ...
Advertisements

- PREDAVANJE 9 - Nikola Zubić Novi Sad,
Konto, kontni okvir, kontni plan
Građevinski fakultet u Beogradu, školska 2018/19 godina
СЦЕНАРИО ЗА ЧАСА Наставна јединица: Сабирање и одузимање до 20.
Показивачи.
Uvod u funkcije Kolegij: Programski jezik C++ Ak. god. 2018/19
ISPITIVANJE KVALITETA SOFTVERSKI GENERISANIH SEGMENATA U OBLASTI VREMENSKE SLOŽENOSTI ALGORITAMA ZA AUTOMATIZOVANO SASTAVLJANJE ISPITA     Đorđe Pešić,
Nastavna jedinica: 4.4. Jezik HTML 4.5. Oznake i parametri HTML jezika
Kliknite ovde za unos prikaza časa u Word dokumentu!
ANALITIČKA METODA ZA KINEMATIČKU ANALIZU – METODA KOMPLEKSNOG BROJA
Ponašanje potrošača.
BREGASTI MEHANIZMI.
Programiranje - Naredbe za kontrolu toka programa – 4. dio
Ustavno pravo II Parlamentarna skupština BiH, Parlament Federacije BiH, Narodna skupština RS – struktura i način izbora doc.dr.Lejla Balić.
PRODAJA Prof. dr Igor Todorović.
OPERA.
Preslikavanje ravnina
Preslikavanja ravnine
POLINOMI :-) III℠, X Силвија Мијатовић.
БОГАТИМО РЕЧНИК - лексичке вежбе-
Узвишења и удубљења Други разред.
Uvod u programiranje - matematika – VI predavanje Petlje. FOR. WHILE
Parametarska sinteza regulatora (izbor parametara)
MATERIJALNI I TOPLOTNI BILANS U TEHNOLOŠKIM PROCESIMA
Електрична сила Кулонов закон.
Pretraživanje interneta
Osnove pseudo jezika operatori, funkcije
PC Istorija računara.
Проблемска ситуација Експериментисање Истраживачки рад ??? Досетљивост Маштовитост Оригиналност Комбинаторне способности Решавање проблема на више начина.
Funkcije.
METODE I TEHNIKE ZA ANALIZU I UNAPREĐENJE KVALITETA
PRIKAZIVANJE I ANALIZA PODATAKA
Vježbe 1. dio - Razvojne okoline -
PyGame.
Спецификатори Иницијализација
Razlomljeno linearno programiranje
7.2 Faza, početna faza i fazna razlika naizmeničnih veličina
A evo kako je trebalo.....
MS EXCEL.
Uvod u programiranje - matematika – V predavanje
Др Наташа Папић-Благојевић
dr Aleksandra Kostić-Milanović mr Vule Aleksić
VALOVI.
Решавањем асоцијације открићете о чему ће бити речи на овом часу!
"С в е т и С а в а" Аранђеловац Симетрала дужи. Симетрала угла
Mihailo Micev Prof. dr Vladan Vujičić Doc. dr Martin Ćalasan
Ustavno pravo I Doc.dr. Lejla Balić.
Relacione baze –primer modelovanja baze
Programski jezici.
Структура програма у Паскалу
Анализа структуре.
Logičko projektovanje računarskih sistema 2
Primena matričnog računa
Algoritmi Vladimir Filipović
Процесорска поља Организација процесорских поља
Саобраћај.
FIZIKA POLUPROVODNIKA
Potisni automati i primeri upotrebe automata u obradi prirodnih jezika
Hrvoje Volarević Ivan Šutalo
Prof. dr Vlado Simeunović OSNOVE RAČUNARSKE TEHNIKE vlado
Međunarodni standardi finansijskog izvještavanja
Poglavlje treće: Troškovi kao vid ulaganja u reprodukciju
МЕЂУНАРОДНИ ДАН ПИСМЕНОСТИ
Principi programiranja
Informatika II-programiranje
ВИСОКА ПОСЛОВНА ШКОЛА СТРУКОВНИХ СТУДИЈА ВАЉЕВО
Синтакса програмских језика и опис синтаксе
Транскрипт презентације:

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

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

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)

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 )

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;

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]

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

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)

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

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.

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

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.

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)

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}

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}

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.

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

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.

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.

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.

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

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

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.

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

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.

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

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

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

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

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.

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 1 2 3 4 5

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

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.

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

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

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

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