Algoritmy a výpočetní složitost

Podobné dokumenty
Algoritmy a výpočetní složitost

1 Algoritmus. 1.1 Úvod

ALGORITMY A DATOVÉ STRUKTURY

Rozhodnutelné a nerozhodnutelné problémy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna / 49

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

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

Složitosti základních operací B + stromu

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

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Složitost Filip Hlásek

10. Složitost a výkon

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.

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

Z. Sawa (VŠB-TUO) Teoretická informatika 18. prosince / 67

Časová složitost / Time complexity

NP-úplnost problému SAT

Složitost a moderní kryptografie

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Další partie teorie složitosti. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 30. května / 51

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

Výpočetní složitost algoritmů

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

Složitost. Teoretická informatika Tomáš Foltýnek

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM:

Týden 14. Přednáška. Teoretická informatika průběh výuky v semestru 1. PSPACE, NPSPACE, PSPACE-úplnost

Základy matematické analýzy

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

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III

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

TGH12 - Problém za milion dolarů

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Dynamické programování

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

Datové struktury 2: Rozptylovací tabulky

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

Úvod do problematiky

Úvod do teoretické informatiky

TGH05 - Problém za milion dolarů.

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

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

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

Složitost her. Herní algoritmy. Otakar Trunda

5.6.3 Rekursivní indexace složitostních tříd Uniformní diagonalizace Konstrukce rekursivních indexací a aplikace uniformní diagonalizace

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

Základy algoritmizace

Základní informace o předmětu Otázka:

Digitální učební materiál

Algoritmizace prostorových úloh

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

Úvod do teoretické informatiky

Databáze, sítě a techniky programování X33DSP

Usuzování za neurčitosti

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

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Algoritmy I, složitost

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

Principy indukce a rekursivní algoritmy

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

Gödelovy věty o neúplnosti

YZTI - poznámky ke složitosti

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

Od Turingových strojů k P=NP

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

Základy algoritmizace, návrh algoritmu

Algoritmizace složitost rekurzivních algoritmů. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

COMPLEXITY

Úvod do informatiky. Miroslav Kolařík

Prvočíslo a Ulamova spirála

Náhodný pokus Náhodným pokusem (stručněji pokusem) rozumíme každé uskutečnění určitého systému podmínek resp. pravidel.

NP-úplnost. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 23. května / 32

Matematické důkazy Struktura matematiky a typy důkazů

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

Rekurentní rovnice, strukturální indukce

Algoritmizace. Obrázek 1: Přeložení programu překladačem

IB111 Úvod do programování skrze Python

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

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

Základy algoritmizace. Pattern matching

Binární vyhledávací stromy pokročilé partie

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Obsah. Euler-Fermatova věta. Reziduální aritmetika. 3. a 4. přednáška z kryptografie

Základy algoritmizace a programování

Stochastické modely Informace k závěrečné zkoušce

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

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

Algoritmy a algoritmizace

Matematická indukce, sumy a produkty, matematická logika

Substituce. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 2 1

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Algoritmizace. 1. Úvod. Algoritmus

Vzdálenost uzlů v neorientovaném grafu

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ

4. Trojúhelníkový rozklad p. 1/20

Naproti tomu gramatika je vlastně soupis pravidel, jak

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

Transkript:

Algoritmy a výpočetní složitost Zdeněk Sawa Katedra informatiky, FEI Vysoká škola báňská Technická universita Ostrava 17. listopadu 15, Ostrava-Poruba 708 33 Česká republika 12. prosince 2005 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 1/ 42

Co je to algoritmus? Algoritmus Algoritmus je mechanický postup skládající se z nějakých jednoduchých elementárních kroků, který pro nějaký zadaný vstup vyprodukuje nějaký výstup. Algoritmus může být zadán: slovním popisem v přirozeném jazyce jako počítačový program v nějakém programovacím jazyce(c, C++, Java,Pascal,...) jako hardwarový obvod... Algoritmy slouží k řešení různých problémů. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 2/ 42

Problémy Problém V zadání problému musí být určeno: co je množinou možných vstupů co je množinou možných výstupů jakýjevztahmezivstupyavýstupy vstupy výstupy Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 3/ 42

Příklad problému Problém Vstup: Seznam měst a silnic spojujících tato města. Ukaždésilnicejeuvedeno,zkteréhoměstadokteréhovede, ajakájejejídélka(vkm). Dálepakdvěměstazeseznamuměst označmejeměstoa aměstob. Výstup:NejkratšícestazměstaAdoměstaB. 23 18 28 20 A 21 17 14 18 30 31 17 25 22 41 15 37 B 34 29 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 4/ 42

