Formalisace intuitivního pojmu algoritmus

Rozměr: px
Začít zobrazení ze stránky:

Download "Formalisace intuitivního pojmu algoritmus"

Transkript

1 Formalisace intuitivního pojmu algoritmus Studijní materiál, M.Č. 1. Výpočetní krok 1.1. Začněme s následujícím programem: function y(x: natural number) : natural number; begin y := x + 1; end; Jak dlouho bude tento program počítat? Můžeme říci, že jeho časová složitost je O(1), pokud bychom předpokládali, že máme k disposici počítač, který je schopen v jednom výpočetním kroku, tedy pomocí jediné instrukce, realisovat přičítání jedničky k libovolně velkému číslu. Ve skutecnosti však počítače dokáží v jednom výpočetním kroku pracovat pouze s čísly omezené velikosti, například nanejvýš Kdybychom tvrdili, že přičtení jedničky k danému číslu x trvá čas O(1), znamenalo by to, že přičtení jedničky např. k číslům, jejichž dvojkový zápis je 1000 a bude trvat stejně dlouho }{{} krát Poznámka. Platí (ve dvojkovém zápisu) = 1001 a }{{ 1} +1 = }{{ 0} krát krát Je vidět, že přičtení jedničky k dlouhému číslu může znamenat velkou práci: v našem příkladu je třeba v paměti přepsat hodně bitů. 1

2 1.2. Předpokládejme, že počítač representuje ve své paměti přirozená čísla pomocí jejich dvojkového zápisu. Dvojkový zápis čísla x má délku O(log x) bitů Rozeberme detailněji instrukci y := x + 1. Je-li v paměti uloženo např. číslo x = 1151 jako posloupnost bitů , můžeme přičtení jedničky realisovat tak, že postupně budeme tuto posloupnost procházet odprava doleva a přepisovat jedničky na nuly do té doby, než narazíme na nulu; tuto nulu přepíšeme na jedničku a skončíme, takže naše posloupnost se změní na Jedině v případě, kdyby posloupnost obsahovala samé jedničky, přepíšeme všechny jedničky na nuly a před ně připojíme novou jedničku Z popsaného postupu je vidět, že v obecném případě budeme muset projít všech O(log x) bitů. Budeme-li za jednu instrukci považovat práci s jedním bitem, ukazuje se, že čím je číslo x větší, tím více času může operace pričtení jedničky trvat Označíme-li n velikost vstupu, tedy počet bitů čísla x, budeme muset v nejhorším případě projít všech těchto n bitů (a pokud by všechny bity byly 1, ještě jeden bit přidat). Náš postup tedy v nejhorším případě bude vyžadovat O(n) kroků, přičemž výpočetním krokem rozumíme libovolnou z následujících operací: 1. prečtení bitu, 2. test, je-li prečtený bit roven 0 nebo 1, 3. přepsání bitu z 1 na 0 nebo z 0 na 1, 4. přechod na sousední bit (vpravo nebo vlevo). Předpokládejme následující model výpočtu: číslo x máme zapsané v paměti, která je uspořádána jako pole. V každé buňce tohoto pole je možné uložit jeden bit. Do paměti je možné přistupovat pomocí ukazatele; ten na začátku výpočtu ukazuje na buňku, kde začíná vstupní posloupnost bitů. 2

3 1.6. Předpokládejme, že toto pole je na obě strany potenciálně nekonečné. Předpoklad, že toto pole nemá konečný počet buněk, je nutný kvůli tomu, abychom mohli napsat program, který principiálně dokáže pracovat s libovolně velkými čísly. Kdyby toto pole bylo dlouhé jen řekněme 10, 100 (či třeba ) buněk, dokázal by libovolný algoritmus, který zapíšeme, zpracovat jen konečně mnoho různých vstupů. My však přinejmenším při analýze složitosti algoritmů budeme vyšetřovat především asymptotické vlastnosti programů, tedy jejich chování v případě, že velikost vstupu postupně roste Příklad. Uvažme, že bychom mohli do paměti zapsat pouze omezeně mnoho, např. jen 10 bitů. Kdybychom na tomto počítači měli zapsat algoritmus, který rozhoduje, zdali číslo na vstupu je prvočíslo (zapsané ve dvojkovém zápisu jako posloupnost bitů), byl by takový program velice jednoduchý: function prvočíslo(x: natural number < 2 11 ) : boolean; begin if x=2 or x=3 or x=5 or x=7 or x=11 or or x=2029 or x=2039 then odpověz Ano else odpověz Ne; end; (Kvůli čitelnosti jsme prvočísla zapsali v desítkové soustavě.) Takový program na určování prvočíselnosti nás však patrně příliš neuspokojí. Kdybychom měli omezenou paměť, mohli bychom vždy do ní zapsat jen konečně mnoho vstupů a proto by každý problém mohl být řešen tak, že se probere těchto konečně mnoho možností. Takové programy však nic neříkají o skutečném řešení problému. Aby algoritmus nějaký problém řešil principiálně správně, musí jej řešit bez ohledu na to, jak dlouhé je vstupní zadání. Proto budeme předpokládat, že naše teoretické modely algoritmů mohou pracovat s neomezeně velkými daty Vraťme se k našemu problému přičítání jedničky. Pomocí našich čtyřech instrukcí (které není na tomto místě třeba přesněji formalisovat) lze napsat už téměř program, jehož každá instrukce bude typu 1., 2., 3., nebo 4. Je rozumné říci, že každá tato instrukce bude trvat jednotkový čas, přinejmenším proto, že doba na její provedení není závislá na velikosti (počtu bitů) vstupního čísla x. Abychom mohli řídit chod programu, potřebujeme ješte instrukci určující, 3

4 kde má program dále pokračovat (což může být instrukce typu známého GOTO). Předpokládejme, že před začátkem výpočtu je v paměti zapsáno vstupní číslo x jako posloupnost bitů (v každé paměťové buňce jeden bit) a že ukazatel do paměti ukazuje na první bit. Všechny ostatní paměťové buňky obsahují speciální symbol λ, který znamená nic. Náš program pak může pracovat takto: (1) začátek (2) čti paměťovou buňku, kam ukazuje ukazatel; (3) obsahuje-li tato buňka 1, posuň ukazatel o jednu buňku vpravo a jdi na (2); (4) obsahuje-li tato buňka 0, posuň ukazatel o jednu buňku vpravo a jdi na (2); (5) obsahuje-li tato buňka λ, posuň ukazatel o jednu buňku vlevo a jdi na (6); (6) čti paměťovou buňku, kam ukazuje ukazatel; (7) obsahuje-li tato buňka 1, přepiš ji na 0, posuň ukazatel o jednu buňku vlevo a jdi na (6) (8) obsahuje-li tato buňka 0, přepiš ji na 1, ukazatel neposouvej a jdi na (10) (9) obsahuje-li tato buňka λ, přepiš ji na 1, ukazatel neposouvej a jdi na (10) (10) konec 1.9. Náš program pracuje takto: na začátku je v paměti zapsáno vstupní číslo jako posloupnost bitů a ukazatel do paměti ukazuje na první bit. Ve všech ostatních paměťových buňkách je prázdno (λ):...λλ λλ... Instrukce (3) a (4) zajistí, že se ukazatel přesune až za konec vstupního slova:...λλ λλ... 4

5 Instrukce (5) posune ukazatel o jeden bit vlevo, tedy na poslední bit vstupního čísla. Všimněme si, že program se už nikdy nevrátí k instrukcím (2) až (4). Přejde do druhé části (6) až (9). Instrukce (7) zajistí, že se budou jedničky přepisovat na nuly a ukazatel se bude posouvat vlevo. Po okamžiku provedení instrukce (8) bude náš program v situaci...λλ λλ... a skončí. Instrukce (9) se provede pouze v případě, že vstupní slovo sestává ze samých jedniček v tom případě se všechny tyto jedničky instrukcí (8) přepíší na nuly a instrukce (9) před tyto nuly napíše jedničku. 2. Turingův stroj 2.1. Hned na začátku upozorněme, že Turingův stroj je teoretický model algoritmu, nejedná se o žádné reálné technické zařízení. Jedná se o přesnou matematickou formalisaci jinak vágně používaných pojmů krok výpočtu, výpočetní čas programu, paměťová náročnost programu atd Zůstaňme ještě chvíli u programu 1.8. Ten byl rozepsán velmi detailně: přesně jsme popsali manipulaci s každým bitem vstupního čísla Turingův stroj je hypotetické zařízení, které má neomezenou paměť (tzv. pásku), která je analogií našeho vstupního pole z programu 1.8. Je to oboustranně neomezená posloupnost buněk. Do buněk této pásky se zapisují symboly z dané konečné abecedy Σ; v každé buňce může být zapsán jeden symbol s Σ, nebo může být prázdná. (V příkladu 1.8. jsme pracovali s abecedou Σ = {0, 1}.) Buňky, které nejsou obsazeny, obsahují speciální symbol λ Σ ( nic, symbol pro prázdnou buňku). Říkáme, že Turingův stroj pracuje či počítá nad slovem 1 σ z abecedy Σ. To znamená: před začátkem výpočtu je na pásce zapsáno toto slovo a všechna 1 Připomeňme, že abeceda je konečná množina a slovo je konečná posloupnost symbolů z této abecedy. Je-li například abeceda Σ = {0, 1}, slovo nad touto abecedou je třeba posloupnost σ = Množina všech slov nad danou abecedou se označuje pomocí hvězdičky, tedy v našem případě Σ. 5

6 ostatní pole pásky obsahují λ. Hlava Turingova stroje je analogie ukazatele do paměti z části 1.8. Je to hypotetické zařízení, které se může po pásce posouvat a vždy vidí jedinou buňku. V každém kroku výpočtu je možné číst či zapisovat symbol pouze do té buňky, kterou hlava vidí, a v každém kroku výpočtu se hlava může pohnout buď o jednu buňku vpravo, o jednu buňku vlevo anebo zůstat na místě. V příkladu 1.8. program pracoval ve dvou blocích první blok, instrukce (2) až (5), zajišťovaly přesun ze začátku na konec vstupního slova. Druhý blok, instrukce (6) až (9), zajišťovaly vlastní přičtení jedničky. Každý z bloků obsahoval tři instrukce typu: jestliže hlava čte symbol s, pak zapiš symbol na pásku (nebo nezapisuj nic), posuň hlavu vpravo nebo vlevo (nebo ji nech na místě), zůstaň ve stejném bloku anebo přejdi do jiného bloku. Například při instrukcích (3) a (4) program zůstal v prvním bloku, zatímco při instrukci (5) přešel do druhého bloku. Analogií bloků programu jsou v případě Turingových strojů tzv. stavy. Stavy představují vnitřní informaci Turingova stroje o tom, který blok programu se právě provádí. Stavy se označují symboly z nějaké konečné množiny, které se říká stavový prostor a obvykle se označuje symbolem Q. Již jsme řekli, že na začátku výpočtu je na pásce zapsáno vstupní slovo a hlava je na buňce, kde je zapsán první symbol vstupního slova. Stav, ve kterém se výpočet nachází na začátku, nazveme iniciálním stavem a označíme jej q start. Jeden ze stavů bude odpovídat situaci, kdy výpočet úspěšně skončil. To bude stav, ze kterého již výpočet nepokračuje. Nazveme jej přijímajícím stavem a označíme q fin. Instrukce turingových strojů jsou zadány pomocí tzv. přechodové funkce δ. Přechodová funkce je tabulka, která obsahuje instrukce typu Jestliže hlava je na buňce, kde se nachází symbol s Σ {λ} a stroj je ve stavu q Q \ {q fin }, pak proveď výpočetní krok: přejdi do stavu q Q, zapiš do buňky, kde je hlava, symbol s Σ {λ} a proveď 6

7 posun hlavy o jednu buňku vlevo (označíme ), o jednu buňku vpravo ( ) anebo hlavu neposouvej ( ). Budeme je zapisovat ve tvaru: kde x je jeden ze symbolů,,. δ(q, s) = (q, s, x), 2.4. Shrňme předchozí část. Turingův stroj je zadán pomocí následujících údajů: konečná množina Q (stavový prostor), q start Q (iniciální stav), q fin Q (přijímající stav), konečná množina Σ (abeceda), symbol λ Σ (prázdné pole), přechodová funkce δ, která dvojici (q, s), kde q Q \ {q fin } je ne-přijímající 2 stav, s Σ {λ} je symbol, který je v buňce pásky, kde je hlava, přiřazuje trojici (q, s, x), kde q Q je stav, do kterého stroj přejde, s Σ {λ} je symbol, který se zapíše do buňky pásky, kde se nachází hlava, x {,, } je určení pohybu hlavy na pásce. (Tato funkce nemusí být totální, tj. nemusí být definována pro všechny dvojice (q, s)). 2 Uvidíme, že přijímající stav je speciální stav, který indikuje konec výpočtu. Proto nepřipouštíme, aby výpočet stroje, který vstoupil do přijímajícího stavu, mohl pokračovat; proto funkce δ(q fin, ) je vždy nedefinována. 7

8 2.5. Šestice údajů z části 2.4. nám už úplně popisuje teoretický model algoritmu. Pamětí je páska, přístup do paměti se realisuje pomocí hlavy. V každé paměťové buňce může být jen některý z konečně mnoha symbolů z abecedy Σ, anebo může být buňka prázdná (λ). Během výpočtu se stroj může nacházet v některém z konečně mnoha stavů. Instrukce jsou zadány prostřednictvím přechodové funkce δ Výpočet Turingova stroje probíhá takto: na začátku výpočtu je na vstupní pásce zapsáno vstupní slovo σ = s 1 s 2 s 3... s n. Hlava je na buňce, kde je první symbol vstupního slova s 1. Stroj se nachází ve stavu q start. V tabulce přechodové funkce vyhledá instrukci (pokud existuje) δ(s 1, q start ) = (s, q, x). Na základě této instrukce přejde do stavu q ; do buňky, kde se nachází hlava, zapíše symbol s a je-li x =, posune hlavu o jednu buňku vlevo, je-li x =, posune hlavu o jednu buňku vpravo, a je-li x =, hlava se nepohne. Další kroky vypadají obdobně. Stroj je ve stavu q a čte symbol λ (pokud bylo x = ), symbol s 1 (pokud bylo x = ) anebo symbol s 2 (pokud bylo x = ). Podle toho vyhledá v tabulce instrukcí δ další instrukci a tak pokračuje ve výpočtu Konec výpočtu nastává tehdy, kdy hlava čte symbol s, stroj je ve stavu q a δ(s, q) není definováno (tj. v tabulce není příslušná instrukce). Pokud q = q fin, řekneme, že výpočet skončil v přijímajícím stavu Příklad. Vraťme se k příkladu přičítání jedničky. Sestavme Turingův stroj T, který dostane na vstup číslo zapsané v binárním zápisu a přičte k němu jedničku. Definujme stroj takto: Q = {Blok 1, Blok 2, Konec} (stavový prostor), q start = Blok 1 (iniciální stav), q fin = Konec (přijímající stav), Σ = {0, 1} (abeceda), λ (prázdné pole všimněme si, že symbol λ Σ), 8

9 přechodová funkce δ (tabulka instrukcí): (i) δ(blok 1, 1) = (Blok 1, 1, ) (ii) δ(blok 1, 0) = (Blok 1, 0, ) (iii) δ(blok 1, λ) = (Blok 2, λ, ) (iv) δ(blok 2, 1) = (Blok 2, 0, ) (v) δ(blok 2, 0) = (Konec, 1, ) (vi) δ(blok 2, λ) = (Konec, 1, ) Proberme výpočet stroje T, bude-li na začátku mít zapsáno na pásce slovo σ = Výpočet stroje T nad slovem σ označíme T (σ). (Všimněme si, že σ je slovo nad abecedou Σ = {0, 1}. Slova z jiných abeced stroji T na vstup dávat nemůžeme.) Na začátku výpočtu je hlava na buňce s první jedničkou a stroj je ve stavu q start = Blok 1. Použije se proto instrukce (i): stroj zůstane ve stavu Blok 1, do buňky zapíše jedničku (protože tam byla jednička už předtím, nic se nestane) a posune hlavu o jednu buňku vpravo. Tuto skutečnost zachytíme zápisem q start = Blok Blok 1. Zápis 1 1 znamená, že v buňce byl symbol 1, stroj do buňky zapsal symbol 1 a posunul hlavu vpravo. Je to vlastně zkrácený zápis instrukce (i). Nyní hlava čte druhou buňku, kde je symbol 0; použije se proto instrukce (ii). Stroj zůstane ve stavu Blok 1, zapíše do buňky nulu (protože tam byla již předtím, nic se nestane) a posune hlavu o jednu buňku vpravo. Tento krok výpočtu zachytíme prodloužením předchozího zápisu: q start = Blok Blok Blok 1. Stroj je stále ve stavu Blok 1 a hlava opět čte buňku s nulou. Proto se opět použije instrukce (ii): q start = Blok Blok Blok Blok 1. Takto se hlava pomocí instrukcí (i) a (ii) přesune až na konec slova σ: q start = Blok 1 Blok 1 Blok 1 Blok 1 Blok 1 Blok 1 Blok Blok Blok Blok Blok Blok 1. 9

10 Nyní je hlava na první prázdné buňce za slovem σ. Proto se použije instrukce (iii) a stroj přejde do stavu Blok 2 (pro přehlednost neuvádíme celý výpočet od začátku): λ λ Blok 2. Pak sedmkrát použije instrukci (iv), která přepíše sedm jedniček na nuly, přičemž zůstane ve stavu Blok 2 : Blok 2 Blok 2 Blok 2 Blok 2 Blok 2 Blok Blok Blok 2. V této situaci máme na pásce slovo (tlustě vysázený symbol označuje buňku, na které je hlava). Nyní se použije instrukce (v): 0 1 Konec. Stroj přešel do přijímajícího stavu (q fin = Konec) a výpočet končí, protože přechodová funkce δ(konec, 1) není definována. Výpočet skončil v přijímajícím stavu a na pásce je dvojkový zápis vstupního čísla zvětšeného o jedničku. Pro úplnost dejme ještě jednou přehled celého výpočtu T ( ): q start = Blok 1 Blok 1 Blok 1 Blok 1 Blok Blok 1 Blok 1 Blok 1 Blok 1 Blok 1 Blok 1 λ λ Blok 1 Blok 2 Blok 2 Blok 2 Blok 2 Blok 2 Blok Blok Blok Konec = q fin Příklad 2.8. jsme probrali velmi detailně. Samozřejmě nebudeme při všech aplikacích popisovat Turingovy stroje vždy tak podrobně; budeme předpokládat, že se čtenář s mechanismem jejich výpočtu již dostatečně seznámil a místo příkladu 2.8. prostě napíšeme stroj, který počítá x Stavový prostor Turingova stroje (a obecně všech automatů) lze popsat jako orientovaný graf, jehož vrcholy jsou stavy a hrany representují přechodovu funkci. Někdy se přidává speciální vrchol, který representuje fiktivní stav Start, aby bylo zřejmé, kde výpočet začíná. 10

11 Hrany odpovídají instrukcím přechodové funkce. Hrana A s s x B odpovídá instrukci δ(a, s) = (B, s, x). Je-li přidán speciální vrchol Start, vede z něj nepopsaná hrana do stavu q start. Turingův stroj z příkladu 2.8. bychom mohli zachytit na následujícím obrázku. 3. Výpočet Turingova stroje, akceptory, transducery 3.1. Každý okamžik výpočtu Turingova stroje můžeme popsat pomocí tzv. konfigurace. Konfigurací Turingova stroje rozumíme trojici K = (τ, q, i), kde τ je slovo zapsané na pásce 3, q je stav Turingova stroje a i je celé číslo, které udává posici hlavy Turingova stroje relativně vůči začátku vstupního slova (definujme např. i = 0, je-li hlava na poli s prvním symbolem slova τ, i = 1, je-li hlava na poli s druhým symbolem slova τ atd.) Jsou-li všechna pole pásky prázdná, definujme i = Nechť σ je vstupní slovo Turingova stroje. Iniciální konfigurací rozumíme konfiguraci (σ, q start, 0). 3 Přesněji: je to slovo zapsané na pásce bez nekonečného úseku prázdných symbolů před slovem a za slovem. Je-li tedy na pásce... λλτλλ..., kde první ani poslední symbol slova τ není λ, uvádí se v konfiguraci Turingova stroje pouze slovo τ, symboly λ nalevo a napravo od slova τ se neuvádějí. Slovo τ je slovo nad abecedou Σ {λ}; může mít např. tvar 101λλ01λ0. 11

12 Iniciální konfigurace popisuje, v jaké situaci se nachází Turingův stroj na samém začátku výpočtu nad slovem σ Jeden krok výpočtu znamená provedení jedné instrukce, tedy jedno použití přechodové funkce δ. Řekneme, že stroj přešel z konfigurace K do konfigurace K, jestliže před provedením instrukce byl v konfiguraci K a po použití instrukce ve stavu K. Řekneme, že konfigurace K je koncová, jestliže neexistuje žádná instrukce, kterou by Turingův stroj mohl použít a pokračovat ve výpočtu. To znamená: je-li s symbol, který je na poli, které čte hlava, a stroj je ve stavu q, není δ(q, s) definováno Konečným výpočtem Turingova stroje T nad slovem σ rozumíme konečnou posloupnost konfigurací K 0, K 1,... K m takovou, že K 0 = (σ, q start, 0) je iniciální konfigurace, pro každé i, 0 i m 1, platí, že stroj přejde (použitím jedné instrukce) z konfigurace K i do K i+1 a K m je koncová konfigurace. Číslu m se říká délka délka výpočtu nebo také časová složitost výpočtu Turingova stroje T nad slovem σ. Poznámka. Někdy se časová složitost výpočtu stroje T nad slovem σ definuje jako max(m, σ ). (Symbol značí délku (počet symbolů) slova σ.) Je to z toho důvodu, že se předpokládá, že rozumný výpočet nad slovem σ je takový, který přinejmenším vstupní slovo σ přečte. Jen přečtení slova si vyžádá výpočet délky σ. Touto definicí se tak eliminují příliš krátké výpočty. Jestliže neexistuje koncová konfigurace, řekneme, že výpočet stroje je nekonečný. To odpovídá situaci, kdy se stroj zacyklí. Tak například výpočet Turingova stroje T = (Q = {S, K}; Σ = {a, b}; q start = S; q fin = K; λ; δ(a, S) = (a, S, ), δ(λ, S) = (a, S, ), δ(b, S) = (b, K, )) nad slovem aaa bude nekonečný, zatímco výpočet nad slovem bbb bude mít délku 1. Při výpočtu nad slovem bbb bude výpočet stroje vypadat (bbb, S, 0), (bbb, K, 0), 12

13 zatímco při výpočtu nad slovem aaa bude stroj počítat do nekonečna: (aaa, S, 0), (aaaa, S, 0), (aaaaa, S, 0), (aaaaaa, S, 0) atd Příklad. Vraťme se znovu k příkladu 2.8. Výpočet stroje z tohoto příkladu nad slovem je posloupnost konfigurací 3.5. Nechť ( , Blok 1, 0), ( , Blok 1, 1), ( , Blok 1, 2), ( , Blok 1, 3), ( , Blok 1, 10), ( , Blok 1, 11), ( , Blok 2, 10), ( , Blok 2, 9), ( , Blok 2, 8), ( , Blok 2, 7), ( , Blok 2, 6), ( , Blok 2, 5), ( , Blok 2, 4), ( , Blok 2, 3), ( , Konec, 3). K 0 = (τ (0), q (0), i (0) ), K 1 = (τ (1), q (1), i (1) ),..., K m = (τ (m), q (m), i (m) ) je konečný výpočet stroje T nad slovem σ. Prostorovou složitostí výpočtu T nad slovem σ je číslo max 0 j m ( τ (j) ). Je to tedy nejdelší slovo, které se během výpočtu vyskytne. Je to velikost paměti potřebná k tomu, aby výpočet mohl proběhnout. V našich příkladech byla vždy prostorová složitost rovna velikosti vstupního slova. V případě řady problémů je však třeba udělat velké mezivýpočty, které vyžadují velkou paměť. 13

14 3.6. V některých případech pracujeme pouze s rozhodovacími problémy. Jsou to problémy typu rozhodnout, zdali jistý objekt má jistou vlastnost, např. je-li formule tautologií, je-li graf 3-obarvitelný apod. V takových případech budeme potřebovat Turingův stroj, jehož odpovědí je pouze ano nebo ne. Takový stroj nazveme akceptorem. Řekneme, že Turingův stroj (akceptor) T přijímá slovo σ, jestliže výpočet nad slovem σ je konečný a platí, že stroj skončí v přijímajícím stavu q fin (to znamená, že jeho koncová konfigurace je (, q fin, ). Pokud je výpočet nad slovem σ konečný, avšak stroj neskončí v přijímajícím stavu, řekneme, že slovo σ odmítá Nechť T je Turingův stroj (akceptor). Množina L(T ) = {σ : stroj T přijímá slovo σ} se nazývá množina přijímaná strojem T nebo též jazyk přijímaný strojem T Příklad. Uvažme abecedu σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Popišme Turingův stroj, který dostane na vstup číslo zapsané v desítkovém zápisu a rozhodne, zdali je sudé. Platí T = (Q = {S, L, K}; Σ = {0, 1,..., 9}; q start = S; q fin = K; λ; δ(0, S) = (0, S, ), δ(1, S) = (1, S, ),..., δ(9, S) = (9, S, ), δ(λ, S) = (λ, L, ), δ(0, L) = (0, K, ), δ(2, L) = (2, K, ), δ(4, L) = (4, K, ), δ(6, L) = (6, K, ), δ(8, L) = (8, K, )). L(T ) = {σ : σ je desítkový zápis sudého čísla}. Nechť si čtenář rozebere, jak stroj T počítá. Explicitní konstrukce Turingových strojů jsou zbytečně složité a nepřehledné; obvykle však stačí jen popsat základní princip, jak stroj pracuje, a je pak jen věcí techniky jej skutečně sestrojit. Výpočet stroje T můžeme popsat slovy stroj nejprve dojede na konec slova a zkontroluje, zdali poslední symbol je 0, 2, 4, 6 nebo 8. V tom případě přijme. Jinak odmítne. Nebudeme se dále pouštět do konstrukcí Turingových strojů; bude-li však třeba, princip jejich práce popíšeme podobným způsobem, jako jsme zde popsali výpočet stroje T. 14

15 3.9. Akceptory jsou Turingovy stroje použitelné pouze na rozhodovací problémy, kde možnou odpovědí je jen ano nebo ne. Často však potřebujeme, aby algoritmus něco spočítal. Turingovým strojům, které něco počítají, se říká transducery v jejich případě nás nezajímá jen to, zdali skončí či neskončí v přijímajícím stavu, ale také to, co je zapsáno na pásce. Nechť Σ je abeceda. Označme Σ množinu všech slov nad abecedou Σ. Řekneme, že transducer počítá funkci f : Σ Σ, jestliže platí: f(σ) = τ, právě když výpočet stroje T nad slovem σ skončí v přijímajícím stavu a na pásce je zapsáno slovo τ. (To znamená, že koncová konfigurace je (τ, q fin, ). Pracujeme zde s funkcemi typu f : Σ Σ To jsou funkce, které jednomu slovu přiřazují jiné slovo. Mějme na paměti, že stroje pracují se slovy. Mohou samozřejmě počítat i funkce typu f : N N; jen místo abstraktního pojmu přirozené číslo je třeba pracovat s nějakou jeho representací, například s jeho binárním zápisem, což je slovo nad abecedou {0, 1}. Stroj, který pracuje s binárními zápisy čísel, počítá funkce typu f : {0, 1} {0, 1}. V mnoha případech je vhodné abecedu rozšířit. Uvažme příklad stroje, který má sečíst dvě přirozená čísla (obě zapsaná v binárním zápise). Pak je účelné pracovat s abecedou {0, 1, } a zadat stroji na pásku dvě čísla (jejichž binární zápisy jsou σ 1 a σ 2 ), která má stroj sečíst, ve formě σ 1 σ 2. Symbol zde slouží jen jako oddělovač. Formálně se sice jedná o funkci f : {0, 1, } {0, 1, }, avšak v souladu s klasickým značením budeme o této funkci (a i o stroji, který ji počítá) hovořit nemůže-li dojít k nedorozumění jako o funkci typu f : N 2 N a budeme prostě a jednoduše psát f(x 1, x 2 ) = x 1 + x 2. Transducer, který funkci f počítá, prostě nazveme jako program na sčítání přirozených čísel. Podobně budeme nakládat s dalšími obvyklými funkcemi. 15

16 3.10. Všimněme si, že nyní již máme přesný význam některých pojmů, které se jinak užívají ve více či méně vágním smyslu. Řekneme-li algoritmus či program, máme na mysli Turingův stroj. Řekneme-li, že program něco počítá, tak to znamená, že se jedná o transducer počítající nějakou funkci f : Σ Σ. Výpočetní čas je délka výpočtu Turingova stroje nad daným slovem; nejsou to tedy mikrosekundy či sekundy, nýbrž délka posloupnosti konfigurací, která je konečným výpočtem. Výraz program se zacyklí nebo program počítá do nekončena znamená, že výpočet stroje je nekonečný (tedy neexistuje koncová konfigurace). Hovoříme-li o náročnosti výpočtu na paměť, máme na mysli prostorovou složitost výpočtu. Řekneme-li krok výpočtu, máme na mysli jedno použití přechodové funkce δ, tedy jeden přechod z konfigurace do konfigurace následující. 4. Vícepáskové Turingovy stroje 4.1. V minulé kapitole jsme zavedli Turingův stroj jako teoretické zařízení, které má organisovánu paměť jako pásku, po které může jezdit hlava, která čte a zapisuje do buněk pásky symboly. Někdy je jednodušší pracovat s tzv. vícepáskovým Turingovým strojem. Jedná se o Turingův stroj, který má k pásek, a po každé z nich jezdí samostatná hlava. Krok výpočtu vícepáskového stroje je provedení jedné instrukce. Instrukce (přechodová funkce) takového stroje jsou typu δ(q, s 1, s 2,..., s k ) = (q, s 1, s 2,..., s k, x 1, x 2,..., x k ), kde všechna x i {,, }. Interpretace je přirozená: je-li stroj ve stavu q, hlava na první pásce čte symbol s 1, hlava na druhé pásce čte symbol s 2 atd., pak stroj přejde do stavu q, hlava na první pásce zapíše symbol s 1 a provede pohyb x 1, hrava na druhé pásce zapíše symbol s 2 a provede pohyb x 2 atd. Na začátku výpočtu je na první pásce zapsáno vstupní slovo, ostatní pásky jsou prázdné Konfigurace vícepáskového stroje je přímým zobecněním pojmu konfigurace jednopáskového stroje. Je to (2k + 1)-tice K = (τ 1, τ 2,..., τ k, q, i 1, i 2,..., i k ), 16

17 kde τ j jsou slova na páskách, q je stav stroje a i j jsou celá čísla, která udávají pozice hlav na jednotlivých páskách relativně k začátku slova τ j Při výpočtu k-páskového stroje nad slovem σ je iniciální konfigurace 4 K 0 = (σ, Λ, Λ,..., Λ, q start, 0, 0,..., 0). Pojmy výpočet a časová složitost výpočtu k-páskového stroje jsou přímou analogií termínů zavedených pro jednopáskové stroje Prostorová složitost výpočtu k-páskového stroje nad slovem σ je číslo (j) max ( τ 1 + τ (j) τ (j) k ), 0 j m kde τ (j) i je slovo zapsané na i-té pásce v j-tém kroku výpočtu a m je délka výpočtu. Prostorová složitost je tedy největší počet popsaných buněk na páskách během výpočtu Je-li vícepáskový stroj transducerem, tj. počítá nějakou funkci f : Σ Σ, je třeba jednu pásku označit jako tzv. výstupní pásku. Fakt, že stroj T počítá funkci f, znamená, že f(σ) = τ, právě když stroj T skončí v přijímajícím stavu a na výstupní pásce je zapsáno slovo τ Příklad. Vícepáskové Turingovy stroje nám v mnohém usnadní práci. Ukažme příklad stroje, který převádí čísla z binární soustavy do unární. To je transducer, který počítá funkci f, pro kterou platí f(0) = Λ, f(1) = 1, f(10) = 11, f(11) = 111, f(100) = 1111 atd. (Všimněme si, že platí i např. f(01) = f( ) = 1.) Použijeme čtyřpáskový Turingův stroj. Na první pásce bude vstupní slovo σ, čtvrtá páska bude výstupní. Abeceda bude Σ = {0, 1}. Výpočet začne v bloku Blok 1, přijímající stav označme q fin = Konec. Stroj bude pracovat takto: (Blok 1 ) Hlava na první pásce jede na konec slova σ; na ostatních páskách se nic neděje. Jakmile je hlava na posledním symbolu slova σ, na druhou pásku se napíše jedna jednička a stroj přejde do stavu Blok 2. (Blok 2 ) Jestliže hlava na první pásce čte symbol 1, zkopíruje se obsah druhé pásky na čtvrtou pásku. (To znamená: hlava na druhé pásce jede vpravo a 4 Symbol Λ označuje prázdné slovo, tedy slovo délky 0. 17

18 při každém kroku se na čtvrtou pásku zapíše jednička, dokud hlava na druhé pásce nenarazí na konec slova. Pak se tato hlava vrátí na začátek slova. Na ostatních páskách se nic neděje.) Jestliže hlava na první pásce čte symbol 0, nestane se nic. Přechody do dalších stavů jsou tyto: jestliže hlava na první pásce čte symbol λ, stroj přejde do stavu Konec; jinak přejde do stavu Blok 3. (Blok 3 ) V tomto a následujícím bloku se počet jedniček na druhé pásce zdvojnásobí; s první a čtvrtou páskou se neděje nic. Zdvojnásobení počtu jedniček se provede takto: hlava na druhé pásce stojí na začátku slova. Začne přecházet doprava a při každém kroku vpravo zapíše na třetí pásku jedničku. Jakmile dorazí na druhé pásce na konec slova, přejde do stavu Blok 4. (Blok 4 ) Zdvojnásobování počtu jedniček na druhé pásce pokračuje takto: na třetí pásce jede hlava vlevo, při každém kroku vlevo smaže ze třetí pásky jednu jedničku; přitom hlava na druhé pásce jede vpravo a jedničky na druhou pásku zapisuje. Tento proces skončí ve chvíli, kdy je třetí páska prázdná. Pak se přejde do stavu Blok 5. (Blok 5 ) Hlava na druhé pásce jede na začátek slova na druhé pásce. Když dojede na začátek, posune se hlava na první pásce o jeden symbol vlevo a stroj přejde do stavu Blok 2. Ukažme příklad výpočtu nad slovem s = ; označme jednotlivé symboly s 0 = 1, s 1 = 1, s 2 = 0, s 3 = 1, s 4 = 0 s 5 = 1. Na začátku výpočtu ve stavu Blok 1 stroj přejede slovo na první na konec. Nechť jsme v situaci, kdy stroj opouští stav Blok 1 a hlava je na poli s s 5. Obsahy pásek budou během výpočtu, vždy v okamžiku těsně předtím, než stroj ve stavu Blok 5 posune hlavu na první pásce o jeden symbol vlevo, vypadat podle následující tabulky: Hlava na první pásce je na symbolu Obsah druhé pásky Obsah výstupní pásky s 5 = s 4 = s 3 = s 2 = s 1 = s 0 = }{{} 32-krát }{{} 53-krát

19 Skutečně, binární je = Vícepáskové stroje jsou jen jistým zjednodušením vyjadřování a popisu práce Turingových strojů. Tvrzení o simulacích. Ke každému k-páskovému akceptoru existuje jednopáskový akceptor, který přijímá stejný jazyk. Ke každému k-páskovému transduceru existuje jednopáskový transducer, který počítá stejnou funkci. Naznačme, jak k danému dvoupáskovému Turingově stroji T sestavit stroj T, který počítá stejně jako T. Označme Σ abecedu stroje T. Abecedou stroje T bude Σ = Σ {s : s Σ} {λ }. Například: má-li stroj T abecedu Σ = {a, b, c}, bude stroj T mít abecedu Σ = {a, b, c, a, b, c, λ }. Stroj T pracuje takto: vstupní slovo s 1 s 2... s n stroj na pásce nejprve roztáhne tak, aby bylo s 1 λs 2 λs 3 λ... λs n 1 λs n. Na lichých buňkách jsou přesně symboly s 1 s 2... s n, sudé buňky jsou prázdné. V nich bude stroj T simulovat druhou pásku stroje T. Aby si pamatoval, kde jsou na obou páskách hlavy, označí příslušné buňky symbolem s hvězdičkou: s 1λ s 2 λs 3 λ... λs n 1 λs n Poté bude stroj T simulovat jeden krok stroje T tak, že nejprve hlava pojede po lichých buňkách (první, třetí, pátá atd.) a simuluje akci na první pásce; poté pojede po sudých buňkách a simuluje akci na druhé pásce. Hvězdičkovaným symbolem bude označovat umístění hlavy na pásce. Tuto úvahu je možné zobecnit z dvoupáskových strojů na k-páskové, anebo tuto simulaci použít opakovaně: z k-páskového stroje udělat (k 1)-páskový, (k 2)-páskový atd. 5. Složitost množin 5.1. Řekneme, že množina slov A (nad nějakou abecedou) Σ je rekursivní, jestliže existuje akceptor T takový, že 19

20 σ A, právě když stroj T přijímá slovo σ, a σ A, právě když stroj T odmítá slovo σ. Jinými slovy to znamená: existuje stroj T takový, který nebude nikdy počítat do nekonečna (tedy: nad každým vstupním slovem se zastaví), a přijímá právě slova z množiny A. Řekneme, že stroj T rozhoduje o náležení do množiny A Poznámka. Uvidíme, že mnoho množin není rekursivních; tedy, neexistují programy (Turingovy stroje), u nichž by bylo zaručeno, že se při rozhodování o náležení prvku do takové množiny vždy zastaví. V případě takových množin máme problém: spustíme-li program, který má rozhodnout, zdali σ A, nemusíme se nikdy dočkat výsledku. V tomto textu však budeme pracovat pouze s rekursivními množinami; o nerekursivních množinách pojednáme v textu Neřešitelnost a nerozhodnutelnost Je-li množina A rekursivní, je i její doplněk 5 co-a rekursivní. Je-li T stroj, který rozhoduje o náležení do množiny A, pak snadno sestavíme stroj T, který bude rozhodovat o náležení do množiny co-a. Stačí stroj T změnit tak, že q fin nebude přijímající stav, přidáme nový přijímající stav q fin a přidáme instrukce, které zajistí, že kdykoliv by stroj měl skončit v některém ze stavů Q \ {q fin }, přejde stroj do stavu q fin a skončí. Tím se zajistí, že každý odmítající výpočet stroje T bude přijímajícím výpočtem stroje T a naopak, každý přijímající výpočet stroje T bude odmítajícím výpočtem stroje T Řekneme, že stroj T, který rozhoduje o náležení do množiny A, počítá s časovou složitostí O(f(n)), jestliže pro každé slovo σ Σ platí, že délka výpočtu stroje nad slovem σ je nanejvýš f( σ ). To znamená: ať dáme na vstup stroji T libovolné slovo σ, pak délka výpočtu závisí na délce slova σ; máme však zaručeno, že tento výpočet nebude delší než f( σ ) Řekneme, že časová složitost (rekursivní) množiny A je nanejvýš O(f(n)), jestliže existuje Turingův stroj, který rozhoduje o náležení do množiny A a počítá s časovou složitostí O(f(n)). 5 Doplněk množiny A je množina co-a = Σ \A. Je to množina všech slov nad abecedou Σ, která nepatří do A. 20

21 5.6. Příklad. Časová složitost množiny B = {σ {0, 1} : σ je dvojkový zápis sudého čísla} je (nanejvýš) O(n) (říkáme též, že je (nanejvýš) lineární), neboť k rozpoznání sudého čísla stačí Turingův stroj, který přejede na konec vstupního slova a ověří, že jeho poslední bit je nula Příklad. Časová složitost množiny C = {σ {0, 1} : σ je dvojkový zápis prvočísla} je nanejvýš O(n 2 2 n ). Mějme zadáno číslo x, o kterém máme rozhodnout, je-li prvočíslem. To můžeme prokázat tak, že sestavíme třípáskový stroj, který na druhé pásce bude postupně zapisovat všechna čísla 2, 3,..., x 1 (ve dvojkovém zápisu) a na třetí pásce vždy ověří, zdali lze zadané číslo x (zapsané na první pásce) číslem na druhé pásce beze zbytku dělit. Použijeme-li na dělení čísel algoritmus, který jsme se učili v první třídě, má tento složitost O(n 2 ). Pokud dělitele najde, odmítne; jinak přijme. Všimněme si, že je-li na vstupu zapsáno číslo x, je délka vstupního slova n log x a tedy x 2 n. Všech čísel v posloupnosti 2, 3,..., x 1 je O(x) = O(2 n ); na zápis každého z těchto čísel potřebujeme nanejvýš n bitů, avšak na dělení potřebujeme čas O(n 2 ). Dohromady tedy dostáváme O(n 2 2 n ). Nahlédněme však, že složitost množiny C je menší. Hledáme-li dělitele čísla x, stačí procházet všechna čísla 6 2, 3,..., x. Kdyby totiž existoval dělitel y čísla x takový, že y > x, musel by existovat i druhý dělitel z splňující z x (jinak by bylo yz > x). Dostáváme tak, že složitost množiny C je (nanejvýš) O(n 2 2 n ). V roce 2002 Agrawal, Kayal a Saxena publikovali algoritmus 7, který rozpoznává prvočísla v polynomiálním čase. Ukázali, že složitost množiny C je nanejvýš O(n 22 ). Dali tak odpověď na dlouho otevřený a slavný problém, který bývá formulován jako P RIMES? P. Tomuto výsledku byl dokonce věnován palcový titulek New York Times ze dne 8. srpna 2002: New Method Said to Solve Key Problem in Math. (Po- 6 značí horní celou část čísla. 7 v6.pdf 21

22 znamenejme, že Agrawal je jméno slavné a známé, zatímco jeho dva spoluautoři, Kayal a Saxena, byli v době publikace čerstvými držiteli bakalářského titulu informatiky.) Jejich algoritmus je poměrně jednoduchý a elegantní; vyžaduje však jisté základy z algebry, a tak jej zde uvádět nebudeme. Zajímavé na něm je to, že dokáže správně rozhodovat, zdali je dané číslo prvočíslem, avšak nedokáže nalézt žádného (netriviálního) dělitele. Proto je možné, že dva na první pohled podobné problémy, (i) rozhodnout, zdali dané číslo je prvočíslem či číslem složeným, a (ii) nalézt některého (netriviálního) dělitele, mají různou výpočetní složitost. Na prvočíselnosti je založena řada kombinatorických a kryptografických algoritmů. Například známý šifrovací algoritmus RSA je založen na předpokladu, že je-li dáno číslo x, které vzniklo vynásobením dvou prvočísel, není v rozumném čase možné z čísla x tato dvě prvočísla najít Prostorová složitost množiny A je přímou analogií pojmu časová složitost. Řekneme, že prostorová složitost množiny A je nanejvýš O(f(n)), jestliže existuje Turingův stroj T rozhodující o náležení do množiny A takový, že nad každým vstupním slovem použije při svém výpočtu nanejvýš f( σ ) buněk na svých páskách. * Teď už je možné navázat textem o složitosti, lze zavést obvyklé třídy P, NP a PSPACE, DEXT, EXPSPACE; s jistým úsilím i třeba PP, BPP, R, ZPP atd. Například: atd. A P právě když existuje číslo k tak, že časová složitost množiny A je nejvýše O(n k ) A NP právě když existuje množina B P taková, že platí: existuje n tak, že σ A, právě když existuje τ takové, že τ σ n a [σ, τ] B. A PSPACE právě když existuje číslo k tak, že prostorová složitost množiny A je nejvýše O(n k ) 22

Složitost Filip Hlásek

Složitost Filip Hlásek Složitost Filip Hlásek Abstrakt. Příspěvek popisuje dva základní koncepty teoretické informatiky, Turingovy stroje a složitost. Kromě definic důležitých pojmů uvádí také několik souvisejících tvrzení,

Více

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g). 7 Barevnost grafu Definice 71 Graf G se nazývá k-obarvitelný, jestliže každému jeho uzlu lze přiřadit jednu z barev 1 k tak, že žádné dva sousední uzly nemají stejnou barvu Definice 72 Nejmenší přirozené

Více

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31 Vztah teorie vyčíslitelnosti a teorie složitosti IB102 Automaty, gramatiky a složitost, 2. 12. 2013 1/31 IB102 Automaty, gramatiky a složitost, 2. 12. 2013 2/31 Časová složitost algoritmu počet kroků výpočtu

Více

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace AUTOMATY A 11 GRAMATIKY Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta Katedra teoretické informatiky a matematické logiky Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně

Více

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Turingovy stroje. Teoretická informatika Tomáš Foltýnek Turingovy stroje Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika strana 2 Opakování z minulé přednášky Jaké znáte algebraické struktury s jednou operací? Co je to okruh,

Více

Fakulta informačních technologií. Teoretická informatika

Fakulta informačních technologií. Teoretická informatika Vysoké učení technické v Brně Fakulta informačních technologií Teoretická informatika Třetí úkol 2 Jan Trávníček . Tato úloha je řešena Turingovým strojem, který je zobrazen na obrázku, který si můžeme

Více

NP-úplnost problému SAT

NP-úplnost problému SAT Problém SAT je definován následovně: SAT(splnitelnost booleovských formulí) Vstup: Booleovská formule ϕ. Otázka: Je ϕ splnitelná? Příklad: Formule ϕ 1 =x 1 ( x 2 x 3 )jesplnitelná: např.přiohodnocení ν,kde[x

Více

Naproti tomu gramatika je vlastně soupis pravidel, jak

Naproti tomu gramatika je vlastně soupis pravidel, jak 1 Kapitola 1 Úvod V přednášce se zaměříme hlavně na konečný popis obecně nekonečných množin řetězců symbolů dané množiny A. Prvkům množiny A budeme říkat písmena, řetězcům (konečným posloupnostem) písmen

Více

TURINGOVY 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 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íce

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 Σ

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 Σ 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íce

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

Více

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

Třídy složitosti P a NP, NP-úplnost

Třídy složitosti P a NP, NP-úplnost Třídy složitosti P a NP, NP-úplnost Cíle přednášky: 1. Definovat, za jakých okolností můžeme problém považovat za efektivně algoritmicky řešitelný. 2. Charakterizovat určitou skupinu úloh, pro které není

Více

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování. 9.5 Třída NP Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování. Příklad. Uvažujme problém IND a následující

Více

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

doplně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íce

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

Konstrukce 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íce

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

Univerzální Turingův stroj a Nedeterministický Turingův stroj

Univerzální Turingův stroj a Nedeterministický Turingův stroj 27 Kapitola 4 Univerzální Turingův stroj a Nedeterministický Turingův stroj 4.1 Nedeterministický TS Obdobně jako u konečných automatů zavedeme nedeterminismus. Definice 14. Nedeterministický Turingův

Více

Složitost problémů. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 25. dubna / 23

Složitost problémů. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 25. dubna / 23 Složitost problémů Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 25. dubna 2012 1/ 23 Složitost problémů Ukazuje se, že různé(algoritmické) problémy jsou různě těžké. Obtížnější jsou ty problémy, k

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase -stromy a rozpoznávání intervalových grafů v lineárním čase ermutace s předepsanými intervaly Označme [n] množinu {1, 2,..., n}. Mějme permutaci π = π 1, π 2,..., π n množiny [n]. Řekneme, že množina S

Více

Přijímací zkouška - matematika

Přijímací zkouška - matematika Přijímací zkouška - matematika Jméno a příjmení pište do okénka Číslo přihlášky Číslo zadání 1 Grafy 1 Pro který z následujících problémů není znám žádný algoritmus s polynomiální časovou složitostí? Problém,

Více

Neřešitelnost a nerozhodnutelnost

Neřešitelnost a nerozhodnutelnost Neřešitelnost a nerozhodnutelnost Studijní materiál, M.Č. 0. Úvod 0.1. V tomto textu se pokusíme ukázat, že řada problémů, které jsou na první pohled velice jednoduché, není principiálně možné řešit pomocí

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

Matematická analýza pro informatiky I. Limita funkce

Matematická analýza pro informatiky I. Limita funkce Matematická analýza pro informatiky I. 5. přednáška Limita funkce Jan Tomeček tomecek@inf.upol.cz http://aix-slx.upol.cz/ tomecek/index Univerzita Palackého v Olomouci 18. března 2011 Jan Tomeček, tomecek@inf.upol.cz

Více

Od Turingových strojů k P=NP

Od Turingových strojů k P=NP Složitost Od Turingových strojů k P=NP Zbyněk Konečný Zimnění 2011 12. 16.2.2011 Kondr (Než vám klesnou víčka 2011) Složitost 12. 16.2.2011 1 / 24 O čem to dnes bude? 1 Co to je složitost 2 Výpočetní modely

Více

Lineární algebra : Polynomy

Lineární algebra : Polynomy Lineární algebra : Polynomy (2. přednáška) František Štampach, Karel Klouda LS 2013/2014 vytvořeno: 15. dubna 2014, 11:21 1 2 2.1 Značení a těleso komplexních čísel Značení N := {1, 2, 3... }... množina

Více

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28. INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ107/2200/280141 Soustavy lineárních rovnic Michal Botur Přednáška 4 KAG/DLA1M: Lineární

Více

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie. Zpracoval: hypspave@fel.cvut.cz 5. Výroková logika, formule výrokové logiky a jejich pravdivostní ohodnocení, splnitelné formule, tautologie, kontradikce, sémantický důsledek, tautologicky ekvivalentní

Více

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

Tří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íce

Vrcholová barevnost grafu

Vrcholová barevnost grafu Vrcholová barevnost grafu Definice: Necht G = (V, E) je obyčejný graf a k N. Zobrazení φ : V {1, 2,..., k} nazýváme k-vrcholovým obarvením grafu G. Pokud φ(u) φ(v) pro každou hranu {u, v} E, nazveme k-vrcholové

Více

Vlastnosti regulárních jazyků

Vlastnosti 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íce

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška šestá Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. a dle učebního textu R. Bělohlávka a V. Vychodila: Diskrétní matematika

Více

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28. INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.0141 Báze vektorových prostorů, transformace souřadnic Michal Botur Přednáška

Více

YZTI - poznámky ke složitosti

YZTI - poznámky ke složitosti YZTI - poznámky ke složitosti LS 2018 Abstrakt Poznámky k přednášce YZTI zabývající se složitostí algoritmických problémů a teorií NP-úplnosti. Složitost algoritmu a problému Zabýváme se už pouze rekurzivními

Více

Výroková a predikátová logika - XII

Výroková a predikátová logika - XII Výroková a predikátová logika - XII Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XII ZS 2015/2016 1 / 15 Algebraické teorie Základní algebraické teorie

Více

Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE. Jan Vacek Universální Turingův stroj. Katedra algebry

Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE. Jan Vacek Universální Turingův stroj. Katedra algebry Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Jan Vacek Universální Turingův stroj Katedra algebry Vedoucí bakalářské práce: prof. RNDr. Jan Krajíček, DrSc. Studijní program:

Více

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

Pumping 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íce

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13 Postův korespondenční problém Meze rozhodnutelnosti 2 p.1/13 Postův korespondenční problém Definice 10.1 Postův systém nad abecedou Σ je dán neprázdným seznamem S dvojic neprázdných řetězců nadσ, S = (α

Více

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů? Kapitola 9 Matice a počet koster Graf (orientovaný i neorientovaný) lze popsat maticí, a to hned několika různými způsoby. Tématem této kapitoly jsou incidenční matice orientovaných grafů a souvislosti

Více

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

Digitální učební materiál

Digitá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_145_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

Příklady paralelních algoritmů

Příklady paralelních algoritmů Příklady paralelních algoritmů Studijní materiál Michal Černý, katedra ekonometrie, VŠE Praha 0. Úvod 0.1. Řada problémů může být řešena velmi efektivně, máme-li k disposici počítač, který disponuje více

Více

[1] samoopravné kódy: terminologie, princip

[1] samoopravné kódy: terminologie, princip [1] Úvod do kódování samoopravné kódy: terminologie, princip blokové lineární kódy Hammingův kód Samoopravné kódy, k čemu to je [2] Data jsou uložena (nebo posílána do linky) kodérem podle určitého pravidla

Více

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel

Více

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice I. Funkce dvou a více reálných proměnných 1. Úvod Značení: V textu budeme používat označení: N pro množinu všech přirozených čísel; R pro množinu všech reálných čísel; R n pro množinu všech uspořádaných

Více

Minimalizace KA - Úvod

Minimalizace 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íce

9 Kolmost vektorových podprostorů

9 Kolmost vektorových podprostorů 9 Kolmost vektorových podprostorů Od kolmosti dvou vektorů nyní přejdeme ke kolmosti dvou vektorových podprostorů. Budeme se zabývat otázkou, kdy jsou dva vektorové podprostory na sebe kolmé a jak to poznáme.

Více

Diskrétní matematika 1. týden

Diskrétní matematika 1. týden Diskrétní matematika 1. týden Elementární teorie čísel dělitelnost Jan Slovák Masarykova univerzita Fakulta informatiky jaro 2015 Obsah přednášky 1 Problémy teorie čísel 2 Dělitelnost 3 Společní dělitelé

Více

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici [1] Determinant je číslo jistým způsobem charakterizující čtvercovou matici det A = 0 pro singulární matici, det A 0 pro regulární matici používá se při řešení lineárních soustav... a v mnoha dalších aplikacích

Více

Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty. Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty. (A7B01MCS) I. Matematická indukce a rekurse. Indukční principy patří

Více

Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti. Petr Kučera

Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti. Petr Kučera Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti Petr Kučera 16. září 2014 Obsah Sylabus a literatura Úvod a motivace iv v I Vyčíslitelnost 1 1 Algoritmy a výpočetní modely 2 1.1 Churchova-Turingova

Více

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D. Algoritmizace diskrétních simulačních modelů Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky Při programování simulačních modelů lze hlavní dílčí problémy shrnout do následujících bodů: 1) Zachycení statických

Více

Funkce. Definiční obor a obor hodnot

Funkce. Definiční obor a obor hodnot Funkce Definiční obor a obor hodnot Opakování definice funkce Funkce je předpis, který každému číslu z definičního oboru, který je podmnožinou množiny všech reálných čísel R, přiřazuje právě jedno reálné

Více

Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti. Petr Kučera

Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti. Petr Kučera Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti Petr Kučera 12. února 2016 Obsah I Úvod 1 1 Motivace 2 II Vyčíslitelnost 3 2 Algoritmy a výpočetní modely 4 2.1 Churchova-Turingova teze..............................

Více

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39 Algoritmy Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna 2018 1/ 39 Algoritmy Příklad: Popis algoritmu pomocí pseudokódu: Algoritmus 1: Algoritmus pro nalezení největšího prvku v poli 1 Find-Max(A,n):

Více

Vztah jazyků Chomskeho hierarchie a jazyků TS

Vztah 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íce

Výroková a predikátová logika - IV

Výroková a predikátová logika - IV Výroková a predikátová logika - IV Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - IV ZS 2018/2019 1 / 17 Tablo metoda Tablo Tablo - příklady F (((p q)

Více

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

Více

Úvod do lineární algebry

Úvod do lineární algebry Úvod do lineární algebry 1 Aritmetické vektory Definice 11 Mějme n N a utvořme kartézský součin R n R R R Každou uspořádanou n tici x 1 x 2 x, x n budeme nazývat n rozměrným aritmetickým vektorem Prvky

Více

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A Každá úloha je hodnocena maximálně 25 body. Všechny své odpovědi zdůvodněte! 1. Postavte na stůl do řady vedle

Více

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014 Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 204 Zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia

Více

Cílem kapitoly je opakování a rozšíření středoškolských znalostí v oblasti teorie množin.

Cílem kapitoly je opakování a rozšíření středoškolských znalostí v oblasti teorie množin. 1.2. Cíle Cílem kapitoly je opakování a rozšíření středoškolských znalostí v oblasti teorie množin. Průvodce studiem Množina je jedním ze základních pojmů moderní matematiky. Teorii množin je možno budovat

Více

Zavedení a vlastnosti reálných čísel

Zavedení a vlastnosti reálných čísel Zavedení a vlastnosti reálných čísel jsou základním kamenem matematické analýzy. Konstrukce reálných čísel sice není náplní matematické analýzy, ale množina reálných čísel R je pro matematickou analýzu

Více

Pomocný text. Polynomy

Pomocný text. Polynomy Pomocný text Polynomy Tato série bude o polynomech a to zejména o polynomech jedné proměnné (pokud nebude uvedeno explicitně, že jde o polynom více proměnných). Formálně je někdy polynom jedné proměnné

Více

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace. 1. Úvod. Algoritmus 1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá

Více

Testování prvočíselnosti

Testování prvočíselnosti Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo

Více

Přednáška 3: Limita a spojitost

Přednáška 3: Limita a spojitost 3 / 1 / 17, 1:38 Přednáška 3: Limita a spojitost Limita funkce Nejdříve je potřeba upřesnit pojmy, které přesněji popisují (topologickou) strukturu množiny reálných čísel, a to zejména pojem okolí 31 Definice

Více

1.5.2 Číselné soustavy II

1.5.2 Číselné soustavy II .. Číselné soustavy II Předpoklady: Př. : Převeď do desítkové soustavy čísla. a) ( ) b) ( ) 4 c) ( ) 6 = + + + = 7 + 9 + = a) = 4 + 4 + 4 = 6 + 4 + = 9 b) 4 = 6 + 6 + 6 = 6 + 6 + = 6 + + = 69. c) 6 Pedagogická

