Definícia
Algoritmus je konečná, usporiadaná postupnosť presne definovaných inštrukcií, ktorá rieši problém alebo dosahuje cieľ. Vždy, keď počítač vykoná nejakú úlohu — zoradí zoznam, nájde trasu, skomprimuje súbor — postupuje podľa algoritmu.
Algoritmy nie sú výhradne záležitosťou počítačov. Za algoritmus sa považuje každý presný, krok-za-krokom postup.
Analógia zo skutočného sveta: recept
Kuchynský recept je algoritmus:
- Predhrej rúru na 180 °C.
- Zmiešaj múku, cukor a maslo v mise.
- Pridaj vajcia a miešaj do hladka.
- Nalejte zmes do formy na pečenie.
- Peč 30 minút.
- Vyber z rúry a nechaj vychladnúť.
Rovnako ako počítačový algoritmus, recept má definovaný začiatok, sériu jednoznačných krokov a definovaný koniec (hotová torta).
Kľúčové vlastnosti algoritmu
Platný algoritmus musí spĺňať tieto vlastnosti:
| Vlastnosť | Význam |
|---|---|
| Konečnosť | Musí sa nakoniec zastaviť — nesmie bežať donekonečna |
| Určitosť | Každý krok je presne a jednoznačne definovaný |
| Vstup | Prijíma nula alebo viac vstupov |
| Výstup | Produkuje aspoň jeden výsledok |
| Efektívnosť | Každý krok je možné skutočne vykonať |
Algoritmus, ktorý sa nikdy nezastaví (nekonečná slučka bez podmienky ukončenia), nie je platným algoritmom, aj keby bol každý jednotlivý krok správny.
Jednoduchý príklad v pseudokóde
Tu je algoritmus, ktorý nájde najväčšie číslo v zozname:
DEFINUJ najdiMaximum(cisla):
max = cisla[0]
PRE kazde cislo V cisla:
AK cislo > max:
max = cislo
VRAT max
Krok za krokom:
- Začneme predpokladom, že prvé číslo je najväčšie.
- Prejdeme každé číslo v zozname.
- Ak je aktuálne číslo väčšie ako aktuálne maximum, aktualizujeme maximum.
- Po skontrolovaní každého čísla vrátime nájdené maximum.
Algoritmus vs. program
Algoritmus je myšlienka — logická postupnosť krokov. Program je konkrétna implementácia tejto myšlienky v programovacom jazyku. Ten istý algoritmus možno napísať v Pythone, Jave alebo v akomkoľvek inom jazyku; základná logika zostáva rovnaká.
Pred písaním akéhokoľvek kódu je dobrou praxou najprv navrhnúť algoritmus — v bežnom jazyku alebo pseudokóde. Tým oddelíme myslenie o riešení problému od detailov syntaxe konkrétneho jazyka.
Cvičné príklady
Vymenuj päť kľúčových vlastností, ktoré musí mať každý algoritmus.
Zobraziť odpoveď
Aký je rozdiel medzi algoritmom a programom?