Další příklady problémů Vyhledávání výskytů slova v textu Vstup:TextTaslovoS. Výstup: Seznam všech pozic, na kterých se v textu T vyskytuje slovo S. Prvočíselnost Vstup: Přirozené číslo n. Výstup: Ano pokudjenprvočíslo, Ne vopačnémpřípadě. Pozn.:Přirozenáčísla N = {0,1,2,3,4,5,...} Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 5/ 42

Rozhodovací a optimalizační problémy Situace,kdymnožinavýstupůje { Ano, Ne }jepoměrněčastá. Takovým problémům se říká rozhodovací problémy. Prvočíselnost Vstup: Přirozené číslo n. Otázka: Je n prvočíslo? Problémům, kde je úkolem najít mezi mnoha potenciálními řešeními takové, které je podle nějakého zadaného kritéria nejlepší, se nazývají optimalizační problémy. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 6/ 42

Instance problému Instance problému Konkrétní vstup z množiny možných vstupů problému se nazývá instance problému. Příklad1:Text 010001001010100101100101 aslovo 1011001 je instancí problému Vyhledávání slova v textu. Příklad 2: Číslo 1729 je instancí problému Prvočíselnost. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 7/ 42

Řešení problémů Řešení problému Algoritmus řeší daný problém, když: 1 Se pro libovolný vstup daného problému(libovolnou instanci) po konečném počtu kroků zastaví. 2 Vyprodukuje výstup z množiny možných výstupů, který vyhovuje podmínkám uvedeným v zadání problému. Algoritmus, který řeší daný problém, je korektní. Jeden problém může mít více různých korektních řešení. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 8/ 42

Doba výpočtu Počítače pracují rychle(řádově miliardy operací za sekundu), ovšem ne nekonečně rychle provedení jedné operace trvá nějakou nenulovou dobu. Výpočet pro tentýž vstup může u různých algoritmů(nebo u různých implementací téhož algoritmu) trvat různou dobu. Tatodobazávisímimojinéna: konkrétní implementaci algoritmu konkrétním použitém programovacím jazyce konkrétním použitém překladači nebo interpretru konkrétním použitém hardwaru(zejména na taktovací frekvenci procesoru)... Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 9/ 42

Posuzování efektivnosti algoritmů Přirozené otázky: Jak závisí doba běhu programu na použitém algoritmu? Kterýzalgoritmů,kteréřešídanýproblém,je lepší? Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 10/ 42

Velikost vstupu Pokud známe všechny potřebné detaily můžeme dobu běhu programu pro daný konkrétní vstup vypočítat, případně změřit. Doba běhu programu je obecně pro různé vstupy různá. Zavádíme pojem velikost vstupu např. počet měst a silnic, počet znaků vtextuaveslově,početbitůvbinárníreprezentacičíslaapod. Nejčastěji je velikost vstupu definována jako počet bitů(resp. bytů) vstupu. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 11/ 42

Efektivnost algoritmů U daného algoritmu zkoumáme, jak závisí doba běhu programu na velikosti vstupu, tj. jak dlouho běží program pro vstup velikosti n. Časová složitost Funkce, která vyjadřuje závislost doby běhu programu na velikosti vstupu se nazývá časová složitost algoritmu. Zkoumáme buď: dobu běhu v nejhorším případě, nebo dobu běhu v průměrném případě. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 12/ 42

Příklad: třídění Problém: Třídění Vstup:Posloupnostnprvkůa 1,a 2,...,a n. Výstup:Prvkya 1,a 2,...,a n seřazenéodnejmenšíhoponejvětší. Příklad: Vstup:31,41,59,26,41,58 Výstup:26,31,41,41,58,59 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 13/ 42

Algoritmus 1 třídění přímým vkládáním 314159264158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 314159264158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 314159264158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 314159264158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 314159264158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 314126594158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 312641594158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 263141594158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 263141594158 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 263141415958 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 263141415958 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 263141415859 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 263141415859 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 1 třídění přímým vkládáním 263141415859 nesetříděné prvky setříděné prvky právě zpracovávaný prvek Celkový počet operací v nejhorším případě: 1 +2+3+ + (n 2) + (n 1) = n (n 1) 2 = 1 2 n2 1 2 n Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 34425861 10115367 = Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 34425861 115367 = 10 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 34425861 5367 = 10 11 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 425861 5367 = 101134 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 5861 5367 = 10113442 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 5861 67 = 1011344253 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 61 67 = 101134425358 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. 67 = 10113442535861 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort Hlavní myšlenka: Dvě setříděné posloupnosti snadno spojíme do jediné setříděné posloupnosti. Pokud mají obě posloupnosti dohromady n prvků, vyžaduje tato operace nkroků. = 1011344253586167 Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15/ 42

