32
C2142 Návrh algoritmů pro přírodovědce 1. Od problému k algoritmu Tomáš Raček Jaro 2014

C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

C2142 Návrh algoritmů pro přírodovědce1. Od problému k algoritmu

Tomáš Raček

Jaro 2014

Page 2: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Organizace předmětu

Rozsah: 1/2/0

Přednáška: Po 16:00 - 16:50

Cvičení: nepovinná, 3 seminární skupiny

Ukončení: písemná zkouška – alespoň 60 % bodů pro ukončenízkouškou (zk), 40 % pro ukončení zápočtem (z)

Webová stránka:www.fi.muni.cz/˜xracek/c2142_spring2014/

Konzultace: po domluvě emailem

Page 3: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Sylabus I

I Od problému k algoritmu. Specifikace, korektnost.I Úvod do složitosti.I Základní datové struktury (spojový seznam, fronta, zásobník).

I Motivace k vyhledávání dat, řadicí algoritmy (binární půlení,Selection sort, Merge sort).

I Vyhledávací stromy, haldy (BST, Heap sort).I Hashování, indexy.

Page 4: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Sylabus II

I Základní pojmy teorie grafů, jejich reprezentace, metodyprohledávání (BFS, DFS).

I Nejkratší vzdálenosti (Dijkstra, Bellman-Ford,Floyd-Warshall).

I Kostry (Prim, Kruskal).

I Přístupy k řešení problémů (hrubá síla, hladové algoritmy,rozděl a panuj).

I Těžké problémy (TSP, SAT, P vs. NP).I Pokročilé datové struktury (AVL, B+ stromy, Union-Find).

Page 5: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

O čem to bude

I pochopení základních principů návrhu algoritmů a datovýchstruktur

I prezentace nejpoužívanějších generických algoritmůI důraz na aplikovatelnostI snaha „dorozumět se s informatiky“

Page 6: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

O čem to nebude

I výuka programování v konkrétním jazyceI formální odvozování korektnosti, složitosti

→ FI:IB001 Algoritmy a datové struktury I

I numerické výpočty, řešení rovnic

→ FI:PA081 Programování numerických výpočtů

I optimalizace pro konkrétní architektury (např. CUDA)

→ FI:PV197 GPU Programming

Page 7: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Problém, program, algoritmus

Příklady problémů:Co je odmocnina z 27? Bude zítra pršet? Co si vzít na sebe dodivadla?

Algoritmus – funkce mezi vstupem a výstupem reprezentovánakonečným způsobem v nějakém formalismu, typickyprogramovacím jazyce

Ne každý problém lze algoritmicky řešit.

Program – implementace algoritmu × „balík“ algoritmů

Page 8: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Výpočetní paradigmataParadigma (vzor, pojetí) udává způsob vyjádření algoritmu.

I imperativníI program vyjádřen jako posloupnost kroků

I deklarativníI co se má vykonat, ne jakI př. funkcionální, logické

I strukturovanéI kód rozdělen do funkcí, procedur

I objektovéI „svět“ modelován jako systém komunikujících objektů

I sekvenční × paralelní

Page 9: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Imperativní paradigma

I výpočet je posloupnost jednoduchých příkazůI v proměnných je udržován stav výpočtuI formální definice např. přes Turingův stroj

int factorial(int n) {int fact = 1;for(int i = 1; i <= n; i++)

fact *= i;

return fact;}

Page 10: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Funkcionální paradigma

I výpočet je posloupnost redukčních kroků (= elementárníchúprav)

I výsledek je výraz, který nelze zjednodušitI nemá proměnné v „klasickém“ pojetí

fact 0 = 1fact n = n * fact(n - 1)

Příklad:fact(2) → 2 * fact(1) → 2 * 1 * fact(0) → 2 * 1 * 1 → 2 * 1 → 2

Page 11: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Logické paradigma

I automatické uvažování nad znalostmiI aplikace odvozovacích pravidel na fakta

% faktyotec(milan,dana).otec(milan,petr).matka(pavla,dana).matka(pavla,petr).

% pravidlosourozenci(X,Y):- otec(O,X), otec(O,Y),\X\=Y, matka(M,X), matka(M,Y).

Page 12: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Algoritmus z praxe

Page 13: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Kde se pohybujeme

I jednoduchý model vývoje SW – vodopád

Page 14: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Specifikace, korektnostSpecifikace

I představuje „zadání“I funkční × nefunkční požadavky

Příklady:I přirozený jazyk

I možnost dezinterpretaceI strukturovaná angličtinaI formální specifikace

I vstupní podmínka 𝜙, výstupní podmínka 𝜓I umožňuje provádět matematické důkazyI příklad: 𝜙(x , y) ≡ x , y ∈ N, 𝜓(x , y , z) ≡ z = x y , z ∈ N

Korektnost:I ověření, že algoritmus odpovídá specifikaciI nerozhodnutelný problém

Page 15: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Chyby v běžném SW

Page 16: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Ariane 5 (1996) I

I nosná raketa ESA (European Space Agency)I software z Ariane 4I 5krát vyšší zrychlení při startu než předchůdce

Page 17: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Ariane 5 (1996) II

I hodnoty se dostaly mimo očekávaný rozsahI exploze 40 sekund po startu

