460-4065: Teoretická informatika(ti) prof. RNDr Petr Jančar, CSc. katedra informatiky FEI VŠB-TUO www.cs.vsb.cz/jancar Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 1/ 25
Základní informace o kursu http://www.cs.vsb.cz/jancar/teoret-inf/teoret-inf.htm Návaznost na kurs Úvod do teoretické informatiky z bakalářského studia (prohloubení a rozšíření vybraných partií teorie jazyků a automatů, vyčíslitelnosti, výpočetní složitosti, algoritmů,... pravděpodobnostní algoritmy, aproximační algoritmy,...). Základním pracovním textem je P. Jančar: Teoretická informatika, VŠB-TU, Ostrava, 2007(2010); pdf-soubor na webu(rozsah 336 stran). (Nejen) teoretická informatika se pochopitelně opírá o logiku. M. Duží: Logika pro informatiky, VŠB-TU Ostrava 2012(pdf na webu). Na webu také informace o průběhu kursu po jednotlivých týdnech(mj. zadání cvičení předem). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 2/ 25
Zápočet a zkouška Zápočtová písemka(45-minutová, v určeném týdnu ke konci semestru). Celkově bude možné získat 21 bodů. Nutnou podmínkou k získání zápočtu je zisk alespoň 7 bodů. Jeden pokus, který v zásadě není možné opakovat. (Dalšíinfonawebu,včetněmožnostix 11,zápis7+(x 11)/2.) Referát(další nutná podmínka k získání zápočtu). Do termínu uvedeného na webu bude každému přiděleno zadání emailem. Prověření podkladů a skutečného porozumění proběhne v určeném termínu ke konci semestru. Za obhájený referát lze získat 5-10 bodů. (Nebo1-5bodů,dalšíinfonawebu.) Aktivita na cvičení, 0-7 bodů.(konkrétní informace cvičící.) Zápočet:min.7+1+0=8bodů,max.21+10+7=38bodů. Zkouška: písemná(90-minutová), podle potřeby doplněná ústní částí; max. 62bodů;dvě(tématické)částipo31bodech.Vkaždéčástinutnozískat alespoň11bodůacelkověalespoň25bodů. Kezkoušcejemožnéjítjenposplněnípožadavkůkzápočtu. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 3/ 25
Cvičení, konzultace Cvičení...předpokládásepředběžnápřípravaaaktivita! Konzultace... primárně v konzultačních hodinách vyučujících (avizujte emailem nebo se domluvte po cvičení či přednášce). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 4/ 25
Konečný automat(jako model systému) ZA PRED-I-ZA NIKDE PRED PRED ZA PRED-I-ZA ZAVRENO OTEVRENO NIKDE Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 5/ 25
Konečný automat(jako model systému) ZA PRED-I-ZA NIKDE PRED PRED ZA PRED-I-ZA ZAVRENO OTEVRENO NIKDE PRED ZA PR-I-ZA NIKDE ZAV OTEV ZAV ZAV ZAV OTEV OTEV OTEV OTEV ZAV Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 5/ 25
Konečný automat(jako model systému) ZA PRED-I-ZA NIKDE PRED PRED ZA PRED-I-ZA ZAVRENO OTEVRENO NIKDE PRED ZA PR-I-ZA NIKDE ZAV OTEV ZAV ZAV ZAV OTEV OTEV OTEV OTEV ZAV A = (Q,Σ,δ) Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 5/ 25
Konečný automat(jako model systému) ZA PRED-I-ZA NIKDE PRED PRED ZA PRED-I-ZA ZAVRENO OTEVRENO NIKDE PRED ZA PR-I-ZA NIKDE ZAV OTEV ZAV ZAV ZAV OTEV OTEV OTEV OTEV ZAV A = (Q,Σ,δ) Q...(konečná)množinastavů Σ...(konečná)abeceda(množinapísmen,akcí,symbolů,...) δ :Q Σ Q...přechodováfunkce Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 5/ 25
Konečný automat(jako model systému) ZA PRED-I-ZA NIKDE PRED PRED ZA PRED-I-ZA ZAVRENO OTEVRENO NIKDE PRED ZA PR-I-ZA NIKDE ZAV OTEV ZAV ZAV ZAV OTEV OTEV OTEV OTEV ZAV A = (Q,Σ,δ) Q...(konečná)množinastavů Σ...(konečná)abeceda(množinapísmen,akcí,symbolů,...) δ :Q Σ Q...přechodováfunkce Q = {ZAV,OTEV}, Σ = {PRED,ZA,PR-I-ZA,NIKDE}, δ = {((ZAV,PRED),OTEV),...} Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 5/ 25
Co dělá tento program(algoritmus)? #include <stdio.h> int main(int argc, char argv) { bool even a = true; while(true) { int c = getchar(); switch(c) { case a : even a =!even a; break; case EOF: case \n : if (even a) { printf( Yes\n ); } else { printf( No\n ); } return 0; } } } Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 6/ 25
Podstata předchozího algoritmu... jistý konečný automat x x a x a r 0 r 1 a r 0 =even r 1 =odd b a a b c a... r 0 řídicí jednotka Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 7/ 25
Podstata předchozího algoritmu... jistý konečný automat x x a x a r 0 r 1 a r 0 =even r 1 =odd A a b c... r 0 r 1 r 0 r 1 r 0 r 1 b a a b c a... r 0 řídicí jednotka Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 7/ 25
Podstata předchozího algoritmu... jistý konečný automat x x a x a r 0 r 1 a r 0 =even r 1 =odd b a a b c a... r 0 řídicí jednotka A a b c... r 0 r 1 r 0 r 1 r 0 r 1 A = (Q,Σ,δ,q 0,F) = ({r 0,r 1 },{a,b,c,...},δ,r 0,{r 0 }),kde δ = {((r 0,a),r 1 ),((r 0,b),r 0 ),...}; q 0 jepočátečnístavaf Qjemnožinapřijímajícíchstavů. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 7/ 25
Podstata předchozího algoritmu... jistý konečný automat x x a x a r 0 r 1 a r 0 =even r 1 =odd b a a b c a... r 0 řídicí jednotka A a b c... r 0 r 1 r 0 r 1 r 0 r 1 A = (Q,Σ,δ,q 0,F) = ({r 0,r 1 },{a,b,c,...},δ,r 0,{r 0 }),kde δ = {((r 0,a),r 1 ),((r 0,b),r 0 ),...}; q 0 jepočátečnístavaf Qjemnožinapřijímajícíchstavů. Tedynapř. δ(r 0,a) =r 1... píšemetakér 0 a A r 1 čijenr 0 a r 1 (kdyžajedánkontextem). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 7/ 25
procedure XY (var F: file) const maxstate = 1 type state = 0.. maxstate type alphabet = (a,b) const A: array [ state, alphabet ] of state = [[1,0],[0,1]] const AccSt: set of state = [0] var q: state; ch: char begin q:=0 while true do read( ch, F ) if EOF then (if q in AccSt then return 1 else return 0) q := A[ q, ch ] endwhile end Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 8/ 25
procedure XY (var F: file) const maxstate = 1 type state = 0.. maxstate type alphabet = (a,b) const A: array [ state, alphabet ] of state = [[1,0],[0,1]] const AccSt: set of state = [0] var q: state; ch: char begin q:=0 while true do read( ch, F ) if EOF then (if q in AccSt then return 1 else return 0) q := A[ q, ch ] endwhile end Procedura interpretuje(provádí, simuluje) předchozí automat. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 8/ 25
procedure XY (var F: file) const maxstate = 1 type state = 0.. maxstate type alphabet = (a,b) const A: array [ state, alphabet ] of state = [[1,0],[0,1]] const AccSt: set of state = [0] var q: state; ch: char begin q:=0 while true do read( ch, F ) if EOF then (if q in AccSt then return 1 else return 0) q := A[ q, ch ] endwhile end Procedura interpretuje(provádí, simuluje) předchozí automat. Snadno lze modifikovat tak, že i automat je vstupním parametrem. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 8/ 25
Příklad(výpočetního) problému Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 9/ 25
Příklad(výpočetního) problému Vstup(neboli instance problému): abeceda Σ,řetězect Σ,vzorekp Σ. (Např.: t je obsah 100 GB databáze s genetickou informací, p je jistý vzorek(řetězec) délky 100.) Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 9/ 25
Příklad(výpočetního) problému Vstup(neboli instance problému): abeceda Σ,řetězect Σ,vzorekp Σ. (Např.: t je obsah 100 GB databáze s genetickou informací, p je jistý vzorek(řetězec) délky 100.) Výstup:(vhodná) reprezentace pozic výskytů vzorku p v řetězci t. (Výskyty vzorku se mohou překrývat.) Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 9/ 25
Příklad(výpočetního) problému Vstup(neboli instance problému): abeceda Σ,řetězect Σ,vzorekp Σ. (Např.: t je obsah 100 GB databáze s genetickou informací, p je jistý vzorek(řetězec) délky 100.) Výstup:(vhodná) reprezentace pozic výskytů vzorku p v řetězci t. (Výskyty vzorku se mohou překrývat.) Pro jednoduchost se zaměříme na(pod)problém, kde máme fixně Σ = {a,b}ap=abaaba.příkladvstupu: Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 9/ 25
Příklad(výpočetního) problému Vstup(neboli instance problému): abeceda Σ,řetězect Σ,vzorekp Σ. (Např.: t je obsah 100 GB databáze s genetickou informací, p je jistý vzorek(řetězec) délky 100.) Výstup:(vhodná) reprezentace pozic výskytů vzorku p v řetězci t. (Výskyty vzorku se mohou překrývat.) Pro jednoduchost se zaměříme na(pod)problém, kde máme fixně Σ = {a,b}ap=abaaba.příklad: Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 10/ 25
Přímočarý algoritmus(ještě jednou v C-čku...) int main(int argc, char argv) { char tail[6] = { 0,0,0,0,0,0 }; while(true) { // Infinite loop int c = getchar(); if (c == \n ) { return 0; } tail[0] = tail[1]; tail[1] = tail[2]; tail[2] = tail[3]; tail[3] = tail[4]; tail[4] = tail[5]; tail[5] = c; } } if (tail[0] == a && tail[1] == b && tail[2] == a && tail[3] == a && tail[4] == b && tail[5] == a ) { zpracuj...; } Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 11/ 25
Je podstatou předchozího algoritmu konečný automat? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 12/ 25
Je podstatou předchozího algoritmu konečný automat? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 12/ 25
Je podstatou předchozího algoritmu konečný automat? Dáseříciano,aleje trochu velký...cokdyždélkavzorkujenapř.100? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 12/ 25
Složitost(uvedeného) algoritmu Algoritmus Amá(časovou)složitostT A...cotoje? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 13/ 25
Složitost(uvedeného) algoritmu Algoritmus Amá(časovou)složitostT A...cotoje? T A : N N...coznamenánapř.T A (35) =2800? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 13/ 25
Složitost(uvedeného) algoritmu Algoritmus Amá(časovou)složitostT A...cotoje? T A : N N...coznamenánapř.T A (35) =2800? horní odhady T A O(f)(čiT A (n) O(f(n)),někdysepíšeiT A =O(f)apod.) Např.T A (n) O(n 2 )... Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 13/ 25
Složitost(uvedeného) algoritmu Algoritmus Amá(časovou)složitostT A...cotoje? T A : N N...coznamenánapř.T A (35) =2800? horní odhady T A O(f)(čiT A (n) O(f(n)),někdysepíšeiT A =O(f)apod.) Např.T A (n) O(n 2 )... f(n) O(g(n)) df n :f(n) g(n)...nebojetojinak?ano,jinak! Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 13/ 25
Složitost(uvedeného) algoritmu Algoritmus Amá(časovou)složitostT A...cotoje? T A : N N...coznamenánapř.T A (35) =2800? horní odhady T A O(f)(čiT A (n) O(f(n)),někdysepíšeiT A =O(f)apod.) Např.T A (n) O(n 2 )... f(n) O(g(n)) df n :f(n) g(n)...nebojetojinak?ano,jinak! Někdy je vhodné použít více parametrů, jako např. u našeho algoritmu: vstup:vzorekp(délkym), text t(délkyn); vezmi prázdný buffer délky m, nastav čtení t na začátek; opakuj dokud nepřečteš celé t: přesuňsymbolztdobufferu(aposuňčtecíhlavu); kdyžjevbufferup,ohlašjakodalšívýskytvzorku Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 13/ 25
Složitost(uvedeného) algoritmu Algoritmus Amá(časovou)složitostT A...cotoje? T A : N N...coznamenánapř.T A (35) =2800? horní odhady T A O(f)(čiT A (n) O(f(n)),někdysepíšeiT A =O(f)apod.) Např.T A (n) O(n 2 )... f(n) O(g(n)) df n :f(n) g(n)...nebojetojinak?ano,jinak! Někdy je vhodné použít více parametrů, jako např. u našeho algoritmu: vstup:vzorekp(délkym), text t(délkyn); vezmi prázdný buffer délky m, nastav čtení t na začátek; opakuj dokud nepřečteš celé t: přesuňsymbolztdobufferu(aposuňčtecíhlavu); kdyžjevbufferup,ohlašjakodalšívýskytvzorku Složitost algoritmu je v O(mn)(tělo vnějšího cyklus se provede n-krát, v každémběhuseprovede skrytý vnitřnícyklussmax.m běhy...). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 13/ 25
Provelkám,n(např.m=100,n=10 11 )jejistěvhodnésepokusitolepší algoritmus, než je ten se složitostí O(mn)(přesněji Θ(mn)). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 14/ 25
Provelkám,n(např.m=100,n=10 11 )jejistěvhodnésepokusitolepší algoritmus, než je ten se složitostí O(mn)(přesněji Θ(mn)). Klíčová idea(otázka): jakou informaci si stačí pamatovat z(dosud) přečteného úseku? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 14/ 25
Provelkám,n(např.m=100,n=10 11 )jejistěvhodnésepokusitolepší algoritmus, než je ten se složitostí O(mn)(přesněji Θ(mn)). Klíčová idea(otázka): jakou informaci si stačí pamatovat z(dosud) přečteného úseku? Lze nahlédnout, že si stačí pamatovat nejdelší sufix dosud přečteného, kterýjeprefixemvzorku,tedydefactočíslovrozmezí0...m. V našem konkrétním příkladu(kde p = abaaba): Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 14/ 25
Provelkám,n(např.m=100,n=10 11 )jejistěvhodnésepokusitolepší algoritmus, než je ten se složitostí O(mn)(přesněji Θ(mn)). Klíčová idea(otázka): jakou informaci si stačí pamatovat z(dosud) přečteného úseku? Lze nahlédnout, že si stačí pamatovat nejdelší sufix dosud přečteného, kterýjeprefixemvzorku,tedydefactočíslovrozmezí0...m. V našem konkrétním příkladu(kde p = abaaba): Teďseukazuje,žealgoritmuslzezaložitnakon.automatusm+1stavy. Ale jak, a jak rychle, automat k danému vzorku sestrojíme? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 14/ 25
Provelkám,n(např.m=100,n=10 11 )jejistěvhodnésepokusitolepší algoritmus, než je ten se složitostí O(mn)(přesněji Θ(mn)). Klíčová idea(otázka): jakou informaci si stačí pamatovat z(dosud) přečteného úseku? Lze nahlédnout, že si stačí pamatovat nejdelší sufix dosud přečteného, kterýjeprefixemvzorku,tedydefactočíslovrozmezí0...m. V našem konkrétním příkladu(kde p = abaaba): Teďseukazuje,žealgoritmuslzezaložitnakon.automatusm+1stavy. Ale jak, a jak rychle, automat k danému vzorku sestrojíme? PůjdetovčaseO(m),takžecelkověsložitostsrazímenaO(m+n)... Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 14/ 25
Konstrukce automatu(knuth, Morris, Pratt) Kdanémuvzorkup:array[1..m]ofchar(prom 1)konstruujeme dvourozměrné pole Next(což je onen automat): Next[0,p[1]] :=1; x Σ {p[1]} :Next[0,x] :=0; Sec[1] :=0; fori :=1tom 1do Next[i, p[i+1]] := i+1; x Σ {p[i+1]} :Next[i,x] :=Next[Sec[i],x]; Sec[i+1] := Next[Sec[i], p[i+1]]; x Σ :Next[m,x] :=Next[Sec[m];x]; Sec je pomocné jednorozměrné pole; Sec[i] je sekundární možnost, tedy délka nejdelšího vlastního sufixu řetězce p[1..i], který je rovněž prefixem vzorku p. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 15/ 25
Konstrukce automatu(knuth, Morris, Pratt) Kdanémuvzorkup:array[1..m]ofchar(prom 1)konstruujeme dvourozměrné pole Next(což je onen automat): Next[0,p[1]] :=1; x Σ {p[1]} :Next[0,x] :=0; Sec[1] :=0; fori :=1tom 1do Next[i, p[i+1]] := i+1; x Σ {p[i+1]} :Next[i,x] :=Next[Sec[i],x]; Sec[i+1] := Next[Sec[i], p[i+1]]; x Σ :Next[m,x] :=Next[Sec[m];x]; Sec je pomocné jednorozměrné pole; Sec[i] je sekundární možnost, tedy délka nejdelšího vlastního sufixu řetězce p[1..i], který je rovněž prefixem vzorku p. Pozn.: zmíněná složitost O(m) zde platí pro fixní abecedu Σ; v obecném případě se vyhneme explicitní konstrukci přechodů pro všechna x Σ. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 15/ 25
Sestrojený automat Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 16/ 25
K poznámce o složitosti O(m) konstrukce automatu Klíčem je funkce Sec, kde Sec(i) je délka nejdelšího vlastního sufixu p(1)p(2)... p(i) (tedy prefixu vzorku délky i), který je rovněž prefixem vzorku. (Vnašempříkladubylonapř.Sec(5) =2,Sec(2) =0,atd.) Na obrázku níže je znázorněna jiná situace, kde Sec(200) = 130, Sec(130) =50,Sec(50) =20,Sec(20) =0. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 17/ 25
(given p: array [1..m] of char) Sec[0]:=-1; Sec[1]:=0; for i:=2 to m do x:=p[i]; j:=sec[i-1]; end:=false; while (j>=0 and (not end)) do if x = p[j+1] then (Sec[i]:=j+1; end:=true) else j:=sec[j] ; if j<0 then Sec[i]:=0 Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 18/ 25
(given p: array [1..m] of char) Sec[0]:=-1; Sec[1]:=0; for i:=2 to m do x:=p[i]; j:=sec[i-1]; end:=false; while (j>=0 and (not end)) do if x = p[j+1] then (Sec[i]:=j+1; end:=true) else j:=sec[j] ; if j<0 then Sec[i]:=0 HrubýodhaddáO(m 2 )(jedencyklusvnořendodruhého),aledetailnější analýza(amortizované složitosti) ukáže O(m)(rozdíl i Sec(i) nemůže klesnout, tedy celkový počet operací vnitřního cyklu je O(m)). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 18/ 25
Slova a jazyky přijímané konečnými automaty MějmezadánKAA = (Q,Σ,δ,q 0,F). Zavádíme značení q w q proternárnírelaci,podmnožinuq Σ Q: Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 19/ 25
Slova a jazyky přijímané konečnými automaty MějmezadánKAA = (Q,Σ,δ,q 0,F). Zavádíme značení q w q proternárnírelaci,podmnožinuq Σ Q: Induktivní definice 1 q q(axiom), ε 2 (δ(q,a) =q q u q ) = q q au (odvozovacípravidlo). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 19/ 25
Slova a jazyky přijímané konečnými automaty MějmezadánKAA = (Q,Σ,δ,q 0,F). Zavádíme značení q w q proternárnírelaci,podmnožinuq Σ Q: Induktivní definice 1 q q(axiom), ε 2 (δ(q,a) =q q u q ) = q q au (odvozovacípravidlo). Zkratka:proR Q,píšemestručnějiq u Rmísto Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 19/ 25
Slova a jazyky přijímané konečnými automaty MějmezadánKAA = (Q,Σ,δ,q 0,F). Zavádíme značení q w q proternárnírelaci,podmnožinuq Σ Q: Induktivní definice 1 q q(axiom), ε 2 (δ(q,a) =q q u q ) = q q au (odvozovacípravidlo). Zkratka:proR Q,píšemestručnějiq u Rmísto r R :q u r. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 19/ 25
Slova a jazyky přijímané konečnými automaty MějmezadánKAA = (Q,Σ,δ,q 0,F). Zavádíme značení q w q proternárnírelaci,podmnožinuq Σ Q: Induktivní definice 1 q q(axiom), ε 2 (δ(q,a) =q q u q ) = q q au (odvozovacípravidlo). Zkratka:proR Q,píšemestručnějiq u Rmísto r R :q u r. Slovow Σ jepřijímánoautomatema df q 0 w F. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 19/ 25
Slova a jazyky přijímané konečnými automaty MějmezadánKAA = (Q,Σ,δ,q 0,F). Zavádíme značení q w q proternárnírelaci,podmnožinuq Σ Q: Induktivní definice 1 q q(axiom), ε 2 (δ(q,a) =q q u q ) = q q au (odvozovacípravidlo). Zkratka:proR Q,píšemestručnějiq u Rmísto r R :q u r. Slovow Σ w jepřijímánoautomatema df q 0 F. Jazykem rozpoznávaným(přijímaným) automatem A je jazyk L(A) = {w Σ w slovowjepřijímánoa} = {w q 0 F}. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 19/ 25
Slova a jazyky přijímané konečnými automaty MějmezadánKAA = (Q,Σ,δ,q 0,F). Zavádíme značení q w q proternárnírelaci,podmnožinuq Σ Q: Induktivní definice 1 q q(axiom), ε 2 (δ(q,a) =q q u q ) = q q au (odvozovacípravidlo). Zkratka:proR Q,píšemestručnějiq u Rmísto r R :q u r. Slovow Σ w jepřijímánoautomatema df q 0 F. Jazykem rozpoznávaným(přijímaným) automatem A je jazyk L(A) = {w Σ w slovowjepřijímánoa} = {w q 0 F}. JazykLjeregulární df existujekaatž.l(a) =L. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 19/ 25
Příklad jazyka v abecedě {0, 1} L = {w {0,1} bn(w)jedělitelnétřemia w neobsahuje podřetězec 101} kdebn(w)znamenáčíslo,proněžjewjehobinárnímzápisem(např. bn(0101) =5);klademebn(ε) =0. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 20/ 25
Příklad jazyka v abecedě {0, 1} L = {w {0,1} bn(w)jedělitelnétřemia w neobsahuje podřetězec 101} kdebn(w)znamenáčíslo,proněžjewjehobinárnímzápisem(např. bn(0101) =5);klademebn(ε) =0. Jedná se o regulární jazyk? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 20/ 25
Příklad jazyka v abecedě {0, 1} L = {w {0,1} bn(w)jedělitelnétřemia w neobsahuje podřetězec 101} kdebn(w)znamenáčíslo,proněžjewjehobinárnímzápisem(např. bn(0101) =5);klademebn(ε) =0. Jedná se o regulární jazyk? Všimněme si, že L =L 1 L 2 kde L 1 = {w {0,1} bn(w)jedělitelnétřemi} L 2 = {w {0,1} wobsahujepodřetězec101} Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 20/ 25
Příklad jazyka v abecedě {0, 1} L = {w {0,1} bn(w)jedělitelnétřemia w neobsahuje podřetězec 101} kdebn(w)znamenáčíslo,proněžjewjehobinárnímzápisem(např. bn(0101) =5);klademebn(ε) =0. Jedná se o regulární jazyk? Všimněme si, že L =L 1 L 2 kde L 1 = {w {0,1} bn(w)jedělitelnétřemi} L 2 = {w {0,1} wobsahujepodřetězec101} Nabízí se modulární přístup. Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 20/ 25
KA A projazykl(a 1 ) L(A 2 )(nebol(a 1 ) L(A 2 )) 0 1 1 0 1... ŘJA 1 ŘJA 2 ŘJA Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 21/ 25
AutomatA,pronějžplatíL(A) =L L = {w {0,1} bn(w)jedělitelnétřemia w neobsahuje podřetězec 101} A 1 0 1 q 1 q 1 q 2 q 2 q 3 q 1 q 3 q 2 q 3 A 2 0 1 r 1 r 1 r 2 r 2 r 3 r 2 r 3 r 1 r 4 r 4 r 4 r 4 A 0 1 (q 1,r 1 ) (q 1,r 1 ) (q 2,r 2 ) (q 1,r 2 ) (q 1,r 3 ) (q 2,r 2 ) (q 1,r 3 ) (q 1,r 1 ) (q 2,r 4 ) (q 1,r 4 ) (q 1,r 4 ) (q 2,r 4 ) (q 2,r 1 ) (q 3,r 1 ) (q 1,r 2 ) (q 2,r 2 ) (q 3,r 3 ) (q 1,r 2 ) (q 2,r 3 ) (q 3,r 1 ) (q 1,r 4 ) (q 2,r 4 ) (q 3,r 4 ) (q 1,r 4 ) (q 3,r 1 ) (q 2,r 1 ) (q 3,r 2 ) (q 3,r 2 ) (q 2,r 3 ) (q 3,r 2 ) (q 3,r 3 ) (q 2,r 1 ) (q 3,r 4 ) (q 3,r 4 ) (q 2,r 4 ) (q 3,r 4 ) Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 22/ 25
Izomorfní úprava automatu A 0 1 (q 1,r 1 ) (q 1,r 1 ) (q 2,r 2 ) (q 1,r 2 ) (q 1,r 3 ) (q 2,r 2 ) (q 1,r 3 ) (q 1,r 1 ) (q 2,r 4 ) (q 1,r 4 ) (q 1,r 4 ) (q 2,r 4 ) (q 2,r 1 ) (q 3,r 1 ) (q 1,r 2 ) (q 2,r 2 ) (q 3,r 3 ) (q 1,r 2 ) (q 2,r 3 ) (q 3,r 1 ) (q 1,r 4 ) (q 2,r 4 ) (q 3,r 4 ) (q 1,r 4 ) (q 3,r 1 ) (q 2,r 1 ) (q 3,r 2 ) (q 3,r 2 ) (q 2,r 3 ) (q 3,r 2 ) (q 3,r 3 ) (q 2,r 1 ) (q 3,r 4 ) (q 3,r 4 ) (q 2,r 4 ) (q 3,r 4 ) A 0 1 s 1 s 1 s 2 s 2 s 3 s 4 s 3 s 5 s 6 s 4 s 7 s 2 s 5 s 8 s 4 s 6 s 9 s 6 s 7 s 1 s 9 s 8 s 5 s 10 s 9 s 6 s 11 s 10 s 12 s 10 s 11 s 11 s 9 s 12 s 8 s 11 s 1 = (q 1,r 1 ) s 2 = (q 2,r 2 ) s 3 = (q 3,r 3 ) s 4 = (q 1,r 2 ) s 5 = (q 2,r 1 ) s 6 = (q 3,r 4 ) s 7 = (q 1,r 3 ) s 8 = (q 3,r 1 ) s 9 = (q 2,r 4 ) s 10 = (q 3,r 2 ) s 11 = (q 1,r 4 ) s 12 = (q 2,r 3 ) Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 23/ 25
Charakterizace regulárních jazyků LevýkvocientjazykaLpodleslovau: u\l = {v uv L}. Věta.JazykL Σ jeregulárníprávětehdy,kdyžjemnožinakvocientů {w\l w Σ }konečná. (...čilijazykjeregulárníprávětehdy,kdyžsipřičteníslova[zlevadoprava] stačí[pro finální rozhodnutí o přijetí/nepřijetí] z dosud přečteného prefixu pamatovat omezenou informaci, omezenou nezávisle na délce slova...) Důkaz... Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 24/ 25
Schválně, poznáte, které jazyky jsou regulární? prow Σ, w označujedélkuslovaw, w a označujepočetvýskytůsymboluavew( délkawva-čkách ), Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 25/ 25
Schválně, poznáte, které jazyky jsou regulární? prow Σ, w označujedélkuslovaw, w a označujepočetvýskytůsymboluavew( délkawva-čkách ), 1 {w {a,b} ; w a mod2=0} Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 25/ 25
Schválně, poznáte, které jazyky jsou regulární? prow Σ, w označujedélkuslovaw, w a označujepočetvýskytůsymboluavew( délkawva-čkách ), 1 {w {a,b} ; w a mod2=0} 2 {w {a,b} wzačínánebokončídvojicístejnýchpísmen } Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 25/ 25
Schválně, poznáte, které jazyky jsou regulární? prow Σ, w označujedélkuslovaw, w a označujepočetvýskytůsymboluavew( délkawva-čkách ), 1 {w {a,b} ; w a mod2=0} 2 {w {a,b} wzačínánebokončídvojicístejnýchpísmen } 3 {w {a,b} ; w a < w b } Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 25/ 25
Schválně, poznáte, které jazyky jsou regulární? prow Σ, w označujedélkuslovaw, w a označujepočetvýskytůsymboluavew( délkawva-čkách ), 1 {w {a,b} ; w a mod2=0} 2 {w {a,b} wzačínánebokončídvojicístejnýchpísmen } 3 {w {a,b} ; w a < w b } 4 {w {a,b,c} jestližewneobsahujepodřetězecabc, pak končí řetězcem bca} Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 25/ 25
Schválně, poznáte, které jazyky jsou regulární? prow Σ, w označujedélkuslovaw, w a označujepočetvýskytůsymboluavew( délkawva-čkách ), 1 {w {a,b} ; w a mod2=0} 2 {w {a,b} wzačínánebokončídvojicístejnýchpísmen } 3 {w {a,b} ; w a < w b } 4 {w {a,b,c} jestližewneobsahujepodřetězecabc, pak končí řetězcem bca} 5 {w {a,b} ; w a > w b nebowkončíbaa} Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 25/ 25
Schválně, poznáte, které jazyky jsou regulární? prow Σ, w označujedélkuslovaw, w a označujepočetvýskytůsymboluavew( délkawva-čkách ), 1 {w {a,b} ; w a mod2=0} 2 {w {a,b} wzačínánebokončídvojicístejnýchpísmen } 3 {w {a,b} ; w a < w b } 4 {w {a,b,c} jestližewneobsahujepodřetězecabc, pak končí řetězcem bca} 5 {w {a,b} ; w a > w b nebowkončíbaa} 6 {w {a,b} ; w a > w b nebo w b 2} Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) 460-4065 25/ 25