Hledat:

Parfémy Krása Produkty pro zdraví Hodinky Elektro Šperky a klenoty Nábytek Nářadí a zahrada Outdoor Počítače a notebooky
 

Algoritmus

Algoritmus je přesný návod či postup, kterým lze vyřešit daný typ úlohy. Pojem algoritmu se nejčastěji objevuje při programování, kdy se jím myslí teoretický princip řešení problému (oproti přesnému zápisu v konkrétním programovacím jazyce). Obecně se ale algoritmus může objevit v jakémkoli jiném vědeckém odvětví. Jako jistý druh algoritmu se může chápat i např. kuchyňský recept. V užším smyslu se slovem algoritmus rozumí pouze takové postupy, které splňují některé silnější požadavky:

Obsah

[editovat] Vlastnosti algoritmů

Konečnost (finitnost) 
Každý algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být libovolně velký (podle rozsahu a hodnot vstupních údajů), ale pro každý jednotlivý vstup musí být konečný. Postupy, které tuto podmínku nesplňují, se mohou nazývat výpočetní metody. Speciálním příkladem nekonečné výpočetní metody je reaktivní proces, který průběžně reaguje s okolním prostředím. Někteří autoři však mezi algoritmy zahrnují i takovéto postupy.
Determinovanost 
Každý krok algoritmu musí být jednoznačně a přesně definován; v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat. Protože běžný jazyk obvykle neposkytuje naprostou přesnost a jednoznačnost vyjadřování, byly pro zápis algoritmů navrženy programovací jazyky, ve kterých má každý příkaz jasně definovaný význam. Vyjádření výpočetní metody v programovacím jazyce se nazývá program.
Vstup (universálnost) 
Vstupy mají definované množiny hodnot, jichž mohou nabývat. Algoritmus lze použít celou množinu vstupních dat. Algoritmus obvykle pracuje s nějakými vstupy, veličinami, které jsou mu předány před započetím jeho provádění, nebo v průběhu jeho činnosti.
Výstup (resultativnost) 
Algoritmus má alespoň jeden výstup, veličinu, která je v požadovaném vztahu k zadaným vstupům, a tím tvoří odpověď na problém, který algoritmus řeší. (Algoritmus vede od zpracování hodnot k výstupu - resultativnost)
Obecnost (hromadnost, masovost) 
Algoritmus neřeší jeden konkrétní problém (např. „jak spočítat 3×7“), ale obecnou třídu obdobných problémů (např. „jak spočítat součin dvou celých čísel“).
Efektivita 
Obecně požadujeme, aby algoritmus byl efektivní, v tom smyslu, že požadujeme, aby každá operace požadovaná algoritmem, byla dostatečně jednoduchá na to, aby mohla být alespoň v principu provedena v konečném čase pouze s použitím tužky a papíru. (tj. byla elementární) Vyžaduje revizi, duplicitní s determinovaností

V praxi jsou proto předmětem zájmu hlavně takové algoritmy, které jsou v nějakém smyslu kvalitní. Takové algoritmy splňují různá kritéria, měřená např. počtem kroků potřebných pro běh algoritmu, nebo jednoduchost či elegance algoritmu. Problematikou efektivity algoritmů, tzn. metodami, jak z několika známých algoritmů řešících konkrétní problém vybrat ten nejlepší, se zabývají odvětví informatiky nazývané algoritmická analýza a teorie složitosti.

[editovat] Algoritmická složitost

Je třeba poznamenat, že abstraktní kritérium konečnosti je pro praktické použití ještě příliš slabé. V praxi je třeba zajistit, aby algoritmus skončil „v rozumném“ čase. Za rozumný čas lze v praxi považovat takový čas, který nám umožní smysluplně využít výsledek.

Např. existuje jednoduchý algoritmus, který dokáže určit, zda v dané šachové pozici může hráč na tahu vynutit vítězství a zároveň dokáže určit nejlepší možný tah. Tento algoritmus se však nedá použít, protože by na svou činnost potřeboval ohromné množství času, jakkoli je toto množství konečné. Mimoto by takový algoritmus spotřeboval ohromné množství paměti, což je další praktický zřetel, který se uplatňuje při volbě algoritmu. I když průměrná počítačová paměť stále narůstá, pro některé algoritmy jí nebude nikdy dost.

