: Teoretická informatika(ti)
|
|
- Roman Vacek
- před 5 lety
- Počet zobrazení:
Transkript
1 : Teoretická informatika(ti) prof. RNDr Petr Jančar, CSc. katedra informatiky FEI VŠB-TUO Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
2 Základní informace o kursu 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) / 25
3 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í em. 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 =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) / 25
4 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 em nebo se domluvte po cvičení či přednášce). Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
5 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) / 25
6 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) / 25
7 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) / 25
8 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) / 25
9 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) / 25
10 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) / 25
11 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) / 25
12 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) / 25
13 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) / 25
14 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) / 25
15 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) / 25
16 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) / 25
17 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) / 25
18 Příklad(výpočetního) problému Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
19 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) / 25
20 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) / 25
21 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) / 25
22 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) / 25
23 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) / 25
24 Je podstatou předchozího algoritmu konečný automat? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
25 Je podstatou předchozího algoritmu konečný automat? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
26 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) / 25
27 Složitost(uvedeného) algoritmu Algoritmus Amá(časovou)složitostT A...cotoje? Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
28 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) / 25
29 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) / 25
30 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) / 25
31 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) / 25
32 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) / 25
33 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) / 25
34 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) / 25
35 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) / 25
36 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) / 25
37 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) / 25
38 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) / 25
39 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) / 25
40 Sestrojený automat Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
41 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) / 25
42 (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) / 25
43 (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) / 25
44 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) / 25
45 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) / 25
46 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) / 25
47 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) / 25
48 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) / 25
49 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) / 25
50 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) / 25
51 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) / 25
52 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) / 25
53 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) / 25
54 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) / 25
55 KA A projazykl(a 1 ) L(A 2 )(nebol(a 1 ) L(A 2 )) ŘJA 1 ŘJA 2 ŘJA Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) / 25
56 AutomatA,pronějžplatíL(A) =L L = {w {0,1} bn(w)jedělitelnétřemia w neobsahuje podřetězec 101} A q 1 q 1 q 2 q 2 q 3 q 1 q 3 q 2 q 3 A 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) / 25
57 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) / 25
58 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) / 25
59 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) / 25
60 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) / 25
61 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) / 25
62 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) / 25
63 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) / 25
64 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) / 25
65 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) / 25
Teoretická informatika průběh výuky v semestru 1
Teoretická informatika průběh výuky v semestru 1 Týden 1 Po přednášce 14.9. bude text asi mírně modifikován, ale příklady na cvičení se nezmění. (Navíc dodám na web slidy.) Přednáška Na začátku jsme si
VíceVyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava
Vyhledávání v textu doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 9. března 209 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 402
Více2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby
Více/1: Teoretická informatika(ti) přednáška 4
456-330/1: Teoretická informatika(ti) přednáška 4 prof. RNDr Petr Jančar, CSc. katedra informatiky FI VŠB-TUO www.cs.vsb.cz/jancar LS 2009/2010 Petr Jančar (FI VŠB-TU) Teoretická informatika(ti) LS 2009/2010
Více/01: Teoretická informatika(ti) přednáška 5
460-4005/01: Teoretická informatika(ti) přednáška 5 prof. RNDr Petr Jančar, CSc. katedra informatiky FEI VŠB-TUO www.cs.vsb.cz/jancar LS 2010/2011 Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) LS
VíceAUTOMATY A GRAMATIKY
AUTOMATY A 1 GRAMATIKY Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta Katedra teoretické informatiky a matematické logiky Stručný přehled přednášky Automaty Formální jazyky, operace
VíceAutomaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů
BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 2/29 Hodnocení předmětu BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 4/29 Automaty a gramatiky(bi-aag) 1. Základní pojmy Jan Holub Katedra teoretické
VíceVýpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory
Plán přednášky Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Obecný algoritmus pro parsování bezkontextových jazyků dynamické programování 1 Zásobníkový
VíceFormální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50
Formální jazyky Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března 2013 1/ 50 Abeceda a slovo Definice Abeceda je libovolná neprázdná konečná množina symbolů(znaků). Poznámka: Abeceda se často
VíceVyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky
VíceVyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
VíceLexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2
Lexikální analýza Miroslav Beneš Dušan Kolář Rozhraní lexikálního analyzátoru Lexikální analýza 2 M. Beneš, D. Kolář: Lexikální analýza 1 Úkoly Čtení zdrojového textu Sestavování symbolů Odstranění mezer
VíceLexikální analýza. Miroslav Beneš Dušan Kolář
Lexikální analýza Miroslav Beneš Dušan Kolář Rozhraní lexikálního analyzátoru Lexikální analýza 2 Úkoly Čtení zdrojového textu Sestavování symbolů Odstranění mezer a poznámek Normalizace symbolů (velká/malá
Více- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku
Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová
VícePoslední nenulová číslice faktoriálu
Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip
VíceÚvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
VíceSeminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr
Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)
VíceMnožinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ
Abecedou se rozumí libovolná konečná množina Σ. Prvky abecedy nazýváme znaky (symboly) Slovo (řetězec) v nad abecedou Σ je libovolná konečná posloupnost znaků této abecedy. Prázdné posloupnosti znaků odpovídá
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti LEXIKÁLNÍ ANALÝZA Kód ve vstupním jazyku Lexikální analyzátor
VíceProgramovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
VíceZ. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43
Zásobníkové automaty Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu 2018 1/ 43 Zásobníkový automat Chtěli bychom rozpoznávat jazyk L = {a i b i i 1} Snažíme se navrhnout zařízení (podobné konečným
VícePascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
VíceRegulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:
IB102 Automaty, gramatiky a složitost, 6. 10. 2014 1/29 Regulární výrazy Definice 2.58. Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: 1 ε, a a pro každé a
VíceV každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2
Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných
VíceKonstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,
[161014-1204 ] 11 2.1.35 Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i, kde i = 0, 1,..., takto: p 0 q právě tehdy, když bud p, q F nebo p, q F. Dokud i+1 i konstruujeme p
VíceTýden 11. Přednáška. Teoretická informatika průběh výuky v semestru 1. Nejprve jsme dokončili témata zapsaná u minulé přednášky.
Teoretická informatika průběh výuky v semestru 1 Týden 11 Přednáška Nejprve jsme dokončili témata zapsaná u minulé přednášky. PSPACE, NPSPACE, PSPACE-úplnost Uvědomilijsmesi,ženapř.prozjištěnítoho,zdaBílýmánějakoustrategiivehřeŠACHY,
VíceIV113 Validace a verifikace. Převod LTL formule na Büchi automat. Jiří Barnat
IV113 Validace a verifikace Převod LTL formule na Büchi automat Jiří Barnat Připomenutí IV113 úvod do validace a verifikace: LTL BA str. 2/26 Problém Kripkeho struktura M LTL formule ϕ M = ϕ? Řešení pomocí
VíceNásobení pomocí sčítání
Neznalost zákonů neomlouvá Násobení pomocí sčítání Zadání problému: Vymyslete algoritmus, jak násobit dvě čísla, když operaci násobení neznáme. Upřesnění zadání: Známe čísla, známe operaci sčítání, odčítání.
Vícefor (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
VíceZačínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské
VícePumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému
BI-AAG (2011/2012) J. Holub: 10. Vlastnosti regulárních jazyků p. 2/22 Pumping lemma - podstata problému BI-AAG (2011/2012) J. Holub: 10. Vlastnosti regulárních jazyků p. 4/22 Automaty a gramatiky(bi-aag)
VíceAbstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programová realizace DKA typedef enum {q0, q1,... qn,
VíceDigitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_142_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
VícePřekladač sestrojující k regulárnímu výrazu ekvivalentní konečný automat Připomeňme si jednoznačnou gramatiku G pro jazyk RV({a, b})
Teoretická informatika průběh výuky v semestru 1 Týden 4 Přednáška Ukázali jsme jednoduchý převod konečného automatu na bezkontextovou gramatiku, čímž jsme prokázali, že každý regulární jazyk je bezkontextovým
VícePROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
VíceObjektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
Více1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer
1. Úvodní informace BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické
VíceStandardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
VíceNPRG030 Programování I, 2010/11
Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE když X, Y jsou (číselné) výrazy, potom X = Y X Y X < Y X > Y X = Y jsou
VíceZásobníkový automat. SlovoaaaabbbbpatřídojazykaL={a i b i i 1} a a a a b b b b
ChtělibychomrozpoznávatjazykL={a i b i i 1} Snažíme se navrhnout zařízení(podobné konečným automatům), které přečte slovo, a sdělí nám, zda toto slovo patřídojazykalčine. Při čtení a-ček si musíme pamatovat
VíceVlastnosti regulárních jazyků
Vlastnosti regulárních jazyků Podobně jako u dalších tříd jazyků budeme nyní zkoumat následující vlastnosti regulárních jazyků: vlastnosti strukturální, vlastnosti uzávěrové a rozhodnutelné problémy pro
VíceInformatika Algoritmy
Informatika Algoritmy Radim Farana Podklady předmětu Informatika pro akademický rok 2010/2011 Obsah Algoritmus. Vlastnosti algoritmu. Popis algoritmu. Hodnocení algoritmů. Příklady algoritmů. Algoritmus
VíceVstupní a vstupní proudy v C++
Programovací jazyk C++ MZLU - PEF - Ústav informatiky 11. října 2007 Vstup na terminál a čtení z něj Používá se knihovna iostream. Pro výstup lze použít standardní výstup cout. nebo chybový výstup cerr.
VíceAlgoritmizace a programování
Algoritmizace a programování Strukturované proměnné Pole (array), ukazatele (pointer) Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Pole (array) (1) Pole je množina
VíceDynamické programování
Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
VíceNPRG030 Programování I, 2016/17 1 / :58:13
NPRG030 Programování I, 2016/17 1 / 31 10. 10. 2016 10:58:13 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE NPRG030 Programování
VíceVyhledávání řetězců. a b a c a a b. a b a c a b. a b a c a b
Vyhledávání řetězců (Pattern Matching) T: P: a b a c a a b a b a c a b 4 1 3 2 a b a c a b Přehled 1. Co je vyhledávání řetězců 2. Algoritmus hrubé síly (Brute force) 3. Algoritmus Boyer Moore 4. Knuth
VíceOperační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
VíceTeoretická informatika - Úkol č.1
Teoretická informatika - Úkol č.1 Lukáš Sztefek, xsztef01 18. října 2012 Příklad 1 (a) Gramatika G 1 je čtveřice G 1 = (N, Σ, P, S) kde, N je konečná množina nonterminálních symbolů N = {A, B, C} Σ je
VíceNMIN102 Programování /2 Z, Zk
NMIN102 Programování 2 --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer Pavel
VíceTřída PTIME a třída NPTIME. NP-úplnost.
VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní
VíceAlgoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
VíceRekurze. Pavel Töpfer, 2017 Programování 1-8 1
Rekurze V programování ve dvou hladinách: - rekurzivní algoritmus (řešení úlohy je definováno pomocí řešení podúloh stejného charakteru) - rekurzivní volání procedury nebo funkce (volá sama sebe přímo
VíceAlgoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
VíceRegulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20
Regulární výrazy M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března 2007 1/ 20 Regulární výrazy Jako například v aritmetice můžeme pomocí operátorů + a vytvářet výrazy jako (5+3)
VícePoslední aktualizace: 14. října 2011
Lexikální analýza Překladače, přednáška č. 2 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 14. října 2011 Symboly Co je to
VíceHledání v textu algoritmem Boyer Moore
Zápočtová práce z Algoritmů a Datových Struktur II (NTIN061) Hledání v textu algoritmem Boyer Moore David Pěgřímek http://davpe.net Algoritmus Boyer Moore[1] slouží k vyhledání vzoru V v zadaném textu
VíceVýrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
VíceProgramovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;
Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct
VíceLineární datové struktury
Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 5. března 2019 Jiří Dvorský (VŠB TUO) Lineární datové
VíceKombinatorika, výpočty
Kombinatorika, výpočty Radek Pelánek IV122 Styl jednoduché výpočty s čísly vesměs spíše opakování + pár dílčích zajímavostí užitečný trénink programování Kombinace, permutace, variace Daná množina M s
VícePráce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)
Třída Character Práce s textem doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz reprezentuje objekty zapouzdřující hodnotu
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
VíceZákladní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
VíceO datových typech a jejich kontrole
.. O datových typech a jejich kontrole Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Typová kontrola Programovací techniky O datových typech
VíceSyntaxí řízený překlad
Syntaxí řízený překlad Překladový automat Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 27. listopadu 2008 Zobecněný překladový automat Překladový automat
VíceZáklady algoritmizace. Pattern matching
Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají
VíceDefinice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy
Uživatelem definované typy Ing. Lumír Návrat katedra informatiky, A 1018 59 732 3252 Definice uživatelského typu data Color = Red Green Blue Color typový konstruktor Red / Green / Blue datové konstruktory
VíceMetodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole
Pattern matching Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CI jako výuková strategie na vysoké škole Pattern matching porovnávání vzorů Hledání
VíceTřída PTIME a třída NPTIME. NP-úplnost.
VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní
VíceProgramovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM
Programovanie I 9.10.2007 Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM Algoritmus (1) Existuje niekoľko definícií pojmu algoritmus Algoritmus je presná postupnosť krokov a
VícePřijímací zkouška na navazující magisterské studium 2015
Přijímací zkouška na navazující magisterské studium 2015 Studijní program: Studijní obory: Matematika MMUI Varianta A Řešení příkladů pečlivě odůvodněte. Příklad 1 (25 bodů Navrhněte deterministický konečný
VíceKapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)
- 7.1 - Kapitola 7: Návrh relačních databází Nástrahy návrhu relačních databází Dekompozice (rozklad) Normalizace použitím funkčních závislostí Nástrahy relačního návrhu Návrh relačních databází vyžaduje
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Základní informace Přednášky: doc. Ing. Jan Janoušek, Ph.D.
VíceRegulární výrazy. Filtry grep, sed a awk.
Přednáška 5 Regulární výrazy. Filtry grep, sed a awk. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2011 Příprava studijního programu Informatika je podporována projektem
VíceAlgoritmy výpočetní geometrie
Algoritmy výpočetní geometrie prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
VíceNPRG030 Programování I, 2017/18 1 / :22:16
NPRG030 Programování I, 2017/18 1 / 26 20. 10. 2017 11:22:16 Ordinální typy standardní: integer, char, boolean Vlastnosti ordinálních typů: 1. hodnot je konečný počet a hodnoty jsou uspořádány 2. ke každé
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VíceAlgoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44
Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251
VíceOSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA
OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA BAKALÁŘSKÁ PRÁCE 2002 SEDLÁK MARIAN - 1 - OSTRAVSKÁ UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA KATEDRA INFORMATIKY A POČÍTAČŮ Vizualizace principů výpočtu konečného
VíceZáklady programování (IZP)
Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden
VíceZákladní datové struktury III: Stromy, haldy
Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
VíceFormální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32
Formální jazyky Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března 2017 1/ 32 Abeceda a slovo Definice Abeceda je libovolná neprázdná konečná množina symbolů(znaků). Poznámka: Abeceda se často
VícePozn.MinulejsmesekPSPACEnedostali,protojezdepřekryvstextemzminula.
Teoretická informatika průběh výuky v semestru 1 Týden 11 Přednáška Pozn.MinulejsmesekPSPACEnedostali,protojezdepřekryvstextemzminula. PSPACE, NPSPACE, PSPACE-úplnost Uvědomilijsmesi,ženapř.prozjištěnítoho,zdaBílýmánějakoustrategiivehřeŠACHY,
VíceVztah jazyků Chomskeho hierarchie a jazyků TS
Vztah jazyků Chomskeho hierarchie a jazyků TS Jan Konečný; (přednáší Lukáš Havrlant) 15. října 2013 Jan Konečný; (přednáší Lukáš Havrlant) Chomskeho hierarchie a jazyky TS 15. října 2013 1 / 23 Rychlé
Vícedoplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je
28 [181105-1236 ] 2.7 Další uzávěrové vlastnosti třídy regulárních jazyků Z předchozích přednášek víme, že třída regulárních jazyků je uzavřena na sjednocení, průnik, doplněk, zřetězení, Kleeneho operaci
VícePES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/2000. 1 PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/2000 13 stran 1
PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/2000 1 PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/2000 13 stran 1 PESlib Popis knihoven PASCAL a C 03.2000 2. verze dokumentu Zmìny a doplòky proti 1.
VíceElegantní algoritmus pro konstrukci sufixových polí
Elegantní algoritmus pro konstrukci sufixových polí 22.10.2014 Zadání Obsah Zadání... 3 Definice... 3 Analýza problému... 4 Jednotlivé algoritmy... 4 Algoritmus SA1... 4 Algoritmus SA2... 5 Algoritmus
VícePokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010
Pokročilé haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (I-EFA) ZS 2010/11,
VíceČinnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.
Přiřazovací příkaz V := E, V jednoduchá nebo indexovaná proměnná, E výraz, jehož typ je kompatibilní podle přiřazení s typem proměnné V. 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.
VíceImplementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
VíceMinimalizace KA - Úvod
Minimalizace KA - Úvod Tyto dva KA A,A2 jsou jazykově ekvivalentní, tzn. že rozpoznávají tentýž jazyk. L(A) = L(A2) Názorně lze vidět, že automat A2 má menší počet stavů než A, tudíž našim cílem bude ukázat
VíceAlgoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Algoritmus Daniela Szturcová Tento
VíceTURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze
TURINGOVY STROJE Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 12 Evropský sociální fond Praha & EU: Investujeme do vaší
VíceFaculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague
1 / 23 Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 2 / 23 biologové často potřebují najít často se opakující sekvence DNA tyto sekvence bývají relativně krátké,
VíceÚvod do informatiky. Miroslav Kolařík
Úvod do informatiky přednáška desátá Miroslav Kolařík Zpracováno dle R. Bělohlávek, V. Vychodil: Diskrétní matematika 2, http://phoenix.inf.upol.cz/esf/ucebni/dm2.pdf P. Martinek: Základy teoretické informatiky,
Více10 Práce s řetězci - pokračování
10 Práce s řetězci - pokračování Máme deklarováno: char retez[50]; - čtení z klávesnice: scanf("%s", retez); - čtení zadané počtu znaků z klávesnice scanf("%10s", retez); // přečti řetězec z klávesnice,max
VíceA7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk
A7B38UOS Úvod do operačních systémů 6. Cvičení Příkazy sed a awk sed sed [přepínače] 'příkaz' [soubory] sed [přepínače] -f skript [soubory] Stream editor - edituje neinteraktivně jeden nebo více souborů.
VíceProgramování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
Více