Algoritmus je teoretický základ veškerého programování. Aby mohl být postup považován za algoritmus, musí splňovat několik základních vlastností:
Než programátor začne psát kód, často si algoritmus navrhne v jedné z těchto forem:
V informatice nás nezajímá jen to, zda algoritmus funguje, ale také jak je rychlý a kolik paměti spotřebuje. K tomu slouží tzv. Asymptotická složitost ($O$):
| Složitost | Název | Příklad | |
|---|---|---|---|
| $O(1)$ | Konstantní | Přístup k prvku v poli podle indexu. | |
| $O(\log n)$ | Logaritmická | Binární vyhledávání v seřazeném seznamu. | |
| $O(n)$ | Lineární | Prohledání neseřazeného seznamu prvek po prvku. | |
| $O(n | 2)$ | Kvadratická | Jednoduché třídicí algoritmy (např. Bubble Sort). |
V oblasti strojového učení se algoritmy liší tím, že se „učí“ z dat. Místo toho, aby programátor přesně popsal každý krok („pokud uvidíš uši, je to kočka“), algoritmus analyzuje tisíce obrázků a sám si vytvoří statistický model pro rozpoznání.
Špatně navržený algoritmus může fungovat na malém množství dat, ale při velkém objemu (Big Data) může trvat roky, než doběhne. Optimalizace algoritmu často přinese větší zrychlení než nákup dražšího hardwaru.
Zajímavost: Slovo „algoritmus“ vzniklo latinizací jména perského matematika z 9. století, který se jmenoval Al-Chorezmí. Ten položil základy algebry a systematického řešení rovnic.