Pro vyčíslení výpočetní složitosti algoritmů v závislosti na velikosti vstupních dat se používá asymptotický zápis závislosti výpočetního času na rozsahu úlohy (typicky na počtu vstupních údajů). Například O(log N) znamená, že počet kroků algoritmu závisí logaritmicky na velikosti vstupních dat. Pokud u takového algoritmu zdvojnásobíme rozsah vstupních údajů, doba výpočtu se zvýší o jednu jednotku času, pokud bude vstupních dat čtyřikrát více, doba výpočtu se prodlouží o dvě jednotky času, a tak dále. To je třeba případ nalezení jednoho prvku o určité hodnotě v seznamu prvků seřazeném podle hodnoty (např. nalezení jména v telefonním seznamu).

[editovat] Druhy algoritmů

Algoritmy můžeme klasifikovat různými způsoby. Mezi důležité druhy algoritmů patří:

Přitom jeden algoritmus může patřit zároveň do více skupin; například může být zároveň rekurzivní a typu rozděl a panuj.

[editovat] Některé známé algoritmy

[editovat] Etymologie

Slovo algoritmus pochází ze jména významného perského matematika žijícího v první polovině 9. století (cca 780840), kterým byl Abū ʻAbd Allāh Muhammad ibn Mūsā al-Chwārizmī (أبو عبد الله محمد بن موسى الخوارزمي) (doslova „Otec Abdulláha, Mohameda, syn Mojžíšův, pocházející z města Chwārizm (Chórézm)“; tento kraj se nachází jižně od Aralského moře). Tento učenec ve svém díle prakticky vytvořil systém arabských číslic a základy algebry (konkrétně metody řešení lineárních a kvadratických rovnic), jejíž název pochází přímo z titulu tohoto díla (Kitūb al-jabr waāl-muqūbala). Jeho jméno bylo do latiny převedeno jako algorismus, a původně znamenalo „provádění aritmetiky pomocí arabských číslic“; abacisté počítali pomocí abaku, algoristé pomocí algorismů.

Postupem času se kvůli neznalosti původu slova jeho podoba měnila, záměnou arabského kořene s kořenem řeckého slova αριθμός (arithmos) se z algorismu stal algorithmus. (Později bylo v některých jazycích včetně češtiny th změněno na t, v katalánštině se vrátilo s.) Toto slovo se používalo jako označení různých matematických postupů, např. v 18. století označoval latinský termín algorithmus infitesimalis „metodu výpočtů s využitím nekonečně malých veličin, vynalezenou Leibnizem“. Slovo algoritmus v dnešním významu se používá až zhruba od 20. století.

[editovat] Reference

  1. heslo Algorithmus. Ottův slovník naučný I, p. 857
  2. Donald E. Knuth: The Art of Computer Programming, Vol 1–3, Addison Wesley 1998. ISBN 0-201-48541-9. Klasické dílo oboru, definitivní příručka.
  3. Gaston H. Gonnet, Ricardo Baeza-Yates: Zdrojové texty programů v Handbook of Algorithms and Data Structures.
  4. Dictionary of Algorithms and Data Structures. „Slovník algoritmů, technik, datových struktur, typických problémů a příslušných definic.“

 
Algoritmus v jiných jazycích: Afrikaans, Aragonés, العربية, Asturianu, Azərbaycan, Беларуская, Беларуская (тарашкевіца), Български, বাংলা, Bosanski, Català, Dansk, Deutsch, Ελληνικά, English, Esperanto, Español, Eesti, فارسی, Suomi, Français, Galego, עברית, हिन्दी, Hrvatski, Magyar, Interlingua, Bahasa Indonesia, Íslenska, Italiano, 日本語, ქართული, 한국어, Kurdî / كوردی, Lëtzebuergesch, Lietuvių, Latviešu, Македонски, Монгол, Bahasa Melayu, Nederlands, ‪Norsk (nynorsk)‬, ‪Norsk (bokmål)‬, Polski, Português, Română, Русский, سنڌي, Srpskohrvatski / Српскохрватски, Simple English, Slovenčina, Slovenščina, Shqip, Српски / Srpski, Basa Sunda, Svenska, తెలుగు, Тоҷикӣ, ไทย, Tagalog, Türkçe, Українська, Tiếng Việt, , ייִדיש, 中文, 粵語
Tento článek je převzat z české wikipedie - otevřené encyklopedie, originální článek naleznete na adrese: „http://cs.wikipedia.org/wiki/Algoritmus
Stránka byla naposledy upravena v Stránka byla naposledy editována 17. 9. 2008 v 12:29.
Veškerý text je dostupný za podmínek GNU Free Documentation License (Autorské právo pro podrobnosti).
Další služby: Portál | Katalog | Hledej | Zprávy | Počasí | Kurzy | Práce | Slovník | TV | Online hry | Java hry | SMS | Loga a melodie | Chat | Fórum | Kontakt