66
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

Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmy a výpočetní složitost

Zdeněk Sawa

Katedra informatiky, FEIVysoká š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

Page 2: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Co je to algoritmus?

AlgoritmusAlgoritmus je mechanický postup skládající se z nějakých jednoduchýchelementá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

Page 3: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Problémy

ProblémV 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ý je vztah mezi vstupy a výstupy

vstupy výstupy

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 3 / 42

Page 4: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Příklad problému

ProblémVstup: Seznam měst a silnic spojujících tato města.

U každé silnice je uvedeno, z kterého města do kterého vede,a jaká je její délka (v km).Dále pak dvě města ze seznamu měst – označme je město Aa město B.

Výstup: Nejkratší cesta z města A do města B.

30

29

25

37

15

28

17

3118

1421

20

17

34

22

41

23 18

A

B

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 4 / 42

Page 5: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Další příklady problémů

Vyhledávání výskytů slova v textuVstup: Text T a slovo S .

Výstup: Seznam všech pozic, na kterých se v textu T vyskytujeslovo S .

PrvočíselnostVstup: Přirozené číslo n.

Výstup: „Anoÿ pokud je n prvočíslo, „Neÿ v opačném pří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

Page 6: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Rozhodovací a optimalizační problémy

Situace, kdy množina výstupů je {„Anoÿ, „Neÿ} je poměrně častá.Takovým problémům se říká rozhodovací problémy.

PrvočíselnostVstup: 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ímitakové, 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

Page 7: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Instance problému

Instance problémuKonkrétní vstup z množiny možných vstupů problému se nazývá instanceproblému.

Příklad 1: Text „010001001010100101100101ÿ a slovo „1011001ÿ jeinstancí 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

Page 8: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Řešení problémů

Řešení problémuAlgoritmus řeší daný problém, když:1 Se pro libovolný vstup daného problému (libovolnou instanci) pokonečném počtu kroků zastaví.

2 Vyprodukuje výstup z množiny možných výstupů, který vyhovujepodmí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

Page 9: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Doba výpočtu

Počítače pracují rychle (řádově miliardy operací za sekundu), ovšem nenekoneč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ýchimplementací téhož algoritmu) trvat různou dobu.Tato doba závisí mimo jiné 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í frekvenciprocesoru)

. . .

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 9 / 42

Page 10: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Posuzování efektivnosti algoritmů

Přirozené otázky:

Jak závisí doba běhu programu na použitém algoritmu?

Který z algoritmů, 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

Page 11: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Velikost vstupu

Pokud známe všechny potřebné detaily můžeme dobu běhu programu prodaný 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ův textu a ve slově, počet bitů v binární reprezentaci čísla apod.

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

Page 12: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Efektivnost algoritmů

U daného algoritmu zkoumáme, jak závisí doba běhu programu na velikostivstupu, tj. jak dlouho běží program pro vstup velikosti n.

Časová složitostFunkce, která vyjadřuje závislost doby běhu programu na velikosti vstupuse 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

Page 13: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Příklad: třídění

Problém: TříděníVstup: Posloupnost n prvků a1, a2, . . . , an.

Výstup: Prvky a1, a2, . . . , an seřazené od nejmenšího po nejvě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

Page 14: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

31 41 59 26 41 58

– 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

Page 15: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

31 41 59 26 41 58

– 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

Page 16: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

31 41 59 26 41 58

– 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

Page 17: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

31 41 59 26 41 58

– 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

Page 18: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

31 41 59 26 41 58

– 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

Page 19: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

31 41 26 59 41 58

– 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

Page 20: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

31 26 41 59 41 58

– 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

Page 21: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

26 31 41 59 41 58

– 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

Page 22: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

26 31 41 59 41 58

– 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

Page 23: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

26 31 41 41 59 58

– 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

Page 24: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

26 31 41 41 59 58

– 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

Page 25: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

26 31 41 41 58 59

– 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

Page 26: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

26 31 41 41 58 59

– 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

Page 27: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 1 – třídění přímým vkládáním

26 31 41 41 58 59

– 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

=12n2 −

12n

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 14 / 42

Page 28: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

34 42 58 61

10 11 53 67=⇒

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 29: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

34 42 58 61

11 53 67=⇒ 10

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 30: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

34 42 58 61

53 67=⇒ 10 11

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 31: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

42 58 61

53 67=⇒ 10 11 34

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 32: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

58 61

53 67=⇒ 10 11 34 42

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 33: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

58 61

67=⇒ 10 11 34 42 53

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 34: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

61

67=⇒ 10 11 34 42 53 58

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 35: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

67=⇒ 10 11 34 42 53 58 61

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 36: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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 operacen kroků.

=⇒ 10 11 34 42 53 58 61 67

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 15 / 42

Page 37: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Algoritmus 2 – Merge Sort (pokračování)