Algoritmus 2 Merge Sort(pokračování) Vstup:58,42,34,61,67,10,53,11 n 58 42 34 61 67 10 53 11 log 2 n 42 58 34 61 10 67 11 53 34 42 58 61 10 11 53 67 10 11 34 42 53 58 61 67 Celkovýpočetoperací:nlog 2 n Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 16/ 42

Porovnání dvou implementací Jetřebasetřídit10 6 prvků. Implementace A: Implementace B: Použito třídění přímým vkládáním Rychlýpočítač:10 9 operacízasekundu Efektivníimplementace:2n 2 operací Použit merge sort Pomalýpočítač:10 7 operacízasekundu Neefektivní implementace: 50n log n operací Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 17/ 42

Porovnání dvou implementací(pokračování) Setřídění10 6 prvkůvyžaduje: Implementace A: Implementace B: 2 (10 6 ) 2 instr. 10 9 instr./s 50 (10 6 )log(10 6 )instr. 10 7 instr./s =2000s 100s Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 18/ 42

Příklad Program zpracovává vstup velikosti n. Předpokládejme, že pro vstup velikosti n provede f (n) operací, a že provedeníjednéoperacetrvá1 µs(10 6 s). n f (n) 20 40 60 80 100 200 500 1000 n 20µs 40µs 60µs 80µs 0.1ms 0.2ms 0.5ms 1ms nlogn 86µs 0.213ms 0.354ms 0.506ms 0.664ms 1.528ms 4.48ms 9.96ms n 2 0.4ms 1.6ms 3.6ms 6.4ms 10ms 40ms 0.25s 1s n 3 8ms 64ms 0.216s 0.512s 1s 8s 125s 16.7min. n 4 0.16s 2.56s 12.96s 42s 100s 26.6min. 17.36hod. 11.57dní 2 n 1.05s 12.75dní 36560let 38.3 10 9 let 40.1 10 15 let n! 1.85 10 6 let 6.2 10 35 let Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 19/ 42

Asymptotická notace Při analýze algoritmů většinou není potřeba spočítat počet provedených operací(resp. čas jejich provedení) přesně. Používá se asymptotická notace, která vyjadřuje odhad rychlosti růstu funkce, přičemž jsou zanedbány konkrétní konstanty a méně významné členy: Např.místo35n 2 +732n +2378pracujemesvýrazemO(n 2 ). Výhoda asymptotické notace: Výrazně zjednodušuje analýzu, výsledek nezávisí na detailech konkrétní implementace. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 20/ 42

Datové struktury Důležitou součástí studia algoritmů je zkoumání různých datových struktur a analýza složitosti jednotlivých operací prováděných na těchto datových strukturách(vkládání, odstraňování, vyhledávání prvků). Pole: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Seznam: Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 21/ 42

Datové struktury(pokračování) Hashovací tabulka: Strom: Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 22/ 42

Efektivní algoritmy Obecně jsou ze efektivní algoritmy považovány ty, jejichž časová složitost jeomezenapolynomem,tj.o(n k ),kdekjekonstanta. O(n),O(n 2 ),O(n 3 ),O(n 4 ),... Takovým algoritmům se říká polynomiální algoritmy. Pokudjesložitostnapř.2 n,2 2n,2 22n,...,pakalgoritmusnenípolynomiální. Algoritmům,kterémajísložitost2 O(nk) seříkáexponenciálníalgoritmy. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 23/ 42

Obtížné problémy Otázka: Existuje pro každý problém efektivní(polynomiální) algoritmus, který ho řeší? Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 24/ 42

Obtížné problémy Otázka: Existuje pro každý problém efektivní(polynomiální) algoritmus, který ho řeší? Odpověď: Ne, existují problémy, pro které se dá dokázat, že neexistuje žádný efektivní algoritmus, který by daný problém řešil. Dokonce existují problémy, pro které se dá dokázat, že neexistuje žádný (ani neefektivní) algoritmus, který by daný problém řešil. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 24/ 42

Neexistence algoritmů Námitka: Jak dokázat, že něco neexistuje? Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 25/ 42