Více

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

Tří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íce

13. přednáška 13. ledna k B(z k) = lim. A(z) = M(z) m 1. z m.

13. přednáška 13. ledna k B(z k) = lim. A(z) = M(z) m 1. z m. 13. přednáška 13. ledna 2010 Důkaz. M = n=0 a nz n a N = n=0 b nz n tedy buďte dvě mocninné řady, které se jako funkce shodují svými hodnotami na nějaké prosté posloupnosti bodů z k C konvergující k nule.

Více

Matice. a m1 a m2... a mn

Matice. a m1 a m2... a mn Matice Nechť (R, +, ) je okruh a nechť m, n jsou přirozená čísla Matice typu m/n nad okruhem (R, +, ) vznikne, když libovolných m n prvků z R naskládáme do obdélníkového schematu o m řádcích a n sloupcích

Více

Kapitola Základní množinové pojmy Princip rovnosti. Dvě množiny S a T jsou si rovny (píšeme S = T ) prvek T je také prvkem S.

Kapitola Základní množinové pojmy Princip rovnosti. Dvě množiny S a T jsou si rovny (píšeme S = T ) prvek T je také prvkem S. 1 Kapitola 1 Množiny 11 Základní množinové pojmy Pojem množiny nedefinujeme, pouze připomínáme, že množina je souhrn, nebo soubor navzájem rozlišitelných objektů, kterým říkáme prvky 111 Princip rovnosti

