Teorie algoritmů je odvětví matematiky , které studuje obecné vlastnosti a vzory algoritmů a různé formální modely pro jejich reprezentaci. Mezi úkoly teorie algoritmů patří formální důkaz algoritmické neřešitelnosti problémů, asymptotická analýza složitosti algoritmů , klasifikace algoritmů podle tříd složitosti , vývoj kritérií pro srovnávací hodnocení kvality algoritmů atd. Společně s matematickou logikou tvoří teorie algoritmů teoretický základ výpočetních věd [1] [2] , teorie přenosu informace, informatiky , telekomunikačních systémů a dalších oblastí vědy a techniky.
Vývoj teorie algoritmů začíná Kurtem Gödelovým důkazem teorémů neúplnosti pro formální systémy zahrnující aritmetiku, z nichž první byl prokázán v roce 1931 . Předpoklad, který v souvislosti s těmito větami vznikl o nemožnosti algoritmického řešení mnoha matematických problémů (zejména problému odvoditelnosti v predikátovém počtu ), vyvolal potřebu standardizovat koncept algoritmu. První standardizované verze tohoto konceptu vyvinuli ve 30. letech 20. století Alan Turing , Emil Post a Alonzo Church . Jejich navrhovaný Turingův stroj , Postův stroj a lambda počet se ukázaly být navzájem ekvivalentní. Na základě práce Gödela představil Stephen Kleene koncept rekurzivní funkce , který se také ukázal jako ekvivalentní výše uvedenému.
Jednou z nejúspěšnějších standardizovaných variant algoritmu je koncept normálního algoritmu představený Andrey Markovem . Byl vyvinut deset let po práci Turinga, Posta, Churche a Kleenea v souvislosti s důkazem algoritmické neřešitelnosti řady algebraických problémů.
V pozdějších letech významně přispěli k teorii algoritmů Donald Knuth , Alfred Aho a Jeffrey Ullman .
Alan Turing se domníval (známý jako " Church-Turingova teze "), že jakýkoli algoritmus - v intuitivním smyslu slova - může být reprezentován ekvivalentním Turingovým strojem . Zpřesnění pojmu vyčíslitelnost na základě konceptu takového stroje (a dalších konceptů jemu ekvivalentních) otevřelo možnost důsledně prokázat algoritmickou neřešitelnost různých hromadných problémů (problémy hledání jednotné metody řešení určité třídy problémů , jehož podmínky se mohou v určitých mezích lišit).
Nejjednodušším příkladem algoritmicky neřešitelného hromadného problému je problém použitelnosti algoritmu, zastavovací problém , který je následující: je třeba najít obecnou metodu, která by umožňovala libovolný Turingův stroj (daný jeho programem) a libovolný počáteční stav pásky tohoto stroje k určení, zda práce stroj ukončí v konečném počtu kroků, nebo bude pokračovat donekonečna?
Během prvního desetiletí historie teorie algoritmů byly neřešitelné hromadné problémy nalezeny pouze samy o sobě (včetně výše popsaného "problému použitelnosti") a v matematické logice ("problém odvoditelnosti" v klasickém predikátovém počtu ). Proto se věřilo, že teorie algoritmů je „cestou“ matematiky, což pro takové klasické sekce jako „ algebra “ nebo „ analýza “ nevadí . Situace se změnila poté , co Andrei Markov a Emil Post v roce 1947 prokázali algoritmickou neřešitelnost známého problému rovnosti v algebře pro konečně generované a konečně definované pologrupy ( Thueův problém ). Následně byla stanovena algoritmická neřešitelnost mnoha dalších "čistě matematických" hromadných problémů, nejznámějším výsledkem v této oblasti je algoritmická neřešitelnost Hilbertova desátého problému dokázaná Jurijem Matiyasevichem .
Teorie algoritmů se vyvíjí především ve třech směrech:
Účelem analýzy je najít optimální algoritmus. Kritériem je pracnost (počet elementárních operací, které algoritmus vyžaduje). Funkce vstupu práce je poměr vstupu práce ke vstupním datům.
Složitost může být v různé míře ovlivněna vlastnostmi vstupních dat:
Jeden ze zjednodušených typů analýzy nákladů algoritmů je asymptotický s velkým množstvím vstupních dat. Odhadem použité funkce náročnosti práce je „složitost“ algoritmu , která umožňuje určit vztah mezi náročností práce a množstvím dat. Při asymptotické analýze algoritmů se používá zápis používaný v matematické asymptotické analýze. Hlavní hodnocení obtížnosti jsou uvedeny níže.
Hlavní odhad funkce složitosti algoritmu (kde n je množství dat, „délka vstupu“) je :
jestliže pro g > 0, pro n > 0 existují kladné c 1 , c 2 , n 0 takové, že:
v ; jinými slovy, lze najít takové a , že pro dostatečně velké , bude uzavřeno mezi:
a .V tomto případě také říkají, že funkce je asymptoticky přesný odhad funkce , protože z definice se funkce neliší od funkce až do konstantního faktoru (viz asymptotická rovnost ). Například pro metodu třídění "heapsort" je vstup práce:
, to je .Od vyplývá .
není funkcí, ale souborem funkcí popisujících růst až po konstantní faktor. udává horní i dolní mez růstu funkce. Často je nutné tyto odhady posuzovat samostatně. Odhad je horní asymptotický odhad složitosti algoritmu. Říkáme, že pokud:
.Jinými slovy, zápis znamená, že patří do třídy funkcí, které nerostou rychleji než funkce až do konstantního faktoru.
Odhad specifikuje nižší asymptotický odhad růstu funkce a definuje třídu funkcí, které rostou ne pomaleji než do konstantního faktoru. , pokud:
.Zápis například označuje třídu funkcí, které nerostou pomaleji než ; tato třída zahrnuje všechny polynomy se stupněm větším než jedna, stejně jako všechny mocninné funkce se základem větším než jedna.
Rovnost platí tehdy a jen tehdy, když a .
Asymptotická analýza algoritmů má nejen praktický, ale i teoretický význam. Bylo například prokázáno, že všechny třídicí algoritmy založené na párovém porovnávání prvků seřadí n prvků v čase ne méně než .
Důležitou roli ve vývoji asymptotické analýzy algoritmů sehráli Alfred Aho , Jeffrey Ullman , John Hopcroft .
V rámci klasické teorie jsou problémy klasifikovány podle jejich složitosti ( P-těžké , NP-těžké , exponenciálně těžké a další):
Třída "P" je obsažena v "NP". Klasickým příkladem problému NP je „ Problém cestujícího obchodníka “.
Protože "P" je obsaženo v "NP", příslušnost problému do třídy "NP" často odráží naše současné chápání toho, jak tento problém vyřešit, a není konečné. V obecném případě není důvod se domnívat, že nelze najít P-řešení pro ten či onen NP-problém. Otázka možné ekvivalence tříd "P" a "NP" (možnost nalezení P-řešení pro jakýkoli NP-problém) je považována za jednu z hlavních v moderní teorii složitosti algoritmů; zatím nebyla nalezena žádná odpověď. Jeho samotná formulace je možná díky zavedení konceptu NP-úplných problémů ; lze na ně zredukovat jakékoli NP-problémy — a pokud je nalezeno P-řešení pro NP-úplný problém, pak bude nalezeno P-řešení pro všechny NP-problémy. Příkladem NP-úplného problému je „ Problém s konjunktivitou “.
Studium složitosti algoritmů umožnilo nově se podívat na řešení mnoha klasických matematických problémů a najít pro některé jejich řady (násobení polynomů a matic, řešení lineárních soustav rovnic a další) řešení, která vyžadují méně zdroje než tradiční.
Některé aplikace teorie algoritmů:
![]() |
---|
Odvětví matematiky | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Portál "Věda" | ||||||||||
Základy matematiky teorie množin matematická logika algebra logiky | ||||||||||
Teorie čísel ( aritmetika ) | ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
|