Teorie algoritmů

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 22. srpna 2021; ověření vyžaduje 1 úpravu .

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.

Historie

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 .

Výpočtové modely

Church-Turingova teze a algoritmicky neřešitelné problémy

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 .

Pokyny

Teorie algoritmů se vyvíjí především ve třech směrech:

Analýza složitosti algoritmů

Úč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 .

Třídy obtížnosti

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í.

Matematické aplikace teorie algoritmů

Některé aplikace teorie algoritmů:

Poznámky

  1. Semjonov A. L. , Uspensky V. A. Matematická logika ve výpočetních vědách a výpočetní praxi. // Bulletin Akademie věd SSSR , č. 7, s. 93-103
  2. Uspenskij V. A. , Semjonov A. L. Řešitelné a neřešitelné algoritmické problémy. // Kvant , 1985, č. 7, s. 9-15
  3. V. A. Uspensky , A. L. Semenov Teorie algoritmů: hlavní objevy a aplikace, M., Nauka , 1987, 288 s.

Literatura

Odkazy