Popis:
1. Pojem algoritmus a jeho složitost
Definice algoritmu, časová a paměťová složitost, příklady
Definice algoritmu
- popis určitého postupu, návodu, posloupnost kroků, které vedou k řešení úlohy
- hromadný, deterministický, rezultantní, elementární a finitivní
Složitost
- ukazuje trend růstu času (paměti) s rostoucí vstupní množinou
- závislost doby výpočtu (velikosti paměti) potřebné pro výpočet na počtu zpracovávaných údajů
- časová významnější, než paměťová - vzhledem k dnešním pamětem počítačů
Exponenciální
- prakticky využita pro ochranu šifrováním, jinak nelze reálně použít
Asymptotická - odhad
- zajímá nás hlavně chování funkce pro dostatečně velkou množinu, ne absolutní rychlost
- Ο (horní odhad), Ω (dolní odhad), Θ notace
- Často používáme řády funkcí, př. logaritmická složitost O (log n)
- Nejhorší, průměrná, přesná (na imaginárním počítači)
Optimalizace
- Vyjmutí přes cyklus, optimalizace těla cyklu, využíván předchozích výsledků, využívání cache
Metody návrhu algoritmu
Neexistuje všeobecný návod pro tvorbu algoritmů, jedná se o tvořivý proces → nelze automatizovat.
Existují však známé strategie (abstrakce, dekompozice) a paradigmata pro jejich tvorbu.
Postup
1. Formulace problému + definice vstupních a výstupních dat
2. Stanovení cíle
3. Volba strategie
4. Navržení postupu
5. Zápis vytvořených postupů
6. Ověření správnosti
Klasifikace algoritmu
- Podle implementace
o Rekurzivní vs. iterační, Sériové vs. paralelní, Deterministické vs. náhodné, Přesné vs. přibližné
- Podle paradigmatu
o Rozděl a panuj, Sniž a panuj, Žravé metody, Redukce, Dynamické programování, Heuristické algoritmy
Klíčová slova:
algoritmus
grafové algoritmy
pravděpodobnost
entropie
synraktická analýza
turingův stroj
Obsah:
- 1. Pojem algoritmus a jeho složitost
2. Základní datové struktury
3. Základní řadicí algoritmy
4. Binární stromy
5. Vyvažované a vícecestné stromy
6. Hašovací tabulky
7. Základní pojmy z teorie grafů
8. Procházení grafů
9. Grafové algoritmy I
10. Grafové algoritmy II
11. Zpracování textu
12. Neuronové sítě
13. Základní modely NS
14. Učení neuronové sítě
15. Učení neuronové sítě s učitelem
16. Učení bez učitele
17. Rekurentní NS
18. Fuzzy množina a fuzzy logika
19. Genetický algoritmus
20. Přírodou inspirované optimalizační algoritmy a jejich principy
21. Pravděpodobnost
22./24. Shannonova míra informace
23. Zdroj zpráv
25. Entropie zdroje zpráv
26. Konečný automat
27. Regulární jazyky
28. Bezkontextové gramatiky a jazyky
29. Syntaktická analýza a LL gramatiky (ručně)
30. Turingův stroj
31. Algoritmická řešitelnost