You are on page 1of 11

1 Algoritmus

Matěj Mezera
Původ
• Podle arabského matematika Abú Abd Alláh
Muhammad Ibn Músá al-Chórezmí Abú Dža'far
(9.stol) (zabýval se aritmetikou a algebrou)

Obr 1.
Stránka ze spisu Al-
Kitab al-mukhtasar fi
hisab al-jabr wa-l-
muqabala.

2
Algoritmus
• popis práce
• Algoritmus je sekvence instrukcí na vykonání. Je to schématický
postup řešení určitého druhu problému pomocí konečného množství
přesně definovaných kroků.

• Např. počítačový program, návod/postup, kuchyňský recept

3
Příklad: návod, jak
rozsvítit žárovku

• Vývojový diagram

4
Vlastnosti
• Konečnost:
• Algoritmus každý vstup vyřeší v konečném počtu jednotlivých kroků.
• Obecnost:
• Algoritmus neřeší jeden konkrétní problém, ale obecnou třídu obdobných problémů
• Určitost (Determinovanost):
• Každý krok algoritmu je jednoznačně definovaný, pro každý vstup dostaneme vždy
stejný výstup (nehraje zde roli náhoda).
• Korektnost:
• Algoritmus skončí libovolný (korektní) vstup správným výsledkem
• Vstup a výstup:
• Zadání a odpověď

5
Efektivita
• Jestliže, každý krok trvá určité množství času, efektivita určuje, jak
dlouho bude trvat, než algoritmus dojde k výsledku.
• Efektivitu ovlivňuje časová/paměťová složitost algoritmu, složitost
vstupu, programovací jazyk, operační systém, hardware
• Časová složitost algoritmu je funkce T:N→N, kde T(n) je (maximální)
počet kroků, které provede algoritmus běžící na datech o velikosti n (pro
všechny vstupy velikosti n).
• Asymptotickou časovou složitost (časová složitost pro velká n) značíme
O(…), kde … je největší člen (bez konstanty) funkce T(n) pro n → ∞
• Obvykle je nejvyšším členem mocnina n nebo logn
6
Optimalizace
• Optimalizace je modifikace (změna, vylepšení, rozšíření) algoritmu,
která vede k jeho vyšší efektivitě (menší časové a/nebo paměťové
složitosti)

7
Příklad: třídící algoritmus
• Random sort (stupid sort): prvky seřadíme náhodně a poté ověříme
pořadí, opakujeme dokud pořadí nesedí
• Nejhorší časová složitost: O(∞), je tedy velmi neefektivní
• pozn. průměrná časová složitost je O((n+1)!) a nejmenší O(n)
• OPTIMALIZACE: Bubble sort: n-krát porovnáme všechny sousední
dvojice prvků a případně je prohodíme
• Časová složitost: O(n2)
• Konstantní paměťová složitost (stejně jako random sort)

8
Další optimalizace
• Např. Heap sort: pomocí haldy třídí prvky s nejlepší obecnou časovou
složitostí O() a konstantní paměťovou složitostí

• Další optimalizace: jsou možné ve speciálních případech


• Např. Counting sort: dokonce lineární časová složitost O(n), ale
funguje pouze pro stanovený interval celých čísel

9
Třída složitosti úloh a Turingův stroj
• Turingův stroj (model počítače)
• nekonečná páska (rozdělená do buňek)
• řídící jednotka se může nacházet v konečně mnoha stavech
• hlava čte a přepisuje záznamy
• Třída P: existuje řešení v polynomálním čase
• Třída NP: existuje nedeterministické řešení v polynomiálním čase

• Turingovým strojem nejsou např. neuronové sítě nebo kvantový


počítač, který využívá jevů kvantové mechaniky

10
Zdroje
• Obrázek1: Autor: Muhammad ibn Musa al-Khwarizmi – John L.
Esposito. The Oxford History of Islam. Oxford University Press. ISBN
0195107993., Volné dílo,
https://commons.wikimedia.org/w/index.php?curid=716423
• Obrázek2: Autor: Bruce Shorty na projektu Wikipedie v jazyce čeština
– Na Commons přeneseno z cs.wikipedia., Volné dílo,
https://commons.wikimedia.org/w/index.php?curid=9024401

11

You might also like