View
11
Download
0
Category
Preview:
Citation preview
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
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.
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).
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“
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
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ů
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í
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;}
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
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).
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
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
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í
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í
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
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
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
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
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č.
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č.
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)
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)
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,. . .
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,. . .
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
Recommended