Algoritmus

Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. Ačkoliv se dnes tento pojem používá především v informatice a přírodních vědách obecně, tak je jeho působnost daleko širší (kuchyňské recepty, návody a postupy...). Samotné slovo „algoritmus“ pochází ze jména perského matematika 9. století Abu Jafar Muhammada ibn Mūsā al-Chwārizmího, který ve svých dílech položil základy algebry (arabské číslice, řešení lineárních a kvadratických rovnic).

Vlastnosti algoritmů

  1. Konečnost – algoritmus má konečné množství kroků.
  2. Korektnost – algoritmus skončí pro libovolná (korektní) data správným výsledkem v konečném množství kroků.
  3. Obecnost – algoritmus řeší všechny úlohy daného typu.

Dělení algoritmů

Rekurzivní a iterativní algoritmy

Iterativní algoritmus je takový, který spočívá v opakování určité své části (bloku). Rekurzivní algoritmus naproti tomu volá sám sebe (na dílčí podproblémy), dokud nenarazí na sadu triviálně řešitelných podproblémů, z nichž poté skládá celkové řešení. Výhoda rekurzivních algoritmů je v jejich snadno čitelném a kompaktním zápisu. Nevýhodou je nutnost dodatečných systémových prostředků pro jednotlivá rekurzivní volání. Každý rekurzivní algoritmus lze převést do iterativní podoby (a často tak činí automaticky i kompilátor).

Deterministické a nedeterministické algoritmy

Deterministický je takový algoritmus, který má v každém svém kroku právě jednu možnost, jak pokračovat. Nedeterministický jich má více. Příkladem může být deterministický a nedeterministický automat.

Sériové, paralelní a distribuované algoritmy

Sériový algorimus vykonává všechy kroky v sérii (jeden po druhém), paralelní algoritmus tyto kroky vykonává zároveň (ve více vlákech) a distribuovaný algoritmus kroky vykovává zároveň na více strojích.

Asymptotická složitost algoritmu

Asymptotická složitost algoritmu charakterizuje počet provedených operací v závislosti na velikosti dat. Například pokud procházíme pole, pak složitost bude lineární (na každý prvek připadá konstantní množství operací), pokud jej ovšem řadíme například Bubble sortem, pak složitost bude kvadratická (na n prvků bude připadat n2 operací).

Třída složitosti

Hierarchie tříd složitosti
Hierarchie tříd složitosti

Třída složitosti stanovuje obtížnost rozhodnutelnosti daného problému na Turingově stroji.

  • Třída P – obsahuje problémy rozhodnutelné v polynomiálním čase.
    • Má daný graf kostru o velikosti maximálně k?
    • Existuje v daném acyklickém grafu mezi uzly a a b cesta, jejíž délka je nejvýše k?
  • Třída NP – obsahuje problémy, které jsou rozhodnutelné pomocí nedeterministického Turingova stroje v polynomiálním čase – tzn. jsme schopni ověřit jejich řešení v polynomiálním čase.
    • Lze daný graf obarvit maximálně k barvami?
    • Existuje v daném grafu hamiltonovská kružnice?
    • Existuje v daném grafu klika o alespoň k vrcholech?

Literatura

  • WRÓBLEWSKI, Piotr. Algoritmy : Datové struktury a programovací techniky. Brno : Computer press, 2004. 351 s. ISBN 80-251-0343-9.
  • KVASIL, Bohumil, et al. Algoritmus. In Malá československá encyklopedie. Praha : Academia, 1984. s. 108.
  • VELEBIL, Jiří. Diskrétní matematika : Text k přednášce. Praha : [s.n.], 2007. 197 s.
{ zpětná vazba }
Delicious Delicious
Sdílet
Hodnocení (7): 4,28

Přečtěte si také

Diskuse





captcha
Paulie
2.2.2010 22:55:18
Wróblewskiho knížka není pro studium algoritmů podle mě příliš vhodná - obsahuje spoustu chyb a nelíbí se mi, jak je tam vysvětluje. Pro začátečníky je mnohem lepší učebnice Pavla Töpfera Algoritmy a datové struktury.
Pavel Mička
3.2.2010 19:19:12
Paulie: Osobně mám doma jen toho Wróblewskiho, protože vesměs čerpám ze skript k daným oblastem...uznávám, že Wróblewski není pro začátečníky nic moc, ale je to poměrně obsažný přehled i pokročilejších technik.
Na toho Töpfera se podívám, jestli ho někde uvidím, ale s těmito knížkami mám poněkud problém, protože Knuth mi přijde jako docela brutální četba (nejsem přítelem kódu v assembleru), naproti tomu valná část ostatních učebnic poskytuje pouze náhled na jednodušší problematiku.
Dobrá knížka
18.2.2010 12:45:14
Eva Milková - Algoritmy : typové konstrukce a příklady
1. vydání, Hradec Králové : Gaudeamus, 2001, ISBN: 80-7041-998-9
Eva Milková, Petr Voborník - Algoritmy : objasnění, procvičení a vizualizace základních algoritmických konstrukcí
Praha : Alfa, 2008, ISBN: 978-80-87197-10-3
altai
5.4.2010 17:04:50
Souhlasim se Paulim. Mam taky Pavla Topfra a muzu jen doporucit.
iwtu
22.4.2010 7:24:52
Co sa tyka teorie algoritmov, velmi mozem doporucit Lev Bukovsky - Teoria Algoritmov, UPJS.
Do algoritmov je asi klasicky najznamejsi Uvod Introduction To Algorithm, MIT
ado21
22.4.2010 7:28:02
Ahoj,
ak chces mozes ma kontaktovat na newblueman21 gmail com. Mozno mozem niecim prispiet...