C2142 Návrh algoritmů pro přírodovědce 1. Od problému k algoritmu Tomáš Raček Jaro 2014
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 Od problému k algoritmu. Specifikace, korektnost. Úvod do složitosti. Základní datové struktury (spojový seznam, fronta, zásobník). Motivace k vyhledávání dat, řadicí algoritmy (binární půlení, Selection sort, Merge sort). Vyhledávací stromy, haldy (BST, Heap sort). Hashování, indexy.
Sylabus II Základní pojmy teorie grafů, jejich reprezentace, metody prohledávání (BFS, DFS). Nejkratší vzdálenosti (Dijkstra, Bellman-Ford, Floyd-Warshall). Kostry (Prim, Kruskal). Přístupy k řešení problémů (hrubá síla, hladové algoritmy, rozděl a panuj). Těžké problémy (TSP, SAT, P vs. NP). Pokročilé datové struktury (AVL, B+ stromy, Union-Find).
O čem to bude pochopení základních principů návrhu algoritmů a datových struktur prezentace nejpoužívanějších generických algoritmů důraz na aplikovatelnost snaha dorozumět se s informatiky
O čem to nebude výuka programování v konkrétním jazyce formální odvozování korektnosti, složitosti FI:IB001 Algoritmy a datové struktury I numerické výpočty, řešení rovnic FI:PA081 Programování numerických výpočtů 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 do divadla? Algoritmus funkce mezi vstupem a výstupem reprezentována konečným způsobem v nějakém formalismu, typicky programovacím jazyce Ne každý problém lze algoritmicky řešit. Program implementace algoritmu balík algoritmů
Výpočetní paradigmata Paradigma (vzor, pojetí) udává způsob vyjádření algoritmu. imperativní program vyjádřen jako posloupnost kroků deklarativní co se má vykonat, ne jak př. funkcionální, logické strukturované kód rozdělen do funkcí, procedur objektové svět modelován jako systém komunikujících objektů sekvenční paralelní
Imperativní paradigma výpočet je posloupnost jednoduchých příkazů v proměnných je udržován stav výpočtu 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 výpočet je posloupnost redukčních kroků (= elementárních úprav) výsledek je výraz, který nelze zjednodušit nemá proměnné v klasickém pojetí fact 0 = 1 fact n = n * fact(n - 1) Příklad: fact(2) 2 * fact(1) 2 * 1 * fact(0) 2 * 1 * 1 2 * 1 2
Logické paradigma automatické uvažování nad znalostmi aplikace odvozovacích pravidel na fakta % fakty otec(milan,dana). otec(milan,petr). matka(pavla,dana). matka(pavla,petr). % pravidlo sourozenci(x,y):- otec(o,x), otec(o,y),\ X\=Y, matka(m,x), matka(m,y).
Algoritmus z praxe
Kde se pohybujeme jednoduchý model vývoje SW vodopád
Specifikace, korektnost Specifikace představuje zadání funkční nefunkční požadavky Příklady: přirozený jazyk možnost dezinterpretace strukturovaná angličtina formální specifikace vstupní podmínka φ, výstupní podmínka ψ umožňuje provádět matematické důkazy příklad: φ(x, y) x, y N, ψ(x, y, z) z = x y, z N Korektnost: ověření, že algoritmus odpovídá specifikaci nerozhodnutelný problém
Chyby v běžném SW
Ariane 5 (1996) I nosná raketa ESA (European Space Agency) software z Ariane 4 5krát vyšší zrychlení při startu než předchůdce
Ariane 5 (1996) II
Ariane 5 (1996) II hodnoty se dostaly mimo očekávaný rozsah exploze 40 sekund po startu
Mars Climate Orbiter (1999) I I I průzkum atmosféry Marsu měl obíhat ve výšce 150 km nad povrchem klesl ale do výšky 57 km, kde byl zničen
Mars Climate Orbiter (1999) I I I I průzkum atmosféry Marsu měl obíhat ve výšce 150 km nad povrchem klesl ale do výšky 57 km, kde byl zničen software v sondě používal metrický systém, řídicí software na Zemi jednotky imperiální
Therac-25 (1985) přístroj pro léčbu ozařováním dva režimy: slabý výboj po několik sekund násobný výboj o velké intenzitě
Therac-25 (1985) přístroj pro léčbu ozařováním dva režimy: slabý výboj po několik sekund násobný výboj o velké intenzitě při rychlém zadávání příkazů z klávesnice došlo k souběhu 5 lidí po léčbě zemřelo, protože bylo ozářeno silnou dávkou po několik sekund
Testování levné rychlé často používané Co testovat?
Testování levné rychlé často používané Co testovat? obvyklý běh krajní hodnoty zakázané hodnoty Nedostatky: nelze otestovat každou konfiguraci pokud se chyba neprojeví, neznamená to, že neexistuje
Souběh bankovní účet Zadání: jeden účet, dva bankéři, kteří jsou schopni s ním manipulovat počáteční stav účtu: 1 000 Kč potřeba zaplatit nájem: 2 000 Kč výplata: 10 000 Kč
Souběh bankovní účet Zadání: jeden účet, dva bankéři, kteří jsou schopni s ním manipulovat počáteční stav účtu: 1 000 Kč potřeba zaplatit nájem: 2 000 Kč výplata: 10 000 Kč Problém: bankéř A vezme současnou hodnotu 1 000 Kč a přičte k ní 10 000 Kč bankéř B vezme současnou hodnotu 1 000 Kč a odečte od ní 2 000 Kč bankéř A uloží výsledek operace 11 000 Kč bankéř B uloží výsledek operace 1 000 Kč Koncový stav účtu: 1 000 Kč.
Uváznutí večeřící filozofové aby filozof mohl začít jíst, potřebuje mít obě vidličky pokud alespoň jednu nemá, musí čekat
Uváznutí večeřící filozofové aby filozof mohl začít jíst, potřebuje mít obě vidličky pokud alespoň jednu nemá, musí čekat Patologický stav v jednu chvíli uchopí každý filozof pravou vidličku dochází k uváznutí (deadlock)
Formální verifikace I existují situace, kdy testování není dostatečné např. souběh, uváznutí se nemusí vždy projevit
Formální verifikace I existují situace, kdy testování není dostatečné např. souběh, uváznutí se nemusí vždy projevit poskytuje stejnou míru jistoty jako matematický důkaz použitelné pouze pro velmi malé systémy garance vlastností kreditní karty, letecké systémy,...
Formální verifikace II ověřujeme, zda systém splňuje danou vlastnost poskytuje protipříklad Model systému: konečněstavový automat uzly - stavy systému hrany - přípustné přechody mezi stavy Vlastnost systému: vyjádřena jako formule temporální logiky
Zdroje FI:IB002 Návrh algoritmů I, jaro 2009 FI:PB007 Analýza a návrh systémů, podzim 2010 FI:IV113 Úvod do validace a verifikace, podzim 2011