Neexistence algoritmů Námitka: Jak dokázat, že něco neexistuje? Odpověď: Sporem. Předpokládáme, že to existuje a ukážeme, že z toho vyplývá nějaký závěr, který je ve zjevném rozporu se skutečností(typicky ukážeme, že něco musí být současně pravda i nepravda). Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 25/ 42

Příklad obtížného problému Problém Vstup: Uzavřená aritmetická formule vytvořená ze symbolů +, =,,,,,, (, ),proměnnýchaceločíselnýchkonstant. Otázka: Je tato formule pravdivá v oboru přirozených čísel? Příklad vstupu: x y z((x +y =z) (y +5 =x)) Protentoproblémjeznámalgoritmussesložitostí2 22O(n).Současněbylo dokázáno, že jakýkoliv algoritmus řešící tento problém má složitost minimálně2 2cn. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 26/ 42

Příklad algoritmicky neřešitelného problému Problém Vstup: Uzavřená aritmetická formule vytvořená ze symbolů +,, =,,,,,, (, ),proměnnýchaceločíselnýchkonstant. Otázka: Je tato formule pravdivá v oboru přirozených čísel? Příklad vstupu: x y z((x y =z) (y +5 =x)) Tento problém je algoritmicky neřešitelný(u rozhodovacích problémů se používá též pojem algoritmicky nerozhodnutelný). Úzce souvisí s Gödelovou větou o neúplnosti. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 27/ 42

Další příklad nerozhodnutelného problému Problém Vstup: Počítačový program a nějaká jeho vstupní data. Otázka: Zastaví se někdy tento program, když dostane na vstup tato data? Idea důkazu nerozhodnutelnosti: Předpokládejme existenci programu H, který řeší tento problém. Můžeme ho snadno upravit na podprogram H (p,v),kterývrací Ano nebo Ne jakonávratovouhodnotu.... Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 28/ 42

Další příklad nerozhodnutelného problému(pokračování)... VytvořímenovýprogramD:VezmesvůjvstupxazavoláH jakoh (x,x). PokudH vrátí Ano,Dskočídonekonečnésmyčky. PokudH vrátí Ne,Dsezastaví. ZastavíseprogramDnebone,kdyžmupředložímejakovstupjehovlastní kód? Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 29/ 42

Třídy problémů Některé problémy jsou těžší než jiné. Při posuzování obtížnosti problémů se ukázalo jako užitečné rozdělit problémy do tříd složitosti, např.: PTIME problémy řešitelné v polynomiálním čase PSPACE problémy řešitelné s polynomiálním množstvím paměti EXPTIME problémy řešitelné v exponenciálním čase EXPSPACE problémy řešitelné s exponenciálním množstvím paměti... Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 30/ 42

Třída NPTIME Jednou z nejdůležitějších tříd je třída NPTIME. Třída NPTIME: Do třídy NPTIME patří rozhodovací problémy, pro které existuje polynomiální algoritmus, který ověří správnost nalezeného řešení. Přesnějiřečeno,pokudjeodpověď Ano,existujesvědek,který dosvědčuje,žeodpověďje Ano,kteréhojemožnévpolynomiálnímčase otestovat,žetomutakskutečněje.pokudjeodpověď Ne,žádnýtakový svědek neexistuje. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 31/ 42

Příklad problému z NPTIME Problém Vstup: Popis mapy(seznam států a informace který stát sousedí skterým)ačíslok. Otázka:Jemožnéstátyobarvitkbarvamitak,abyžádnédva sousední státy neměly stejnou barvu? Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 32/ 42

Příklad problému z NPTIME Problém Vstup: Popis mapy(seznam států a informace který stát sousedí skterým)ačíslok. Otázka:Jemožnéstátyobarvitkbarvamitak,abyžádnédva sousední státy neměly stejnou barvu? Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 32/ 42

Pvs.NP Jeden z největších otevřených problémů teoretické informatiky: Otevřený problém: JeP =NP? Pozn.: Třídy PTIME a NPTIME bývají také označovány stručněji P a NP. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 33/ 42

NP-úplné problémy Důležitou podtřídou třídy NPTIME jsou tzv. NP-úplné problémy. Definice Problém P je NP-těžký, jestliže platí, že libovolný problém ze třídy NPTIME je možné v polynomiálním čase redukovat na problém P. Definice Problém P je NP-úplný, jestliže je NP-těžký a současně sám patří do třídy NPTIME. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 34/ 42