Vstup: 58, 42, 34, 61, 67, 10, 53, 11

58 42 34 61 67 10 53 11

42 58 34 61 10 1167 53

34 42 6158 10 11 53 67

10 11 34 42 67615853

log2 n

n

Celkový počet operací: n log2 n

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 16 / 42

Page 38: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Porovnání dvou implementací

Je třeba setřídit 106 prvků.

Implementace A:

Použito třídění přímým vkládánímRychlý počítač: 109 operací za sekunduEfektivní implementace: 2n2 operací

Implementace B:

Použit merge sortPomalý počítač: 107 operací za sekunduNeefektivní implementace: 50n log n operací

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 17 / 42

Page 39: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Porovnání dvou implementací (pokračování)

Setřídění 106 prvků vyžaduje:

Implementace A:2 · (106)2 instr.109 instr./s

= 2000 s

Implementace B:50 · (106) log(106) instr.

107 instr./s≈ 100 s

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 18 / 42

Page 40: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Příklad

Program zpracovává vstup velikosti n.Předpokládejme, že pro vstup velikosti n provede f (n) operací, a žeprovedení jedné operace trvá 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

n log n 86µs 0.213ms 0.354ms 0.506ms 0.664ms 1.528ms 4.48ms 9.96ms

n2 0.4ms 1.6ms 3.6ms 6.4ms 10ms 40ms 0.25 s 1 s

n3 8ms 64ms 0.216 s 0.512 s 1 s 8 s 125 s 16.7min.

n4 0.16 s 2.56 s 12.96 s 42 s 100 s 26.6min. 17.36hod. 11.57dní

2n 1.05 s 12.75dní 36560 let 38.3·109 let 40.1·1015 let – – –

n! 1.85·106 let 6.2·1035 let – – – – – –

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 19 / 42

Page 41: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Asymptotická notace

Při analýze algoritmů většinou není potřeba spočítat počet provedenýchoperací (resp. čas jejich provedení) přesně.

Používá se asymptotická notace, která vyjadřuje odhad rychlosti růstufunkce, přičemž jsou zanedbány konkrétní konstanty a méně významnéčleny:

Např. místo 35n2 + 732n + 2378 pracujeme s výrazem O(n2).

Výhoda asymptotické notace: Výrazně zjednodušuje analýzu, výsledeknezá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

Page 42: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Datové struktury

Důležitou součástí studia algoritmů je zkoumání různých datovýchstruktur a analýza složitosti jednotlivých operací prováděných na těchtodatový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

Page 43: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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

Page 44: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Efektivní algoritmy

Obecně jsou ze efektivní algoritmy považovány ty, jejichž časová složitostje omezena polynomem, tj. O(nk), kde k je konstanta.

O(n),O(n2),O(n3),O(n4), . . .

Takovým algoritmům se říká polynomiální algoritmy.

Pokud je složitost např. 2n, 22n, 22

2n

, . . ., pak algoritmus není polynomiální.