Více

Logické programy Deklarativní interpretace

Logické programy Deklarativní interpretace Logické programy Deklarativní interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 7 1 Algebry. (Interpretace termů) Algebra J pro jazyk termů L obsahuje Neprázdnou

Více

Lineární algebra : Polynomy

Lineární algebra : Polynomy Lineární algebra : Polynomy (2. přednáška) František Štampach, Karel Klouda frantisek.stampach@fit.cvut.cz, karel.klouda@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních technologií České

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška pátá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008 a dle učebního textu R. Bělohlávka a V. Vychodila: Diskrétní

Více

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace RELACE Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace slouží k vyjádření vztahů mezi prvky nějakých množin. Vztahy mohou být různé povahy. Patří sem vztah býti potomkem,

Více

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11 333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]

Více

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0). Výroková logika II Negace Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0). Na konkrétních příkladech si ukážeme, jak se dají výroky negovat. Obecně se výrok dá negovat tak, že před

Více

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012 Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18

Více

PŘEDNÁŠKA 2 POSLOUPNOSTI

PŘEDNÁŠKA 2 POSLOUPNOSTI PŘEDNÁŠKA 2 POSLOUPNOSTI 2.1 Zobrazení 2 Definice 1. Uvažujme libovolné neprázdné množiny A, B. Zobrazení množiny A do množiny B je definováno jako množina F uspořádaných dvojic (x, y A B, kde ke každému

Více

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11 Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8] count=0 for i in range(1,len(data)):

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška jedenáctá Miroslav Kolařík Zpracováno dle P. Martinek: Základy teoretické informatiky, http://phoenix.inf.upol.cz/esf/ucebni/zti.pdf Obsah 1 Složitost algoritmu 2 Třídy složitostí

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

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

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 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íce

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Lukáš Havrlant Univerzita Palackého 10. ledna 2014 Primární zdroj Jiří Adámek: Foundations of Coding. Strany 137 160. Na webu ke stažení, heslo:

Více

GRAFY A GRAFOVÉ ALGORITMY

GRAFY A GRAFOVÉ ALGORITMY KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO GRAFY A GRAFOVÉ ALGORITMY ARNOŠT VEČERKA VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ

Více

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

Regulá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íce

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech 1. července 2008 1 Funkce v R n Definice 1 Necht n N a D R n. Reálnou funkcí v R n (reálnou funkcí n proměnných) rozumíme zobrazení

Více

Množiny, relace, zobrazení

Množiny, relace, zobrazení Množiny, relace, zobrazení Množiny Množinou rozumíme každý soubor určitých objektů shrnutých v jeden celek. Zmíněné objekty pak nazýváme prvky dané množiny. Pojem množina je tedy synonymem pojmů typu soubor,

Více

Základy elementární teorie čísel

Základy elementární teorie čísel Základy elementární teorie čísel Jiří Velebil: X01DML 29. října 2010: Základy elementární teorie čísel 1/14 Definice Řekneme, že přirozené číslo a dělí přirozené číslo b (značíme a b), pokud existuje přirozené

Více

Báze a dimenze vektorových prostorů

Báze a dimenze vektorových prostorů Báze a dimenze vektorových prostorů Buď (V, +, ) vektorový prostor nad tělesem (T, +, ). Nechť u 1, u 2,..., u n je konečná posloupnost vektorů z V. Existují-li prvky s 1, s 2,..., s n T, z nichž alespoň