Page 18: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Ariane 5 (1996) II

I hodnoty se dostaly mimo očekávaný rozsahI exploze 40 sekund po startu

Page 19: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Mars Climate Orbiter (1999)

I průzkum atmosféry MarsuI měl obíhat ve výšce 150 km nad povrchemI klesl ale do výšky 57 km, kde byl zničen

I software v sondě používal metrický systém, řídicí software naZemi jednotky imperiální

Page 20: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Mars Climate Orbiter (1999)

I průzkum atmosféry MarsuI měl obíhat ve výšce 150 km nad povrchemI klesl ale do výšky 57 km, kde byl zničen

I software v sondě používal metrický systém, řídicí software naZemi jednotky imperiální

Page 21: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Therac-25 (1985)

I přístroj pro léčbu ozařovánímI dva režimy:

I slabý výboj po několik sekundI násobný výboj o velké intenzitě

I při rychlém zadávání příkazů z klávesnice došlo k souběhuI 5 lidí po léčbě zemřelo, protože bylo ozářeno silnou dávkou po

několik sekund

Page 22: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Therac-25 (1985)

I přístroj pro léčbu ozařovánímI dva režimy:

I slabý výboj po několik sekundI násobný výboj o velké intenzitě

I při rychlém zadávání příkazů z klávesnice došlo k souběhuI 5 lidí po léčbě zemřelo, protože bylo ozářeno silnou dávkou po

několik sekund

Page 23: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Testování

I levnéI rychléI často používané

Co testovat?

I obvyklý běhI krajní hodnotyI zakázané hodnoty

Nedostatky:I nelze otestovat každou konfiguraci → pokud se chyba

neprojeví, neznamená to, že neexistuje

Page 24: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Testování

I levnéI rychléI často používané

Co testovat?I obvyklý běhI krajní hodnotyI zakázané hodnoty

Nedostatky:I nelze otestovat každou konfiguraci → pokud se chyba

neprojeví, neznamená to, že neexistuje

Page 25: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Souběh – bankovní účet

Zadání:I jeden účet, dva bankéři, kteří jsou schopni s ním manipulovatI počáteční stav účtu: 1 000 KčI potřeba zaplatit nájem: 2 000 KčI výplata: 10 000 Kč

Problém:I bankéř A vezme současnou hodnotu 1 000 Kč a přičte k ní

10 000 KčI bankéř B vezme současnou hodnotu 1 000 Kč a odečte od ní

2 000 KčI bankéř A uloží výsledek operace 11 000 KčI bankéř B uloží výsledek operace −1 000 Kč

Koncový stav účtu: −1 000 Kč.

Page 26: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Souběh – bankovní účet

Zadání:I jeden účet, dva bankéři, kteří jsou schopni s ním manipulovatI počáteční stav účtu: 1 000 KčI potřeba zaplatit nájem: 2 000 KčI výplata: 10 000 Kč

Problém:I bankéř A vezme současnou hodnotu 1 000 Kč a přičte k ní

10 000 KčI bankéř B vezme současnou hodnotu 1 000 Kč a odečte od ní

2 000 KčI bankéř A uloží výsledek operace 11 000 KčI bankéř B uloží výsledek operace −1 000 Kč

Koncový stav účtu: −1 000 Kč.

Page 27: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Uváznutí – večeřící filozofové

I aby filozof mohl začít jíst, potřebuje mít obě vidličkyI pokud alespoň jednu nemá, musí čekat

Patologický stavI v jednu chvíli uchopí každý filozof pravou vidličkuI dochází k uváznutí (deadlock)

Page 28: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Uváznutí – večeřící filozofové

I aby filozof mohl začít jíst, potřebuje mít obě vidličkyI pokud alespoň jednu nemá, musí čekat

Patologický stavI v jednu chvíli uchopí každý filozof pravou vidličkuI dochází k uváznutí (deadlock)

Page 29: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Formální verifikace I

I existují situace, kdy testování není dostatečnéI např. souběh, uváznutí se nemusí vždy projevit

I poskytuje stejnou míru jistoty jako matematický důkazI použitelné pouze pro velmi malé systémyI garance vlastností

I kreditní karty, letecké systémy,. . .

Page 30: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Formální verifikace I

I existují situace, kdy testování není dostatečnéI např. souběh, uváznutí se nemusí vždy projevit

I poskytuje stejnou míru jistoty jako matematický důkazI použitelné pouze pro velmi malé systémyI garance vlastností

I kreditní karty, letecké systémy,. . .

Page 31: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Formální verifikace II

I ověřujeme, zda systém splňuje danou vlastnostI poskytuje protipříklad

Model systému:I konečněstavový automat

I uzly - stavy systémuI hrany - přípustné přechody mezi stavy

Vlastnost systému:I vyjádřena jako formule temporální logiky

Page 32: C2142 Navrh algoritmu pro prirodovedce - 1. Od problemu k ...xracek/c2142_spring2014/01-introduction.pdf · SylabusII I Základnípojmyteoriegrafů,jejichreprezentace,metody prohledávání(BFS,DFS)

Zdroje

I FI:IB002 Návrh algoritmů I, jaro 2009I FI:PB007 Analýza a návrh systémů, podzim 2010I FI:IV113 Úvod do validace a verifikace, podzim 2011