NP-úplné problémy(pokračování) NP-úplné problémy jsou důležité, protože: Kdyby alespoň jeden z nich byl řešitelný v polynomiálním čase, všechny problémy z NPTIME by byly řešitelné v polynomiálním čase. Pokud v NPTIME existuje alespoň jeden problém, který není řešitelný v polynomiálním čase, pak žádný z NP-úplných problémů není řešitelný v polynomiálním čase. Velké množství problémů, které se objevují v praxi v různých oblastech informatiky, je NP-úplných nebo NP-těžkých. To, že NP-úplné problémy nelze řešit v polynomiálním čase je podmínkou nutnou(nikoli však postačující) pro to, aby existovaly šifrovací algoritmy, které by nebyly snadno prolomitelné. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 35/ 42

NP-úplné problémy(pokračování) Někdydvaproblémymohouvypadatpodobně,apřitomjedenznichje řešitelný v polynomiálním čase, zatímco druhý je NP-úplný. Problém 1 Vstup: Popis měst a silnic. Výstup: Existuje okružní cesta, na které projedeme každou silnici právě jednou? Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 36/ 42

NP-úplné problémy(pokračování) Problém 2 Vstup: Popis měst a silnic. Výstup: Existuje okružní cesta, na které projedeme každé město právě jednou? Problém1jevPTIME. Problém 2 je NP-úplný. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 37/ 42

Jak řešit těžké problémy? Pokud pro daný problém neexistuje efektivní algoritmus, máme následující možnosti: 1 Exponenciální algoritmy použitelné jen na malé instance. 2 Aproximační řešení použitelné jen pro optimalizační problémy. Najdeřešení,kteréjeoněcohoršínežoptimum. 3 Pravděpodobnostní(randomizované) algoritmy najde rychle řešení, ale řešení je s určitou pravděpodobností špatně. 4 Speciální případy soutředit se jen na některé speciální případy instancí, neřešit problém v plné obecnosti. 5 Heuristiky postup, který najde řešení rychle ve většině rozumných případů,nenívšakzaručenoževždy. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 38/ 42

Randomizovaný algoritmus Prvočíselnost Vstup: Přirozené číslo p. Otázka: Je p prvočíslo? Teprveodroku2003jeznámpolynomiálníalgoritmus(O(n 12+ε ),později oněcozlepšen). VpraxijepoužívánrandomizovanýalgoritmussesložitostíO(n 3 ): Pokudpjeprvočíslo,vrátívždyodpověď Ano. Pokudpneníprvočíslo,jepravděpodobnostodpovědi Ne minimálně 50%, ale existuje až 50% šance, že program vrátí chybnou odpověď Ano. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 39/ 42

Randomizovaný algoritmus(pokračování) Program můžeme volat opakovaně(k krát): Pokudprogramvrátíalespoňjednouodpověď Ne,vímena100%, že p není prvočíslo. Pokudprogramvrátípokaždé Ano,jepravděpodobnosttoho,žep neníprvočíslo,menšínež2 k. Když k = 100, je pravděpodobnost chyby zanedbatelně malá. Poznámka: Lze například odvodit, že pravděpodobnost toho, že počítač budezasaženběhemdanémikrosekundymeteoritem,jenejméně2 100 za předpokladu,žekaždých1000letjemeteoritemzničenoalespoň100m 2 zemského povrchu. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 40/ 42

Testování prvočíselnosti Pro číslo p hledáme svědka složenosti. Svědka vybíráme náhodně z množiny potenciálních svědků, což je množina Využívá se: {1,2,3,4,...,p 1} Malá Fermatova věta: Pokudpjeprvočíslo,pakprokaždéatakové,že1 a<p,platí (a p 1 modp) =1 Poznámka:Hodnotu (a p 1 modp)jemožnéspočítatvpolynomiálním čase. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 41/ 42

Testování prvočíselnosti(pokračování) Pokudzjistíme,žepronějakéaje (a p 1 modp) 1,ječísloasvědkem složenosti p. Pro velkou většinu složených čísel alespoň jedna polovina všech čísel a vintervalu1,...,p 1splňujenerovnost (a p 1 modp) 1. Poznámka:Existujíivšakisloženáčísla,prokterájetakovýchamálo (jentaa,kdenejvětšíspolečnýdělitelspjevětšínežjedna). Proto se v algoritmu využívá ještě následující tvrzení: Věta: Jestliže p je liché prvočíslo, pak rovnice (x 2 modp) =1 mávintervalu {1,2,...,p 1}právědvěřešení:x =1,x =p 1. Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 42/ 42