: Teoretická informatika(ti)

Podobné dokumenty
Teoretická informatika průběh výuky v semestru 1

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

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

/1: Teoretická informatika(ti) přednáška 4

/01: Teoretická informatika(ti) přednáška 5

AUTOMATY A GRAMATIKY

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50

Vyhledá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 21.

Lexiká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ář

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Poslední nenulová číslice faktoriálu

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Množ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 Σ

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Programovací jazyk Pascal

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

V 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

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

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

IV113 Validace a verifikace. Převod LTL formule na Büchi automat. Jiří Barnat

Násobení pomocí sčítání

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

Abstraktní datové typy

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

Digitální učební materiál

Př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})

PROGRAMOVÁNÍ V C++ CVIČENÍ

Objektově orientované programování

1. Úvodní informace. BI-EP1 Efektivní programování Martin Kačer

Standardní algoritmy vyhledávací.

NPRG030 Programování I, 2010/11

Zásobníkový automat. SlovoaaaabbbbpatřídojazykaL={a i b i i 1} a a a a b b b b

Vlastnosti regulárních jazyků

Informatika Algoritmy

Vstupní a vstupní proudy v C++

Algoritmizace a programování

Dynamické programování

NPRG030 Programování I, 2016/17 1 / :58:13

Vyhledávání řetězců. a b a c a a b. a b a c a b. a b a c a b

Operační systémy. Cvičení 4: Programování v C pod Unixem

Teoretická informatika - Úkol č.1

NMIN102 Programování /2 Z, Zk

Třída PTIME a třída NPTIME. NP-úplnost.

Algoritmizace a programování

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Algoritmizace a programování

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20

Poslední aktualizace: 14. října 2011

Hledání v textu algoritmem Boyer Moore

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Lineární datové struktury

Kombinatorika, výpočty

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

O datových typech a jejich kontrole

Syntaxí řízený překlad

Základy algoritmizace. Pattern matching

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy

Metodický 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

Třída PTIME a třída NPTIME. NP-úplnost.

Programovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM

Přijímací zkouška na navazující magisterské studium 2015

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

Regulární výrazy. Filtry grep, sed a awk.

Algoritmy výpočetní geometrie

NPRG030 Programování I, 2017/18 1 / :22:16

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

Základy programování (IZP)

Základní datové struktury III: Stromy, haldy

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32

Pozn.MinulejsmesekPSPACEnedostali,protojezdepřekryvstextemzminula.

Vztah jazyků Chomskeho hierarchie a jazyků TS

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

Elegantní algoritmus pro konstrukci sufixových polí

Pokroč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

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Implementace LL(1) překladů

Minimalizace KA - Úvod

Algoritmizace prostorových úloh

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Úvod do informatiky. Miroslav Kolařík

10 Práce s řetězci - pokračování

A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

Programování v C++ 1, 1. cvičení

Transkript:

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