Vpoetn sloitost algoritm Jak mit dobu trvn algoritmu
Výpočetní složitost algoritmů
Jak měřit dobu trvání algoritmu • V časových jednotkách --- ne • V počtu jednoduchých operací • V počtu instrukcí Turingova stroje
Maximální limitní složitost algoritmu • Doba výpočtu závisí na velikosti vstupních dat, je funkcí jejich velikosti n→f(n) • Zajímá nás limitní složitost, složitost je z O(g(n)), pokud limn ∞f(n)/g(n) existuje. • Složitost je z Θ(g(n)), pokud limn ∞f(n)/g(n) existuje a není 0. • Může nás zajímat složitost maximální, či průměrná
Příklad: součet dvou vektorů • Délka vstupních dat n. • Potřebný počet operací sčítání je n • Potřebný počet instrukcí Turingova stroje je Θ(n).
Násobení matic • Čtvercové matice n x n • Potřebný počet operací je n 2. (2 n-1) • Složitost je Θ(n 3), přesněji Θ(n 3/2) • • A, B C, D kde S 1 = S 3 = S 5 = S 7 = E, F G, H (B (A A E – D) – C) (F – (C + S 1+S 2 -S 4+S 6 , S 4+S 5 S 6+S 7 , S 2 -S 3+S 5 -S 7 (G + H), (E + F), H), D). S 2 = (A + D) (E + H), S 4 = H (A + B), S 6 = D (G – E), • T(n) = (n ), kde = log 2 7 2, 81 < 3,
Hledání nejkratší cesty v grafu • Prozkoumáním všech cest (n!) • Dijskrův algoritmus (n 2)
Řazení posloupnosti podle velikosti • Přímým výběrem: (n 2) • Bublinkové třídění: (n 2) • Chytřejší algoritmy: (n. ln n)
Hledání minimální kostry grafu • Borůvkův algoritmus: potřebuji seřadit n 2 hran podle délky • Složitost (n 2. ln n 2) = (2. n 2. ln n) = (n 2. ln n)
- Slides: 8