Strojové učení - Wikipedie
Strojové učení je podoblastí umělé inteligence, zabývající se algoritmy a technikami, které umožňují počítačovému systému 'učit se'. Učením v daném kontextu ...
algoritmy
Strojové učení je podoblastí umělé inteligence, zabývající se <anchor>algoritmy</anchor> a technikami, které umožňují počítačovému systému 'učit se'. Učením v daném kontextu rozumíme takovou změnu vnitřního stavu systému, která zefektivní schopnost přizpůsobení se změnám okolního prostředí.
Algoritmus – Wikipedie
Algoritmus – Wikipedie[Přeskočit na obsah](#bodyContent)

Hlavní menu

Hlavní menu

přesunout do postranního paneluskrýt

Navigace


- [Hlavní strana](/wiki/Hlavn%C3%AD_strana "Navštívit Hlavní stranu [z]")
- [Nápověda](/wiki/N%C3%A1pov%C4%9Bda:Obsah "Místo, kde najdete pomoc")
- [Potřebuji pomoc](/wiki/Wikipedie:Pot%C5%99ebuji_pomoc "Pokud si nevíte rady, zeptejte se ostatních")
- [Nejlepší články](/wiki/Wikipedie:Nejlep%C5%A1%C3%AD_%C4%8Dl%C3%A1nky "Přehled článků, které jsou považovány za nejlepší na české Wikipedii")
- [Náhodný článek](/wiki/Speci%C3%A1ln%C3%AD:N%C3%A1hodn%C3%A1_str%C3%A1nka "Přejít na náhodně vybranou stránku [x]")
- [Poslední změny](/wiki/Speci%C3%A1ln%C3%AD:Posledn%C3%AD_zm%C4%9Bny "Seznam posledních změn na této wiki [r]")
- [Komunitní portál](/wiki/Wikipedie:Port%C3%A1l_Wikipedie "O projektu, jak můžete pomoci, kde hledat")
- [Pod lípou](/wiki/Wikipedie:Pod_l%C3%ADpou "Hlavní diskusní fórum")
- [Podpořte Wikipedii](//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_cs.wikipedia.org&uselang=cs "Podpořte nás")

[![](/static/images/icons/wikipedia.png)![Wikipedie](/static/images/mobile/copyright/wikipedia-wordmark-cs.svg)![Wikipedie: Otevřená encyklopedie](/static/images/mobile/copyright/wikipedia-tagline-cs.svg)](/wiki/Hlavn%C3%AD_strana)

[Hledání](/wiki/Speci%C3%A1ln%C3%AD:Hled%C3%A1n%C3%AD "Prohledat tuto wiki [f]")

Hledat

Vzhled

- [Vytvoření účtu](/w/index.php?title=Speci%C3%A1ln%C3%AD:Vytvo%C5%99it_%C3%BA%C4%8Det&returnto=Algoritmus "Doporučujeme vytvořit si účet a přihlásit se, ovšem není to povinné")
- [Přihlášení](/w/index.php?title=Speci%C3%A1ln%C3%AD:P%C5%99ihl%C3%A1sit&returnto=Algoritmus "Doporučujeme vám přihlásit se, ovšem není to povinné. [o]")

Osobní nástroje

- [Vytvoření účtu](/w/index.php?title=Speci%C3%A1ln%C3%AD:Vytvo%C5%99it_%C3%BA%C4%8Det&returnto=Algoritmus "Doporučujeme vytvořit si účet a přihlásit se, ovšem není to povinné")
- [Přihlášení](/w/index.php?title=Speci%C3%A1ln%C3%AD:P%C5%99ihl%C3%A1sit&returnto=Algoritmus "Doporučujeme vám přihlásit se, ovšem není to povinné. [o]")

Stránky pro odhlášené editory [dozvědět se více](/wiki/N%C3%A1pov%C4%9Bda:%C3%9Avod)

- [Příspěvky](/wiki/Speci%C3%A1ln%C3%AD:Moje_p%C5%99%C3%ADsp%C4%9Bvky "Seznam editací provedených z této IP adresy [y]")
- [Diskuse](/wiki/Speci%C3%A1ln%C3%AD:Moje_diskuse "Diskuse o editacích provedených z této IP adresy [n]")

## Obsah

přesunout do postranního paneluskrýt

- (úvod)

- [1Vlastnosti algoritmů](#Vlastnosti_algoritmů)
- [2Metody návrhu](#Metody_návrhu)
- [3Paradigmata návrhu algoritmů](#Paradigmata_návrhu_algoritmů)Přepnout podsekci Paradigmata návrhu algoritmů  - [3.1Rozděl a panuj](#Rozděl_a_panuj)
  - [3.2Hladový algoritmus](#Hladový_algoritmus)
  - [3.3Dynamické programování](#Dynamické_programování)
  - [3.4Použití hrubé síly](#Použití_hrubé_síly)
  - [3.5Hledání s návratem (backtracking)](#Hledání_s_návratem_(backtracking))
- [4Algoritmická složitost](#Algoritmická_složitost)
- [5Druhy algoritmů](#Druhy_algoritmů)
- [6Některé známé algoritmy](#Některé_známé_algoritmy)
- [7Etymologie](#Etymologie)
- [8Historie: Vývoj pojmu „algoritmus“](#Historie:_Vývoj_pojmu_„algoritmus“)Přepnout podsekci Historie: Vývoj pojmu „algoritmus“  - [8.1Starověké Řecko](#Starověké_Řecko)
  - [8.2Původ](#Původ)
  - [8.3Diskrétní a rozeznatelné symboly](#Diskrétní_a_rozeznatelné_symboly)
  - [8.4Mechanická zařízení s diskrétními stavy](#Mechanická_zařízení_s_diskrétními_stavy)
  - [8.5Matematika v průběhu 19. století až do poloviny 20. století](#Matematika_v_průběhu_19._století_až_do_poloviny_20._století)
- [9Právní ustanovení](#Právní_ustanovení)
- [10Reference](#Reference)
- [11Externí odkazy](#Externí_odkazy)

Přepnout obsah

# Algoritmus

131 jazyků

- [Afrikaans](https://af.wikipedia.org/wiki/Algoritme "Algoritme – afrikánština")
- [Alemannisch](https://als.wikipedia.org/wiki/Algorithmus "Algorithmus – němčina (Švýcarsko)")
- [አማርኛ](https://am.wikipedia.org/wiki/%E1%8A%A0%E1%88%8D%E1%8C%8E%E1%88%AA%E1%8B%9D%E1%88%9D "አልጎሪዝም – amharština")
- [Aragonés](https://an.wikipedia.org/wiki/Algorismo "Algorismo – aragonština")
- [العربية](https://ar.wikipedia.org/wiki/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A9 "خوارزمية – arabština")
- [مصرى](https://arz.wikipedia.org/wiki/%D8%A7%D9%84%D8%AC%D9%88%D8%B1%D9%8A%D8%B2%D9%85 "الجوريزم – arabština (egyptská)")
- [অসমীয়া](https://as.wikipedia.org/wiki/%E0%A6%8F%E0%A6%B2%E0%A6%97%E0%A7%B0%E0%A6%BF%E0%A6%A5%E0%A6%AE_%E0%A6%86%E0%A7%B0%E0%A7%81_%E0%A6%A1%E0%A7%87%E0%A6%87%E0%A6%9F%E0%A6%BE_%E0%A6%B7%E0%A7%8D%E0%A6%9F%E0%A7%8D%E0%A7%B0%E0%A6%BE%E0%A6%95%E0%A6%9A%E0%A6%BE%E0%A7%B0 "এলগৰিথম আৰু ডেইটা ষ্ট্ৰাকচাৰ – ásámština")
- [Asturianu](https://ast.wikipedia.org/wiki/Algoritmu "Algoritmu – asturština")
- [Azərbaycanca](https://az.wikipedia.org/wiki/Alqoritm "Alqoritm – ázerbájdžánština")
- [تۆرکجه](https://azb.wikipedia.org/wiki/%D8%A7%D9%84%D9%82%D9%88%D8%B1%DB%8C%D8%AA%D9%85 "القوریتم – South Azerbaijani")
- [Башҡортса](https://ba.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – baškirština")
- [Žemaitėška](https://bat-smg.wikipedia.org/wiki/Alguor%C4%97tmos "Alguorėtmos – žemaitština")
- [Bikol Central](https://bcl.wikipedia.org/wiki/Algoritmo "Algoritmo – Central Bikol")
- [Беларуская](https://be.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%B0%D1%80%D1%8B%D1%82%D0%BC "Алгарытм – běloruština")
- [Беларуская (тарашкевіца)](https://be-tarask.wikipedia.org/wiki/%D0%90%D0%BB%D1%8C%D0%B3%D0%B0%D1%80%D1%8B%D1%82%D0%BC "Альгарытм – Belarusian (Taraškievica orthography)")
- [Български](https://bg.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D1%8A%D0%BC "Алгоритъм – bulharština")
- [বাংলা](https://bn.wikipedia.org/wiki/%E0%A6%85%E0%A7%8D%E0%A6%AF%E0%A6%BE%E0%A6%B2%E0%A6%97%E0%A6%B0%E0%A6%BF%E0%A6%A6%E0%A6%AE "অ্যালগরিদম – bengálština")
- [བོད་ཡིག](https://bo.wikipedia.org/wiki/%E0%BD%A8%E0%BD%A3%E0%BC%8B%E0%BD%82%E0%BE%B7%E0%BD%BC%E0%BD%A2%E0%BC%8B%E0%BD%A3%E0%BC%8B%E0%BD%A6%E0%BD%BA%E0%BD%A3%E0%BC%8B%E0%BD%A2%E0%BE%A9%E0%BD%B2%E0%BD%A6%E0%BC%8D "ཨལ་གྷོར་ལ་སེལ་རྩིས། – tibetština")
- [Brezhoneg](https://br.wikipedia.org/wiki/Algoritm "Algoritm – bretonština")
- [Bosanski](https://bs.wikipedia.org/wiki/Algoritam "Algoritam – bosenština")
- [Català](https://ca.wikipedia.org/wiki/Algorisme "Algorisme – katalánština")
- [کوردی](https://ckb.wikipedia.org/wiki/%D8%A6%DB%95%D9%84%DA%AF%DB%86%D8%B1%DB%8C%D8%AA%D9%85 "ئەلگۆریتم – kurdština (sorání)")
- [Словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ](https://cu.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D1%B7%D1%B3%D0%BC%D1%8A "Алгорѷѳмъ – staroslověnština")
- [Cymraeg](https://cy.wikipedia.org/wiki/Algorithm "Algorithm – velština")
- [Dansk](https://da.wikipedia.org/wiki/Algoritme "Algoritme – dánština")
- [Deutsch](https://de.wikipedia.org/wiki/Algorithmus "Algorithmus – němčina")
- [Zazaki](https://diq.wikipedia.org/wiki/Algoritma "Algoritma – Zazaki")
- [Ελληνικά](https://el.wikipedia.org/wiki/%CE%91%CE%BB%CE%B3%CF%8C%CF%81%CE%B9%CE%B8%CE%BC%CE%BF%CF%82 "Αλγόριθμος – řečtina")
- [English](https://en.wikipedia.org/wiki/Algorithm "Algorithm – angličtina")
- [Esperanto](https://eo.wikipedia.org/wiki/Algoritmo "Algoritmo – esperanto")
- [Español](https://es.wikipedia.org/wiki/Algoritmo "Algoritmo – španělština")
- [Eesti](https://et.wikipedia.org/wiki/Algoritm "Algoritm – estonština")
- [Euskara](https://eu.wikipedia.org/wiki/Algoritmo "Algoritmo – baskičtina")
- [فارسی](https://fa.wikipedia.org/wiki/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85 "الگوریتم – perština")
- [Suomi](https://fi.wikipedia.org/wiki/Algoritmi "Algoritmi – finština")
- [Føroyskt](https://fo.wikipedia.org/wiki/Algoritma "Algoritma – faerština")
- [Français](https://fr.wikipedia.org/wiki/Algorithme "Algorithme – francouzština")
- [Nordfriisk](https://frr.wikipedia.org/wiki/Algoritmus "Algoritmus – fríština (severní)")
- [Gaeilge](https://ga.wikipedia.org/wiki/Algartam "Algartam – irština")
- [Kriyòl gwiyannen](https://gcr.wikipedia.org/wiki/Algoritm "Algoritm – Guianan Creole")
- [Galego](https://gl.wikipedia.org/wiki/Algoritmo "Algoritmo – galicijština")
- [Avañe'ẽ](https://gn.wikipedia.org/wiki/Algoritmo "Algoritmo – guaranština")
- [עברית](https://he.wikipedia.org/wiki/%D7%90%D7%9C%D7%92%D7%95%D7%A8%D7%99%D7%AA%D7%9D "אלגוריתם – hebrejština")
- [हिन्दी](https://hi.wikipedia.org/wiki/%E0%A4%85%E0%A4%B2%E0%A5%8D%E0%A4%97%E0%A5%8B%E0%A4%B0%E0%A4%BF%E0%A4%A6%E0%A5%8D%E0%A4%AE "अल्गोरिद्म – hindština")
- [Fiji Hindi](https://hif.wikipedia.org/wiki/Algorithm "Algorithm – hindština (Fidži)")
- [Hrvatski](https://hr.wikipedia.org/wiki/Algoritam "Algoritam – chorvatština")
- [Magyar](https://hu.wikipedia.org/wiki/Algoritmus "Algoritmus – maďarština")
- [Հայերեն](https://hy.wikipedia.org/wiki/%D4%B1%D5%AC%D5%A3%D5%B8%D6%80%D5%AB%D5%A9%D5%B4 "Ալգորիթմ – arménština")
- [Interlingua](https://ia.wikipedia.org/wiki/Algorithmo "Algorithmo – interlingua")
- [Bahasa Indonesia](https://id.wikipedia.org/wiki/Algoritma "Algoritma – indonéština")
- [Ilokano](https://ilo.wikipedia.org/wiki/Algoritmo "Algoritmo – ilokánština")
- [Ido](https://io.wikipedia.org/wiki/Algoritmo "Algoritmo – ido")
- [Íslenska](https://is.wikipedia.org/wiki/Reiknirit "Reiknirit – islandština")
- [Italiano](https://it.wikipedia.org/wiki/Algoritmo "Algoritmo – italština")
- [日本語](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0 "アルゴリズム – japonština")
- [Jawa](https://jv.wikipedia.org/wiki/Algoritma "Algoritma – javánština")
- [ქართული](https://ka.wikipedia.org/wiki/%E1%83%90%E1%83%9A%E1%83%92%E1%83%9D%E1%83%A0%E1%83%98%E1%83%97%E1%83%9B%E1%83%98 "ალგორითმი – gruzínština")
- [Qaraqalpaqsha](https://kaa.wikipedia.org/wiki/Algoritm "Algoritm – karakalpačtina")
- [Taqbaylit](https://kab.wikipedia.org/wiki/Alguritm "Alguritm – kabylština")
- [Gĩkũyũ](https://ki.wikipedia.org/wiki/Algorithm "Algorithm – kikujština")
- [Қазақша](https://kk.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – kazaština")
- [ಕನ್ನಡ](https://kn.wikipedia.org/wiki/%E0%B2%86%E0%B2%B2%E0%B3%8D%E0%B2%97%E0%B2%BE%E0%B2%B0%E0%B2%BF%E0%B2%A4%E0%B2%82 "ಆಲ್ಗಾರಿತಂ – kannadština")
- [한국어](https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 "알고리즘 – korejština")
- [Kurdî](https://ku.wikipedia.org/wiki/Algor%C3%AEtma "Algorîtma – kurdština")
- [Кыргызча](https://ky.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – kyrgyzština")
- [Latina](https://la.wikipedia.org/wiki/Algorithmus "Algorithmus – latina")
- [Lëtzebuergesch](https://lb.wikipedia.org/wiki/Algorithmus "Algorithmus – lucemburština")
- [Lingua Franca Nova](https://lfn.wikipedia.org/wiki/Algoritmo "Algoritmo – lingua franca nova")
- [Lombard](https://lmo.wikipedia.org/wiki/Algoritm "Algoritm – lombardština")
- [ລາວ](https://lo.wikipedia.org/wiki/%E0%BA%82%E0%BA%B1%E0%BB%89%E0%BA%99%E0%BA%95%E0%BA%AD%E0%BA%99%E0%BA%A7%E0%BA%B4%E0%BA%97%E0%BA%B5 "ຂັ້ນຕອນວິທີ – laoština")
- [Lietuvių](https://lt.wikipedia.org/wiki/Algoritmas "Algoritmas – litevština")
- [Latviešu](https://lv.wikipedia.org/wiki/Algoritms "Algoritms – lotyština")
- [Олык марий](https://mhr.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – Eastern Mari")
- [Македонски](https://mk.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%B0%D0%BC "Алгоритам – makedonština")
- [മലയാളം](https://ml.wikipedia.org/wiki/%E0%B4%85%E0%B5%BD%E0%B4%97%E0%B5%8A%E0%B4%B0%E0%B4%BF%E0%B4%A4%E0%B4%82 "അൽഗൊരിതം – malajálamština")
- [Монгол](https://mn.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – mongolština")
- [मराठी](https://mr.wikipedia.org/wiki/%E0%A4%85%E0%A4%B2%E0%A5%8D%E0%A4%97%E0%A5%8B%E0%A4%B0%E0%A4%BF%E0%A4%A6%E0%A4%AE "अल्गोरिदम – maráthština")
- [Bahasa Melayu](https://ms.wikipedia.org/wiki/Algoritma "Algoritma – malajština")
- [Mirandés](https://mwl.wikipedia.org/wiki/Algoritmo "Algoritmo – mirandština")
- [မြန်မာဘာသာ](https://my.wikipedia.org/wiki/%E1%80%A1%E1%80%86%E1%80%84%E1%80%B7%E1%80%BA%E1%80%86%E1%80%84%E1%80%B7%E1%80%BA%E1%80%90%E1%80%BD%E1%80%80%E1%80%BA%E1%80%94%E1%80%8A%E1%80%BA%E1%80%B8 "အဆင့်ဆင့်တွက်နည်း – barmština")
- [Plattdüütsch](https://nds.wikipedia.org/wiki/Algorithmus "Algorithmus – dolnoněmčina")
- [नेपाली](https://ne.wikipedia.org/wiki/%E0%A4%85%E0%A4%B2%E0%A5%8D%E0%A4%97%E0%A5%8B%E0%A4%B0%E0%A4%BF%E0%A4%A6%E0%A4%AE "अल्गोरिदम – nepálština")
- [नेपाल भाषा](https://new.wikipedia.org/wiki/%E0%A4%85%E0%A4%B2%E0%A5%8D%E0%A4%97%E0%A5%8B%E0%A4%B0%E0%A4%BF%E0%A4%A5%E0%A4%AE "अल्गोरिथम – névárština")
- [Nederlands](https://nl.wikipedia.org/wiki/Algoritme "Algoritme – nizozemština")
- [Norsk nynorsk](https://nn.wikipedia.org/wiki/Algoritme "Algoritme – norština (nynorsk)")
- [Norsk bokmål](https://no.wikipedia.org/wiki/Algoritme "Algoritme – norština (bokmål)")
- [Occitan](https://oc.wikipedia.org/wiki/Algoritme "Algoritme – okcitánština")
- [Oromoo](https://om.wikipedia.org/wiki/Seermurtoo "Seermurtoo – oromština")
- [ਪੰਜਾਬੀ](https://pa.wikipedia.org/wiki/%E0%A8%95%E0%A8%B2%E0%A8%A8_%E0%A8%B5%E0%A8%BF%E0%A8%A7%E0%A9%80 "ਕਲਨ ਵਿਧੀ – paňdžábština")
- [Polski](https://pl.wikipedia.org/wiki/Algorytm "Algorytm – polština")
- [پنجابی](https://pnb.wikipedia.org/wiki/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%D8%AA%DA%BE%D9%85 "الگورتھم – Western Punjabi")
- [Português](https://pt.wikipedia.org/wiki/Algoritmo "Algoritmo – portugalština")
- [Runa Simi](https://qu.wikipedia.org/wiki/Allquritmu "Allquritmu – kečuánština")
- [Română](https://ro.wikipedia.org/wiki/Algoritm "Algoritm – rumunština")
- [Русский](https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – ruština")
- [Русиньскый](https://rue.wikipedia.org/wiki/%D0%90%D0%BB%D2%91%D0%BE%D1%80%D1%96%D1%82%D0%BC "Алґорітм – rusínština")
- [Саха тыла](https://sah.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – jakutština")
- [Sardu](https://sc.wikipedia.org/wiki/Algoritmu "Algoritmu – sardština")
- [Sicilianu](https://scn.wikipedia.org/wiki/Alguritmu "Alguritmu – sicilština")
- [Scots](https://sco.wikipedia.org/wiki/Algorithm "Algorithm – skotština")
- [Srpskohrvatski / српскохрватски](https://sh.wikipedia.org/wiki/Algoritam "Algoritam – srbochorvatština")
- [සිංහල](https://si.wikipedia.org/wiki/%E0%B6%87%E0%B6%BD%E0%B7%8A%E0%B6%9C%E0%B7%9C%E0%B6%BB%E0%B7%92%E0%B6%AD%E0%B6%B8 "ඇල්ගොරිතම – sinhálština")
- [Simple English](https://simple.wikipedia.org/wiki/Algorithm "Algorithm – Simple English")
- [Slovenčina](https://sk.wikipedia.org/wiki/Algoritmus "Algoritmus – slovenština")
- [Slovenščina](https://sl.wikipedia.org/wiki/Algoritem "Algoritem – slovinština")
- [ChiShona](https://sn.wikipedia.org/wiki/Gwarazima "Gwarazima – šonština")
- [Shqip](https://sq.wikipedia.org/wiki/Algoritmi "Algoritmi – albánština")
- [Српски / srpski](https://sr.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%B0%D0%BC "Алгоритам – srbština")
- [Sunda](https://su.wikipedia.org/wiki/Algoritma "Algoritma – sundština")
- [Svenska](https://sv.wikipedia.org/wiki/Algoritm "Algoritm – švédština")
- [Kiswahili](https://sw.wikipedia.org/wiki/Algorithm "Algorithm – svahilština")
- [தமிழ்](https://ta.wikipedia.org/wiki/%E0%AE%AA%E0%AE%9F%E0%AE%BF%E0%AE%AE%E0%AF%81%E0%AE%B1%E0%AF%88%E0%AE%A4%E0%AF%8D_%E0%AE%A4%E0%AF%80%E0%AE%B0%E0%AF%8D%E0%AE%B5%E0%AF%81 "படிமுறைத் தீர்வு – tamilština")
- [తెలుగు](https://te.wikipedia.org/wiki/%E0%B0%85%E0%B0%B2%E0%B1%8D%E0%B0%97%E0%B0%BE%E0%B0%B0%E0%B0%BF%E0%B0%A5%E0%B0%82 "అల్గారిథం – telugština")
- [Тоҷикӣ](https://tg.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – tádžičtina")
- [ไทย](https://th.wikipedia.org/wiki/%E0%B8%82%E0%B8%B1%E0%B9%89%E0%B8%99%E0%B8%95%E0%B8%AD%E0%B8%99%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5 "ขั้นตอนวิธี – thajština")
- [Tagalog](https://tl.wikipedia.org/wiki/Algoritmo "Algoritmo – tagalog")
- [Türkçe](https://tr.wikipedia.org/wiki/Algoritma "Algoritma – turečtina")
- [Татарча / tatarça](https://tt.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – tatarština")
- [Twi](https://tw.wikipedia.org/wiki/Algorithm "Algorithm – twi")
- [Українська](https://uk.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC "Алгоритм – ukrajinština")
- [اردو](https://ur.wikipedia.org/wiki/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%DB%8C%DB%81 "خوارزمیہ – urdština")
- [Oʻzbekcha / ўзбекча](https://uz.wikipedia.org/wiki/Algoritm "Algoritm – uzbečtina")
- [Tiếng Việt](https://vi.wikipedia.org/wiki/Thu%E1%BA%ADt_to%C3%A1n "Thuật toán – vietnamština")
- [Walon](https://wa.wikipedia.org/wiki/Algorisse "Algorisse – valonština")
- [Winaray](https://war.wikipedia.org/wiki/Algoritmo "Algoritmo – warajština")
- [吴语](https://wuu.wikipedia.org/wiki/%E7%AE%97%E6%B3%95 "算法 – čínština (dialekty Wu)")
- [ייִדיש](https://yi.wikipedia.org/wiki/%D7%90%D7%9C%D7%92%D7%90%D7%A8%D7%99%D7%98%D7%9D "אלגאריטם – jidiš")
- [中文](https://zh.wikipedia.org/wiki/%E7%AE%97%E6%B3%95 "算法 – čínština")
- [閩南語 / Bân-lâm-gú](https://zh-min-nan.wikipedia.org/wiki/I%C3%A1n-s%C7%B9g-hoat "Ián-sǹg-hoat – čínština (dialekty Minnan)")
- [粵語](https://zh-yue.wikipedia.org/wiki/%E6%BC%94%E7%AE%97%E6%B3%95 "演算法 – kantonština")
- [IsiZulu](https://zu.wikipedia.org/wiki/Umkholezima "Umkholezima – zuluština")

[Upravit odkazy](https://www.wikidata.org/wiki/Special:EntityPage/Q8366#sitelinks-wikipedia "Editovat mezijazykové odkazy")

- [Článek](/wiki/Algoritmus "Zobrazit obsahovou stránku [c]")
- [Diskuse](/wiki/Diskuse:Algoritmus "Diskuse ke stránce [t]")

čeština

- [Číst](/wiki/Algoritmus)
- [Editovat](/w/index.php?title=Algoritmus&veaction=edit "Editovat tuto stránku [v]")
- [Editovat zdroj](/w/index.php?title=Algoritmus&action=edit "Editovat zdrojový kód této stránky [e]")
- [Zobrazit historii](/w/index.php?title=Algoritmus&action=history "Starší verze této stránky. [h]")

Nástroje

Nástroje

přesunout do postranního paneluskrýt

Akce


- [Číst](/wiki/Algoritmus)
- [Editovat](/w/index.php?title=Algoritmus&veaction=edit "Editovat tuto stránku [v]")
- [Editovat zdroj](/w/index.php?title=Algoritmus&action=edit "Editovat zdrojový kód této stránky [e]")
- [Zobrazit historii](/w/index.php?title=Algoritmus&action=history)

Obecné


- [Odkazuje sem](/wiki/Speci%C3%A1ln%C3%AD:Co_odkazuje_na/Algoritmus "Seznam všech wikistránek, které sem odkazují [j]")
- [Související změny](/wiki/Speci%C3%A1ln%C3%AD:Souvisej%C3%ADc%C3%AD_zm%C4%9Bny/Algoritmus "Nedávné změny stránek, na které je odkazováno [k]")
- [Načíst soubor](//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=cs "Nahrát obrázky či jiná multimédia [u]")
- [Speciální stránky](/wiki/Speci%C3%A1ln%C3%AD:Speci%C3%A1ln%C3%AD_str%C3%A1nky "Seznam všech speciálních stránek [q]")
- [Trvalý odkaz](/w/index.php?title=Algoritmus&oldid=23824364 "Trvalý odkaz na současnou verzi této stránky")
- [Informace o stránce](/w/index.php?title=Algoritmus&action=info "Více informací o této stránce")
- [Citovat stránku](/w/index.php?title=Speci%C3%A1ln%C3%AD:Citovat&page=Algoritmus&id=23824364&wpFormIdentifier=titleform "Informace o tom, jak citovat tuto stránku")
- [Získat zkrácené URL](/w/index.php?title=Speci%C3%A1ln%C3%AD:UrlShortener&url=https%3A%2F%2Fcs.wikipedia.org%2Fwiki%2FAlgoritmus)
- [Stáhnout QR kód](/w/index.php?title=Speci%C3%A1ln%C3%AD:QrCode&url=https%3A%2F%2Fcs.wikipedia.org%2Fwiki%2FAlgoritmus)
- [Položka Wikidat](https://www.wikidata.org/wiki/Special:EntityPage/Q8366 "Odkaz na propojenou položku datového úložiště [g]")

Tisk/export


- [Vytvořit knihu](/w/index.php?title=Speci%C3%A1ln%C3%AD:Kniha&bookcmd=book_creator&referer=Algoritmus)
- [Stáhnout jako PDF](/w/index.php?title=Speci%C3%A1ln%C3%AD:DownloadAsPdf&page=Algoritmus&action=show-download-screen)
- [Verze k tisku](/w/index.php?title=Algoritmus&printable=yes "Tato stránka v podobě vhodné k tisku [p]")

Na jiných projektech


- [Wikimedia Commons](https://commons.wikimedia.org/wiki/Category:Algorithms)
- [Wikicitáty](https://cs.wikiquote.org/wiki/Algoritmus)

Vzhled

přesunout do postranního paneluskrýt

Z Wikipedie, otevřené encyklopedie

**Algoritmus** je přesný návod či postup, kterým lze vyřešit daný typ úlohy. Pojem algoritmus se nejčastěji objevuje při [programování](/wiki/Programov%C3%A1n%C3%AD "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](/wiki/Programovac%C3%AD_jazyk "Programovací jazyk")). 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ř. kuchařský recept. Zpravidla však na algoritmy klademe určitá omezení.

## Vlastnosti algoritmů

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=1 "Editace sekce: Vlastnosti algoritmů") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=1 "Editovat zdrojový kód sekce Vlastnosti algoritmů")\]

V užším smyslu se slovem algoritmus označují takové postupy, které splňují některé silnější požadavky:

_Elementárnost_Algoritmus se skládá z konečného počtu jednoduchých (elementárních) kroků._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._Obecnost (hromadnost, masovost, univerzálnost)_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“), má širokou množinu možných vstupů._Determinovanost_Algoritmus je determinovaný, pokud za stejných podmínek (pro stejné vstupy) poskytuje stejný výstup. Tato vlastnost je požadována u velké části úloh; existují však úlohy, kdy je naopak vyžadována náhodnost (například simulace [vrhu kostkou](/wiki/Hrac%C3%AD_kostka "Hrací kostka"), [míchání karet](/wiki/Karetn%C3%AD_hra "Karetní hra"), generování [hesel](/wiki/Heslo "Heslo") a [šifrovacích klíčů](/wiki/Kl%C3%AD%C4%8D_(kryptografie) "Klíč (kryptografie)")); na standardních počítačích je dosažení náhodnosti [obtížné](/wiki/Hardwarov%C3%BD_gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel "Hardwarový generátor náhodných čísel"). Pravděpodobnostní algoritmy v sobě mají zahrnutu náhodu a nemusí být determinované._Determinismus_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 [přirozené jazyky](/wiki/Jazyk_(lingvistika) "Jazyk (lingvistika)") neposkytují naprostou přesnost a jednoznačnost vyjadřování, byly pro zápis algoritmů navrženy [programovací jazyky](/wiki/Programovac%C3%AD_jazyk "Programovací jazyk"), 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](/wiki/Po%C4%8D%C3%ADta%C4%8Dov%C3%BD_program "Počítačový program"). Některé algoritmy jsou sice determinované, ale nejsou deterministické (například řadící algoritmus [rychlé řazení](/wiki/Rychl%C3%A9_%C5%99azen%C3%AD "Rychlé řazení") s náhodnou volbou pivota)._Výstup_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)

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, jednoduchost, efektivitu či eleganci. Problematikou efektivity algoritmů, tzn. metodami, jak z několika známých algoritmů řešících konkrétní problém vybrat ten vhodný, se zabývají odvětví [informatiky](/wiki/Informatika "Informatika") nazývané algoritmická analýza a [teorie složitosti](/wiki/Teorie_slo%C5%BEitosti "Teorie složitosti").

## Metody návrhu

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=2 "Editace sekce: Metody návrhu") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=2 "Editovat zdrojový kód sekce Metody návrhu")\]

Algoritmus se navrhuje několika možnými způsoby:

- **Shora dolů** – postup řešení rozkládáme na jednodušší operace, až dospějeme k elementárním krokům.
- **Zdola nahoru** – z elementárních kroků vytváříme prostředky, které nakonec umožní zvládnout požadovaný problém.
- **Kombinace obou** – obvyklý postup shora dolů doplníme "částečným krokem" zdola nahoru tím, že se například použijí knihovny funkcí, vyšší programovací jazyk nebo systém pro vytváření programů ( [CASE](/wiki/CASE "CASE")).

## Paradigmata návrhu algoritmů

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=3 "Editace sekce: Paradigmata návrhu algoritmů") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=3 "Editovat zdrojový kód sekce Paradigmata návrhu algoritmů")\]

Při návrhu algoritmů se uplatňuje množství přístupů, které abstrahují od konkrétní úlohy. K nejužívanější metodám návrhu algoritmů patří:

### Rozděl a panuj

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=4 "Editace sekce: Rozděl a panuj") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=4 "Editovat zdrojový kód sekce Rozděl a panuj")\]

Související informace naleznete také v článku [Rozděl a panuj (algoritmus)](/wiki/Rozd%C4%9Bl_a_panuj_(algoritmus) "Rozděl a panuj (algoritmus)").

Klasický případ aplikace postupu odshora dolů. Algoritmy typu rozděl a panuj dělí problém na menší podproblémy, na něž se [rekurzivně](/wiki/Rekurze "Rekurze") aplikují (až po triviální podproblémy, které lze vyřešit přímo), po čemž se dílčí řešení vhodným způsobem sloučí.

Zpracovává se [množina](/wiki/Mno%C5%BEina "Množina") _V_ složená z _n_ údajů. Tato množina se rozdělí na _k_ disjunktních [podmnožin](/wiki/Podmno%C5%BEina "Podmnožina"), které se zpracují každá zvlášť. Získané dílčí výsledky se pak spojí a odvodí se z nich řešení pro celou množinu _V_.

Klasickým případem je [binární vyhledávání](/wiki/Bin%C3%A1rn%C3%AD_vyhled%C3%A1v%C3%A1n%C3%AD "Binární vyhledávání") nebo řadící algoritmus [rychlé řazení](/wiki/Rychl%C3%A9_%C5%99azen%C3%AD "Rychlé řazení").

### Hladový algoritmus

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=5 "Editace sekce: Hladový algoritmus") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=5 "Editovat zdrojový kód sekce Hladový algoritmus")\]

Související informace naleznete také v článku [Hladový algoritmus](/wiki/Hladov%C3%BD_algoritmus "Hladový algoritmus").

Velice přímočarý přístup k řešení určité třídy [optimalizačních úloh](/wiki/Optimaliza%C4%8Dn%C3%AD_%C3%BAloha "Optimalizační úloha").

Zpracovává se množina _V_ složená z _n_ údajů. Úkolem je najít podmnožinu _W_ množiny _V_, která vyhovuje určitým podmínkám a přitom optimalizuje předepsanou [účelovou funkci](/wiki/%C3%9A%C4%8Delov%C3%A1_funkce "Účelová funkce"). Jakákoliv množina _W_, vyhovující daným podmínkám, se nazývá _přípustné řešení_. Přípustné řešení, pro které nabývá účelová funkce optimální hodnoty, se nazývá _optimální řešení_.

Hladový algoritmus se skládá z kroků, které budou procházet jednotlivé prvky z _V_, a v každém kroku rozhodne, zda se daný prvek hodí do optimálního řešení. Prvky _V_ bude vybírat v pořadí určeném jistou výběrovou procedurou. Výběrová procedura bude založená na nějaké optimalizační míře – funkci, která může být odvozena od účelové funkce. V každém kroku ale musíme dostat přípustné řešení. Jakmile je učiněno takové rozhodnutí, už není dále revidováno.
Příkladem je třeba hledání nejkratší [cesty grafu](/wiki/Cesta_(graf) "Cesta (graf)").

### Dynamické programování

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=6 "Editace sekce: Dynamické programování") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=6 "Editovat zdrojový kód sekce Dynamické programování")\]

Související informace naleznete také v článku [Dynamické programování](/wiki/Dynamick%C3%A9_programov%C3%A1n%C3%AD "Dynamické programování").

Dynamické programování se používá v případech kdy lze optimální řešení složit z řešení jednodušších problémů. Protože se požadavky na řešení jednodušších podproblémů mohou mnohokrát opakovat, je nutné zvolit správné pořadí jejich řešení a výsledky si zapamatovat pro opakované použití.

Opírá se o _princip optimality_:
Optimální posloupnost rozhodnutí má tu vlastnost, že ať je počáteční stav a rozhodnutí jakékoliv, musí být všechna následující rozhodnutí optimální vzhledem k výsledkům rozhodnutí prvního.

Typickým příkladem využití dynamického programování jsou [grafové](/wiki/Graf_(teorie_graf%C5%AF) "Graf (teorie grafů)") úlohy a jejich příslušné grafové algoritmy.

### Použití hrubé síly

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=7 "Editace sekce: Použití hrubé síly") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=7 "Editovat zdrojový kód sekce Použití hrubé síly")\]

U některých úloh nezbývá než postupně probírat všechna možná řešení – tak zvaná [metoda hrubé síly](/wiki/%C5%98e%C5%A1en%C3%AD_hrubou_silou "Řešení hrubou silou") – vygenerují se všechny možné posloupnosti a pak se vybere ta nejlepší. V některých případech lze použít metody, které vynechávají popřípadě odkládají procházení možností, které zřejmě nejsou optimální.

### Hledání s návratem (backtracking)

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=8 "Editace sekce: Hledání s návratem (backtracking)") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=8 "Editovat zdrojový kód sekce Hledání s návratem (backtracking)")\]

Související informace naleznete také v článku [Backtracking](/wiki/Backtracking "Backtracking").

Hledání s návratem založené na prohledávání [stavového prostoru](/wiki/Stavov%C3%BD_prostor "Stavový prostor") problému. Též se nazývá metoda pokusů a oprav, metoda zpětného sledování, metoda [prohledávání do hloubky](/wiki/Prohled%C3%A1v%C3%A1n%C3%AD_do_hloubky "Prohledávání do hloubky").

Metodu je možné použít v případě, že řešením je [vektor](/wiki/Vektor "Vektor") ( _x1,...,xn_), jehož jednotlivé složky vybíráme z množiny _Si_, _xi_ ∈ _Si_. Zpravidla je třeba najít [n-tici](/wiki/Uspo%C5%99%C3%A1dan%C3%A1_n-tice "Uspořádaná n-tice"), která optimalizuje nějakou účelovou funkci _P(x1,...,xn)_. Mohou se ale také hledat všechny n-tice, které tuto podmínku splňují. Metoda vytváří n-tice jednu složku po druhé. Přitom používá účelovou funkci (nebo nějakou vhodnou pomocnou funkci) a pro každou nově vytvořenou složku testuje, zda by taková n-tice vůbec mohla být optimální nebo splňovat dané podmínky. Jestliže pro nějaké _xi_ žádaný vektor ( _x1,...,xi_) nemůže být optimální, není třeba už žádný takový vektor testovat a vezmeme další možnou hodnotu i-té složky. Pokud jsou vyčerpány všechny hodnoty i-té složky, vrátí se metoda zpět o jeden krok a zkouší další možnou hodnotu _xi-1_.

Příkladem je třeba [problém osmi dam](/wiki/Probl%C3%A9m_osmi_dam "Problém osmi dam") nebo [chůze koně celou šachovnicí](/wiki/Jezdcova_proch%C3%A1zka "Jezdcova procházka").

## Algoritmická složitost

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=9 "Editace sekce: Algoritmická složitost") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=9 "Editovat zdrojový kód sekce 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é](/wiki/%C5%A0achy "Šachy") 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ů](/wiki/Slo%C5%BEitost_algoritm%C5%AF "Složitost algoritmů") v závislosti na velikosti vstupních dat se používá [asymptotický](/wiki/Asymptota "Asymptota") 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).

## Druhy algoritmů

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=10 "Editace sekce: Druhy algoritmů") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=10 "Editovat zdrojový kód sekce Druhy algoritmů")\]

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

- [Rekurzivní](/wiki/Rekurze "Rekurze") algoritmy, které využívají (volají) samy sebe.
- [Pravděpodobnostní algoritmy](/wiki/Pravd%C4%9Bpodobnostn%C3%AD_algoritmy "Pravděpodobnostní algoritmy") (někdy též _probabilistické_) provádějí některá rozhodnutí náhodně či [pseudonáhodně](/wiki/Pseudon%C3%A1hodn%C3%A1_%C4%8D%C3%ADsla "Pseudonáhodná čísla").
- V případě, že máme k dispozici více počítačů, můžeme úlohu mezi ně rozdělit, což nám umožní ji vyřešit rychleji; tomuto cíli se věnují [paralelní algoritmy](/w/index.php?title=Paraleln%C3%AD_algoritmy&action=edit&redlink=1 "Paralelní algoritmy (stránka neexistuje)").
- [Genetické algoritmy](/wiki/Genetick%C3%A9_algoritmy "Genetické algoritmy") pracují na základě napodobování biologických [evolučních](/wiki/Evoluce "Evoluce") procesů, postupným „pěstováním“ nejlepších řešení pomocí [mutací](/wiki/Mutace "Mutace") a [křížení](/wiki/K%C5%99%C3%AD%C5%BEen%C3%AD "Křížení"). V [genetickém programování](/wiki/Genetick%C3%A9_programov%C3%A1n%C3%AD "Genetické programování") se tento postup aplikuje přímo na algoritmy (resp. programy), které jsou zde chápány jako možná řešení daného problému.
- [Heuristický algoritmus](/wiki/Heuristick%C3%A9_algoritmy "Heuristické algoritmy") si za cíl neklade nalézt přesné řešení, ale pouze nějaké vhodné přiblížení; používá se v situacích, kdy dostupné zdroje (např. čas) nepostačují na využití exaktních algoritmů (nebo pokud nejsou žádné vhodné exaktní algoritmy vůbec známy).

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

## Některé známé algoritmy

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=11 "Editace sekce: Některé známé algoritmy") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=11 "Editovat zdrojový kód sekce Některé známé algoritmy")\]

- [Eratosthenovo síto](/wiki/Eratosthenovo_s%C3%ADto "Eratosthenovo síto")
- [Euklidův algoritmus](/wiki/Euklid%C5%AFv_algoritmus "Euklidův algoritmus")
- [Algoritmus de Casteljau](/wiki/Algoritmus_de_Casteljau "Algoritmus de Casteljau")
- [Dijkstrův algoritmus](/wiki/Dijkstr%C5%AFv_algoritmus "Dijkstrův algoritmus")
- [Bellman-Fordův algoritmus](/wiki/Bellman-Ford%C5%AFv_algoritmus "Bellman-Fordův algoritmus")

## Etymologie

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=12 "Editace sekce: Etymologie") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=12 "Editovat zdrojový kód sekce Etymologie")\]

Slovo algoritmus pochází ze jména významného [perského](/wiki/Persie "Persie") [matematika](/wiki/Matematik "Matematik") žijícího v první polovině [9\. století](/wiki/9._stolet%C3%AD "9. století") (cca [780](/wiki/780 "780")– [840](/wiki/840 "840")), kterým byl [Abū ʻAbd Allāh Muhammad ibn Mūsā al-Chwārizmī](/wiki/Al-Chorezm%C3%AD "Al-Chorezmí") (أبو عبد الله محمد بن موسى الخوارزمي‎) (doslova „Otec Abdulláha, Mohamed, syn Mojžíšův, pocházející z města Chwārizm (Chórézm, dnes [Chiva](/wiki/Chiva "Chiva"))“; tento kraj se nachází v [Uzbekistánu](/wiki/Uzbekist%C3%A1n "Uzbekistán") jižně od [Aralského moře](/wiki/Aralsk%C3%A9_mo%C5%99e "Aralské moře")). Tento učenec ve svém díle prakticky vytvořil systém [arabských číslic](/wiki/Arabsk%C3%A9_%C4%8D%C3%ADslice "Arabské číslice") a základy algebry (konkrétně metody řešení [lineárních](/wiki/Line%C3%A1rn%C3%AD_rovnice "Lineární rovnice") a [kvadratických](/wiki/Kvadratick%C3%A1_rovnice "Kvadratická rovnice") [rovnic](/wiki/Rovnice "Rovnice")), 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](/wiki/Latina "Latina") převedeno jako _algorismus_, a původně znamenalo „provádění aritmetiky pomocí arabských číslic“; abacisté počítali pomocí [abaku](/wiki/Po%C4%8D%C3%ADtadlo "Počítadlo"), 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](/wiki/%C5%98e%C4%8Dtina "Řečtina") 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ě](/wiki/Katal%C3%A1n%C5%A1tina "Katalánština") se vrátilo _s_.) Toto slovo se používalo jako označení různých matematických postupů, např. v [18\. století](/wiki/18._stolet%C3%AD "18. století") označoval [latinský](/wiki/Latina "Latina") termín _algorithmus infitesimalis_ „metodu výpočtů s využitím nekonečně malých veličin, vynalezenou [Leibnizem](/wiki/Leibniz "Leibniz")“. Slovo _algoritmus_ v dnešním významu se používá až zhruba od [20\. století](/wiki/20._stolet%C3%AD "20. století").

## Historie: Vývoj pojmu „algoritmus“

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=13 "Editace sekce: Historie: Vývoj pojmu „algoritmus“") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=13 "Editovat zdrojový kód sekce Historie: Vývoj pojmu „algoritmus“")\]

### Starověké Řecko

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=14 "Editace sekce: Starověké Řecko") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=14 "Editovat zdrojový kód sekce Starověké Řecko")\]

Algoritmy byly použity ve starověkém Řecku. Například Eratosthenovo síto nebo Eukleidův algoritmus.

### Původ

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=15 "Editace sekce: Původ") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=15 "Editovat zdrojový kód sekce Původ")\]

Slovo algoritmus pochází z 9. století a je odvozeno z příjmení perského matematika [Al-Chorezmí](/wiki/Al-Chorezm%C3%AD "Al-Chorezmí"). Slovo původně odkazovalo na pravidla provádění aritmetických operací s arabskými číslicemi, ale vyvinulo se prostřednictvím překladu matematikova jména na „algoritmus“ v 18. století a zahrnuje všechny určité postupy pro řešení problémů nebo plnění úkolů.

### Diskrétní a rozeznatelné symboly

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=16 "Editace sekce: Diskrétní a rozeznatelné symboly") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=16 "Editovat zdrojový kód sekce Diskrétní a rozeznatelné symboly")\]

**Tally-značky**: K počítání stád, pytlů s obilím a peněz ve starověku se používaly akumulační kameny, značky vyškrábané na holích nebo záznam jednotlivých symbolů v jílu. Značky jsou obvykle v [jedničkové soustavě](/wiki/Jedni%C4%8Dkov%C3%A1_soustava "Jedničková soustava"), která se používá při kódování informací pro [Turingovy stroje](/wiki/Turing%C5%AFv_stroj "Turingův stroj") v [teorii automatů](/wiki/Teorie_automat%C5%AF "Teorie automatů").

### Mechanická zařízení s diskrétními stavy

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=17 "Editace sekce: Mechanická zařízení s diskrétními stavy") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=17 "Editovat zdrojový kód sekce Mechanická zařízení s diskrétními stavy")\]

_Hodiny_: Podle Boltera je vynález mechanických hodin jedním z klíčových vynálezů. Zejména pak jejich setrvačná část – [Lihýř](/wiki/Lih%C3%BD%C5%99 "Lihýř"). Přesný automat vedl okamžitě k mechanickému automatu (začátek 13. století) a nakonec k výpočetním strojům – diferenční a [analytický stroj](/wiki/Analytick%C3%BD_stroj "Analytický stroj") ( [Charles Babbage](/wiki/Charles_Babbage "Charles Babbage") a [Ada Lovelace](/wiki/Ada_Lovelace "Ada Lovelace")) v polovině [19\. století](/wiki/19._stolet%C3%AD "19. století"). Lovelace je připočítáno první vytvoření algoritmu, který je zpracovatelný počítačem. Babbageův analytický stroj je považován za první Turingův kompletní počítač. Charles Babbage je někdy nazýván jako historicky první programátor.

_Logické stroje 1870_ – [Jevonsovo](/wiki/William_Stanley_Jevons "William Stanley Jevons") logické počítadlo a logický stroj: Technický problém byl zjednodušení logických rovnice, které bylo představeno v podobě podobné tomu, co je nyní známo jako [Karnaughova mapa](/wiki/Karnaughova_mapa "Karnaughova mapa"). Jevons (1880) popisuje první jednoduché počítadlo ze dřeva vybavené kolíky tak, aby jakákoli jeho třída kombinací šla vyzvednout mechanicky. Tento stroj je představen členům královské společnosti v roce 1870.

_[Tkalcovský stav](/wiki/Tkalcovsk%C3%BD_stav "Tkalcovský stav"), [děrné štítky](/wiki/D%C4%9Brn%C3%BD_%C5%A1t%C3%ADtek "Děrný štítek"), [telegrafie](/wiki/Telegrafie "Telegrafie") a [telefonie](/wiki/Telefonie "Telefonie")_ – elektromechanické relé: Bell a Newell (1971) označují, že tkalcovský stav (1801), předchůdce děrných štítků (1887) a telefonní spínací technologie vedly k vývoji prvních počítačů. V polovině 19. století telegraf, předchůdce telefonu, byl v provozu po celém světě. V roce 1910 se objevil [dálnopis](/wiki/D%C3%A1lnopis "Dálnopis"), který využíval mezinárodní telegrafní abecedu.

_Telefonní sítě elektromechanických relé_ – George Stibitz (1937) pracoval v Bellových laboratořích a dokončil kalkulátor, který je schopen pracovat s komplexními čísly.

### Matematika v průběhu 19. století až do poloviny 20. století

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=18 "Editace sekce: Matematika v průběhu 19. století až do poloviny 20. století") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=18 "Editovat zdrojový kód sekce Matematika v průběhu 19. století až do poloviny 20. století")\]

_Symboly a pravidla_: V rychlém sledu za sebou matematika George Boole, [Gottlob Frege](/wiki/Gottlob_Frege "Gottlob Frege") a [Giuseppe Peano](/wiki/Giuseppe_Peano "Giuseppe Peano") redukovala aritmetiku do sekvence symbolů, se kterými se manipulovalo pomocí daných pravidel. Peanovo _The principles of arithmetic, presented by a new method_ (1888) byl první pokus o axiomatizování matematiky v symbolický jazyk.

Heijenoort dává Fregemu (1879) tuto slávu: Fregovo dílo je možná nejdůležitější práce, která kdy bylo v logice napsána. Tato práce byla dále zjednodušena a umocněna [Alfredem North Whiteheadem](/wiki/Alfred_North_Whitehead "Alfred North Whitehead") a [Bertrandem Russellem](/wiki/Bertrand_Russell "Bertrand Russell") v jejich Principia Mathematica (1910–1913).

_Paradoxy_: Ve stejné době se objevila řada znepokojivých elementů v literatuře, zejména [Burali-Fortiho paradox](/wiki/Burali-Fortiho_paradox "Burali-Fortiho paradox") (1897), [Russellův paradox](/wiki/Russell%C5%AFv_paradox "Russellův paradox") (1902–1903) a Richardův paradox. Výsledné úvahy vedly k [Gödelovým větám o neúplnosti](/wiki/G%C3%B6delovy_v%C4%9Bty_o_ne%C3%BAplnosti "Gödelovy věty o neúplnosti").

_Efektivní vyčíslitelnost_: Ve snaze vyřešit [Entscheidungsproblem](/wiki/Entscheidungsproblem "Entscheidungsproblem") přesně definovaným [Hilbertem](/wiki/David_Hilbert "David Hilbert") v roce 1928 museli matematici nejprve definovat, co se rozumí pod pojmem „efektivní metoda“ nebo „efektivní výpočet“. V rychlém sledu se objevili [Alonzo Church](/wiki/Alonzo_Church "Alonzo Church"), [Stephen Cole Kleene](/wiki/Stephen_Cole_Kleene "Stephen Cole Kleene") a J. B. Rosser, kteří jsou známí především díky [lambda kalkulu](/wiki/Lambda_kalkul "Lambda kalkul"). Church pak společně s [Turingem](/wiki/Alan_Turing "Alan Turing") ukázal, že lambda kalkul (a další výpočetní modely) má výpočetní sílu [Turingova stroje](/wiki/Turing%C5%AFv_stroj "Turingův stroj"), což otevřelo cestu k [Churchově–Turingově tezi](/wiki/Churchova%E2%80%93Turingova_teze "Churchova–Turingova teze").

## Právní ustanovení

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=19 "Editace sekce: Právní ustanovení") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=19 "Editovat zdrojový kód sekce Právní ustanovení")\]

Algoritmy nejsou obvykle patentovány. Samotná manipulace s abstraktními pojmy, čísly, či dokonce signály není v USA (dle USPTO 2006) považována za proces. Jinými slovy lze říci, že algoritmy nelze patentovat (podobně jako v kauze [Gottschalk v. Benson](/w/index.php?title=Gottschalk_v._Benson&action=edit&redlink=1 "Gottschalk v. Benson (stránka neexistuje)")). Nicméně některá praktická využití algoritmů lze patentovat. Například v kauze [Diamond v. Diehr](/w/index.php?title=Diamond_v._Diehr&action=edit&redlink=1 "Diamond v. Diehr (stránka neexistuje)") byl patentován jednoduchý algoritmus [zpětné vazby](/wiki/Zp%C4%9Btn%C3%A1_vazba "Zpětná vazba") na pomoc při vytvrzování syntetické gumy. Patentování [softwaru](/wiki/Software "Software") je i přes to velmi kontroverzní. Některé patentované algoritmy se potýkají s negativní kritikou, a to především algoritmy sloužící ke [kompresi dat.](/wiki/Komprese_dat "Komprese dat")

## Reference

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=20 "Editace sekce: Reference") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=20 "Editovat zdrojový kód sekce Reference")\]

1. heslo _Algorithmus_. [Ottův slovník naučný](/wiki/Ott%C5%AFv_slovn%C3%ADk_nau%C4%8Dn%C3%BD "Ottův slovník naučný") I, p. 857
2. [Donald E. Knuth](/wiki/Donald_E._Knuth "Donald E. Knuth"): _[The Art of Computer Programming](/wiki/The_Art_of_Computer_Programming "The Art of Computer Programming")_, Vol 1–3, Addison Wesley 1998. [ISBN](/wiki/International_Standard_Book_Number "International Standard Book Number") [0-201-48541-9](/wiki/Speci%C3%A1ln%C3%AD:Zdroje_knih/0-201-48541-9 "Speciální:Zdroje knih/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._](http://www.dcc.uchile.cl/~rbaeza/handbook/)
4. _[Dictionary of Algorithms and Data Structures](http://www.nist.gov/dads/)_. „Slovník algoritmů, technik, datových struktur, typických problémů a příslušných definic.“
5. [United States Patent and Trademark Office](/w/index.php?title=United_States_Patent_and_Trademark_Office&action=edit&redlink=1 "United States Patent and Trademark Office (stránka neexistuje)") (2006), [_2106.02 \*\*>Mathematical Algorithms: 2100 Patentability_](http://www.uspto.gov/web/offices/pac/mpep/documents/2100_2106_02.htm), Manual of Patent Examining Procedure (MPEP). Latest revision August 2006

## Externí odkazy

\[ [editovat](/w/index.php?title=Algoritmus&veaction=edit&section=21 "Editace sekce: Externí odkazy") \| [editovat zdroj](/w/index.php?title=Algoritmus&action=edit&section=21 "Editovat zdrojový kód sekce Externí odkazy")\]

- [![Logo Wikimedia Commons](//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/12px-Commons-logo.svg.png)](/wiki/Wikimedia_Commons "Wikimedia Commons")Obrázky, zvuky či videa k tématu [algoritmus](https://commons.wikimedia.org/wiki/Category:Algorithms "c:Category:Algorithms") na [Wikimedia Commons](/wiki/Wikimedia_Commons "Wikimedia Commons")
- ![](//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/13px-Wikiquote-logo.svg.png)Téma [Algoritmus](https://cs.wikiquote.org/wiki/Algoritmus "q:Algoritmus") ve Wikicitátech
- ![](//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Wiktionary-logo-cs.svg/16px-Wiktionary-logo-cs.svg.png)Slovníkové heslo [algoritmus](https://cs.wiktionary.org/wiki/algoritmus "wikt:algoritmus") ve Wikislovníku
- [První algoritmus napsala žena. Programovala dávno před prvním počítačem](http://technet.idnes.cz/prvni-programatorka-ada-lovelace-dqd-/tec_technika.aspx?c=A151209_141727_tec_technika_pka)

[Autoritní data](/wiki/Autoritn%C3%AD_kontrola "Autoritní kontrola")[![Editovat na Wikidatech](//upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)](https://www.wikidata.org/wiki/Q8366#identifiers "Editovat na Wikidatech")

- [NKC](/wiki/N%C3%A1rodn%C3%AD_knihovna_%C4%8Cesk%C3%A9_republiky "Národní knihovna České republiky"): [ph114026](https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph114026)
- [BNE](/wiki/N%C3%A1rodn%C3%AD_knihovna_%C5%A0pan%C4%9Blska "Národní knihovna Španělska"): [XX527980](http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=XX527980)
- [BNF](/wiki/Francouzsk%C3%A1_n%C3%A1rodn%C3%AD_knihovna "Francouzská národní knihovna"): [cb119358199](https://catalogue.bnf.fr/ark:/12148/cb119358199) [(data)](https://data.bnf.fr/ark:/12148/cb119358199)
- [GND](/wiki/Gemeinsame_Normdatei "Gemeinsame Normdatei"): [4001183-5](https://d-nb.info/gnd/4001183-5)
- [LCCN](/wiki/Library_of_Congress_Control_Number "Library of Congress Control Number"): [sh85003487](https://id.loc.gov/authorities/subjects/sh85003487)
- [LNB](/wiki/Loty%C5%A1sk%C3%A1_n%C3%A1rodn%C3%AD_knihovna "Lotyšská národní knihovna"): [000052282](https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=000052282&P_CON_LNG=ENG)
- [NDL](/wiki/N%C3%A1rodn%C3%AD_parlamentn%C3%AD_knihovna_Japonska "Národní parlamentní knihovna Japonska"): [00560337](https://id.ndl.go.jp/auth/ndlna/00560337)
- [NLI](/wiki/N%C3%A1rodn%C3%AD_knihovna_Izraele "Národní knihovna Izraele"): [987007293927505171](http://olduli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=987007293927505171)

Citováno z „ [https://cs.wikipedia.org/w/index.php?title=Algoritmus&oldid=23824364](https://cs.wikipedia.org/w/index.php?title=Algoritmus&oldid=23824364)“

[Kategorie](/wiki/N%C3%A1pov%C4%9Bda:Kategorie "Nápověda:Kategorie"):

- [Algoritmy](/wiki/Kategorie:Algoritmy "Kategorie:Algoritmy")
- [Programování](/wiki/Kategorie:Programov%C3%A1n%C3%AD "Kategorie:Programování")

Skryté kategorie:

- [Monitoring:Články s identifikátorem NKC](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_NKC "Kategorie:Monitoring:Články s identifikátorem NKC")
- [Monitoring:Články s identifikátorem BNE](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_BNE "Kategorie:Monitoring:Články s identifikátorem BNE")
- [Monitoring:Články s identifikátorem BNF](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_BNF "Kategorie:Monitoring:Články s identifikátorem BNF")
- [Monitoring:Články s identifikátorem GND](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_GND "Kategorie:Monitoring:Články s identifikátorem GND")
- [Monitoring:Články s identifikátorem LCCN](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_LCCN "Kategorie:Monitoring:Články s identifikátorem LCCN")
- [Monitoring:Články s identifikátorem LNB](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_LNB "Kategorie:Monitoring:Články s identifikátorem LNB")
- [Monitoring:Články s identifikátorem NDL](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_NDL "Kategorie:Monitoring:Články s identifikátorem NDL")
- [Monitoring:Články s identifikátorem NLI](/wiki/Kategorie:Monitoring:%C4%8Cl%C3%A1nky_s_identifik%C3%A1torem_NLI "Kategorie:Monitoring:Články s identifikátorem NLI")

- Stránka byla naposledy editována 15. 4. 2024 v 10:02.
- Text je dostupný pod [licencí Creative Commons Uveďte původ – Zachovejte licenci](https://creativecommons.org/licenses/by-sa/4.0/deed.cs), případně za dalších podmínek. Podrobnosti naleznete na stránce [Podmínky užití](https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/cs).

- [Ochrana osobních údajů](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy)
- [O Wikipedii](/wiki/Wikipedie)
- [Vyloučení odpovědnosti](/wiki/Wikipedie:Vylou%C4%8Den%C3%AD_odpov%C4%9Bdnosti)
- [Kontaktujte Wikipedii](//cs.wikipedia.org/wiki/Wikipedie:Kontakt)
- [Kodex chování](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct)
- [Vývojáři](https://developer.wikimedia.org)
- [Statistiky](https://stats.wikimedia.org/#/cs.wikipedia.org)
- [Prohlášení o cookies](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement)
- [Mobilní verze](//cs.m.wikipedia.org/w/index.php?title=Algoritmus&mobileaction=toggle_view_mobile)

- [![Wikimedia Foundation](/static/images/footer/wikimedia-button.svg)](https://wikimediafoundation.org/)
- [![Powered by MediaWiki](/w/resources/assets/poweredby_mediawiki.svg)](https://www.mediawiki.org/)