Algoritmům, které mají složitost 2O(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

Page 45: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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

Page 46: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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

Page 47: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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

Page 48: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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

Page 49: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Příklad obtížného problému

ProblémVstup: Uzavřená aritmetická formule vytvořená ze symbolů +, =, ∧,

∨, ¬, ∀, ∃, (, ), proměnných a celočíselných konstant.

Otázka: Je tato formule pravdivá v oboru přirozených čísel?

Příklad vstupu:

∀x∃y∀z((x + y = z) ∧ (y + 5 = x))

Pro tento problém je znám algoritmus se složitostí 222O(n)

. Současně bylodokázáno, že jakýkoliv algoritmus řešící tento problém má složitostminimálně 22

cn.

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 26 / 42

Page 50: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Příklad algoritmicky neřešitelného problému

ProblémVstup: Uzavřená aritmetická formule vytvořená ze symbolů +, ×,

=, ∧, ∨, ¬, ∀, ∃, (, ), proměnných a celočíselných konstant.

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ů sepouží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

Page 51: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Další příklad nerozhodnutelného problému

ProblémVstup: Počítačový program a nějaká jeho vstupní data.

Otázka: Zastaví se někdy tento program, když dostane na vstup tatodata?

Idea důkazu nerozhodnutelnosti: Předpokládejme existenci programu H,který řeší tento problém. Můžeme ho snadno upravit na podprogramH ′(p, v), který vrací „Anoÿ nebo „Neÿ jako návratovou hodnotu.. . .

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 28 / 42

Page 52: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Další příklad nerozhodnutelného problému (pokračování)

. . .Vytvoříme nový program D: Vezme svůj vstup x a zavolá H ′ jako H ′(x , x).

Pokud H ′ vrátí „Anoÿ, D skočí do nekonečné smyčky.

Pokud H ′ vrátí „Neÿ, D se zastaví.

Zastaví se program D nebo ne, když mu předložíme jako vstup jeho vlastníkód?

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 29 / 42

Page 53: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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

Page 54: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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é existujepolynomiální algoritmus, který ověří správnost nalezeného řešení.

Přesněji řečeno, pokud je odpověď „Anoÿ, existuje svědek, kterýdosvědčuje, že odpověď je „Anoÿ, kterého je možné v polynomiálním časeotestovat, že tomu tak skutečně je. Pokud je odpověď „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

Page 55: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Příklad problému z NPTIME

ProblémVstup: Popis mapy (seznam států a informace který stát sousedí

s kterým) a číslo k .

Otázka: Je možné státy obarvit k barvami tak, aby žádné dvasousední 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

Page 56: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Příklad problému z NPTIME

ProblémVstup: Popis mapy (seznam států a informace který stát sousedí

s kterým) a číslo k .

Otázka: Je možné státy obarvit k barvami tak, aby žádné dvasousední 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

Page 57: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

P vs. NP

Jeden z největších otevřených problémů teoretické informatiky:

Otevřený problém:Je P = 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

Page 58: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

NP-úplné problémy

Důležitou podtřídou třídy NPTIME jsou tzv. NP-úplné problémy.

DefiniceProblém P je NP-těžký, jestliže platí, že libovolný problém ze třídyNPTIME je možné v polynomiálním čase redukovat na problém P.

DefiniceProblém P je NP-úplný, jestliže je NP-těžký a současně sám patří do třídyNPTIME.

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 34 / 42

Page 59: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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ýchoblastech informatiky, je NP-úplných nebo NP-těžkých.

To, že NP-úplné problémy nelze řešit v polynomiálním čase jepodmí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

Page 60: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

NP-úplné problémy (pokračování)

Někdy dva problémy mohou vypadat podobně, a přitom jeden z nich jeřešitelný v polynomiálním čase, zatímco druhý je NP-úplný.

Problém 1Vstup: Popis měst a silnic.

Výstup: Existuje okružní cesta, na které projedeme každou silniciprávě jednou?

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 36 / 42

Page 61: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

NP-úplné problémy (pokračování)

Problém 2Vstup: Popis měst a silnic.

Výstup: Existuje okružní cesta, na které projedeme každé městoprávě jednou?

Problém 1 je v PTIME.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

Page 62: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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é je o něco horší 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řípadyinstancí, 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šak zaručeno že vždy.

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 38 / 42

Page 63: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Randomizovaný algoritmus

PrvočíselnostVstup: Přirozené číslo p.

Otázka: Je p prvočíslo?

Teprve od roku 2003 je znám polynomiální algoritmus (O(n12+ε), pozdějio něco zlepšen).

V praxi je používán randomizovaný algoritmus se složitostí O(n3):

Pokud p je prvočíslo, vrátí vždy odpověď „Anoÿ.

Pokud p není prvočíslo, je pravděpodobnost odpovědi „Neÿminimálně 50%, ale existuje až 50% šance, že program vrátí chybnouodpověď „Anoÿ.

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 39 / 42

Page 64: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Randomizovaný algoritmus (pokračování)

Program můžeme volat opakovaně (k krát):

Pokud program vrátí alespoň jednou odpověď „Neÿ, víme na 100%,že p není prvočíslo.

Pokud program vrátí pokaždé „Anoÿ, je pravděpodobnost toho, že pnení 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čbude zasažen během dané mikrosekundy meteoritem, je nejméně 2−100 zapředpokladu, že každých 1000 let je meteoritem zničeno alespoň 100m2

zemského povrchu.

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 40 / 42

Page 65: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

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

{1, 2, 3, 4, . . . , p − 1}

Využívá se:

Malá Fermatova věta:Pokud p je prvočíslo, pak pro každé a takové, že 1 ≤ a < p, platí

(ap−1 mod p) = 1

Poznámka: Hodnotu (ap−1 mod p) je možné spočítat v polynomiálnímčase.

Zdeněk Sawa (VŠB-TU Ostrava) Algoritmy a výpočetní složitost 12. prosince 2005 41 / 42

Page 66: Algoritmy a výpočetní složitost - vsb.czwiki.cs.vsb.cz/images/a/af/Algoritmy.pdfU každé silnice je uvedeno, z kterého města do kterého vede, a jaká je její délka (v km)

Testování prvočíselnosti (pokračování)

Pokud zjistíme, že pro nějaké a je (ap−1 mod p) 6= 1, je číslo a svědkemsloženosti p.

Pro velkou většinu složených čísel alespoň jedna polovina všech čísel av intervalu 1, . . . , p − 1 splňuje nerovnost (ap−1 mod p) 6= 1.

Poznámka: Existují i však i složená čísla, pro která je takových a málo(jen ta a, kde největší společný dělitel s p je vě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

(x2 mod p) = 1

má v intervalu {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