Více

Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63 Výpočetní modely Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince 2018 1/ 63 Nutnost upřesnění pojmu algoritmus Dosavadní definice pojmu algoritmus byla poněkud vágní. Pokud bychom pro nějaký problém

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání

Více

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

Z. 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íce

Matematická analýza pro informatiky I. Limita posloupnosti (I)

Matematická analýza pro informatiky I. Limita posloupnosti (I) Matematická analýza pro informatiky I. 3. přednáška Limita posloupnosti (I) Jan Tomeček tomecek@inf.upol.cz http://aix-slx.upol.cz/ tomecek/index Univerzita Palackého v Olomouci 25. února 2011 tomecek@inf.upol.cz

Více

Usuzování za neurčitosti

Usuzování za neurčitosti Usuzování za neurčitosti 25.11.2014 8-1 Usuzování za neurčitosti Hypotetické usuzování a zpětná indukce Míry postačitelnosti a nezbytnosti Kombinace důkazů Šíření pravděpodobnosti v inferenčních sítích

Více

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel Matematická analýza IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel na množině R je definováno: velikost (absolutní hodnota), uspořádání, aritmetické operace; znázornění:

Více

5. Lokální, vázané a globální extrémy

5. Lokální, vázané a globální extrémy 5 Lokální, vázané a globální extrémy Studijní text Lokální extrémy 5 Lokální, vázané a globální extrémy Definice 51 Řekneme, že f : R n R má v bodě a Df: 1 lokální maximum, když Ka, δ Df tak, že x Ka,

Více

Pravděpodobnost a statistika

Pravděpodobnost a statistika Pravděpodobnost a statistika 1 Náhodné pokusy a náhodné jevy Činnostem, jejichž výsledek není jednoznačně určen podmínkami, za kterých probíhají, a které jsou (alespoň teoreticky) neomezeně opakovatelné,

Více