Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Výpočetní složitost Odhlédneme-li od realizace algoritmu na konkrétním hardwaru a v konkrétním prostředí informačního systému, lze časovou složitost hodnotit.

Podobné prezentace


Prezentace na téma: "Výpočetní složitost Odhlédneme-li od realizace algoritmu na konkrétním hardwaru a v konkrétním prostředí informačního systému, lze časovou složitost hodnotit."— Transkript prezentace:

1 Výpočetní složitost Odhlédneme-li od realizace algoritmu na konkrétním hardwaru a v konkrétním prostředí informačního systému, lze časovou složitost hodnotit počtem kroků, které algoritmus musí provést, než problém rozhodne. Toto hodnocení lze provést na různých úrovních. Krajní přístupy jsou: – Rigorózní přístup: Algoritmus uvažujeme zcela nezávisle na konkrétním počítači jako proces probíhající na Turingově stroji. Hodnotíme počet kroků Turingova stroje, od počátku jeho práce do okamžiku jeho zastavení a rozhodnutí problému. Praktický přístup: Odhadujeme počet operací reálného stroje s tím, že (v rozporu se skutečností) považujeme všechny operace za „stejně časově náročné

2 Průměrná a pesimistická složitost Je zřejmé, že u téhož algoritmu i při stejném rozsahu zpracovávaných dat může výpočet trvat různou dobu v závislosti na konkrétních hodnotách vstupních dat. Bude totiž pro různá data potřeba provést různý počet kroků. Je tedy třeba rozlišovat – Pesimistickou výpočetní složitost – definovanou jako složitost, které je dosaženo v „nejhorším možném případě“ pro daný rozsah zpracovávaných dat. – Průměrnou výpočetní složitost – definovanou jako aritmetický průměr složitostí pro různé vstupy daného rozsahu s přihlédnutím k pravděpodobnostnímu rozložení těchto možných vstupů. Odhad pesimistické výpočetní složitosti bývá jednodušší než odhad složitosti průměrné.

3 Funkce časové složitosti Je zřejmé, že sledovaná doba výpočtu nezávisí pouze na algoritmu, ale velmi výrazně i na rozsahu dat, s kterými algoritmus pracuje. Jde buď o vstupní data úlohy, nebo o rozsah datové základny s kterou program pracuje, případně o oboje. Tomuto údaji budeme říkat rozměr vstupu charakterizován přirozeným číslem. Časovou složitost nelze tedy korektně měřit základní měřením, kde hodnotou míry je číslo. Časovou složitost lze měřit pouze zobecněným měřením, kde mírou složitosti je funkce, která rozměru vstupu přiřazuje čas, respektive počet operací potřebných pro provední výpočtu.

4 Asymptotická složitost U těchto funkcí se zajímáme především o jejich růst v závislosti na růstu rozměru vstupu. Tedy o tak zvané asymptotické chování této funkce při neomezeném růstu rozměru vstupu. Toto chování posuzujeme porovnáním s chováním běžně známých funkcí, o jejichž růstu máme určitou představu.

5 Symboly pro asymptotickou složitost

6 Typické třídy výpočetní složitosti Θ (1) – růst nezáleží na rozměru vstupu Θ (log n) – logaritmický růst (základ logaritmu není podstatný – proč?) Θ (n) – lineární růst (složitost je přímo úměrná rozměru dat) Θ (n × log n) – tento růst dosahují „chytré“ algoritmy řazení („třídění“) Θ (n 2 ) – kvadratický růst, dosahují jednoduché algoritmy řazení Θ (n 3 ) – kubický růst typický pro některé operace s maticemi a algoritmy řešení soustav lineárních rovnic Θ (n k ) pro nějaké přirozené číslo k z N – polynomiální růst Θ (k n ), k > 1 – exponenciální růst k > 1 ( nejčastěji k = 2, tedy O(2 n )) Θ (n!) – faktoriální růst.

7 Srovnání doby výpočtu log 2 nN N  log 2 n n2n2 n3n3 n4n4 2n2n n!n! 2 10  s20  s 40  s80  s160  s40  s20  s 5 23,1  s50  s116  s250  s 1,25ms6,25ms 320  s 1,2ms 10 33,2  s100  s332  s 1ms10ms100ms10,2 ms1,17s 15 39,1  s150  s587  s 2,25ms33,8ms507ms328ms 15,1 days 20 43,2  s200  s864  s 4ms80ms1,6s10,5s years 25 46,4  s250  s 1,16ms6,25ms156ms3,91s5,59min  30 19,1  s300  s 5,73ms9ms270ms37,5s2,98h  50 56,4  s500  s 28,2ms25ms1,25s1,04min357years  ,4  s 1ms6,64ms100ms10s16,7min  ,4  s 2ms15,3ms400ms1,34min4,47h  50089,4  s5ms44,4ms2,5s4,17min13,9h 

8 Srovnání doby výpočtu Původ ní 2-krát5-krát10-krát 100- krát krát (n)(n) (n2)(n2) (n3)(n3)  (2 n )  (n!)

9 Třída deterministické složitosti Časová složitost problému je pak definována takto: Řekneme, že problém patří do třídy složitosti T(f(n)), kde f je funkce N → N pokud může být vyřešen nějakým počítačem v čase O(f(n)) pro všechny přípustné vstupy o rozměru n.

10 Třídy nedeterministické složitosti Jestliže existuje nějaký nedeterministický Turingův stroj, který řeší rozhodovací problém pro všechny přípustné vstupy o rozměru n za O(f(n)) kroků (při vhodné volbě posloupnosti svých po sobě bezprostředně následujících konfigurací), potom říkáme, že tento rozhodovací problém patří do třídy nedeterministické časové složitosti NT(f(n)).

11 Vztah deterministické a nedeterministické složitosti Třídy deterministické časové složitosti T(f(n)) představují horní odhady složitosti nalezení řešení problémů „bez nápovědi“. Tedy čas a prostor pro nalezení dosud neznámého řešení problémů. Třídy nedeterministické časové složitosti NT(f(n)) představují horní odhady složitosti ověření, zda nalezené řešení skutečně řešením je. Tedy třídy složitosti „zkoušky“ správnosti řešení, které již známe.

12 Klasifikace problémů Je zřejmé, že problémy, které mají neakceptovatelnou NT nejsou pro praxi příliš zajímavé. Nemůžeme-li je v prakticky realizovatelné době zkontrolovat, nebudeme je asi ani v životě k ničemu potřebovat. Z nich nás tedy „hlava bolet nemusí“. U problémů, které mají přijatelnou NT složitost můžeme řešení zkontrolovat. Můžeme je tedy využít. U řady důležitých problémů tohoto typu však neznáme algoritmus řešení, který by patřil do přijatelné třídy časové deterministické složitosti. Řešení tedy neumíme při netriviálním rozměru vstupu nalézt v rozumném čase.

13 P-těžké problémy Polynomiálně časově těžké nebo je časově P-těžké problémy jsou problémy třídy Jedná se tedy o problémy, jejichž řešení jsme schopni v „rozumném čase nalézt“. Problémy, které do této třídy nepatří je třeba považovat za “prakticky neřešitelné” pro netriviální rozměry vstupních dat.

14 NP těžké problémy Podobně lze problémy klasifikovat z hlediska nedeterministické časové složitosti. Třída zahrnuje všechny problémy, které lze nedeterministicky řešit (známé řešení zkontrolovat) pomocí nějakého nedeterministického stroje v konečném čase. Těmto problémům se říká časově NP-těžké problémy.

15 Problém NP vers P Přes velké úsilí lidstva nebyla dosud zodpovězena zásadní otázka, zda

16 NP úplné problémy NP-těžkých problémů Není pro ně znám polynomiální deterministický algoritmus řešení. Mají navíc tu vlastnost, že kdybychom aspoň pro jediný z těchto problémů polynomiální algoritmus objevili, dovedli bychom v polynomiálním čase řešit všechny NP-těžké problémy a dokázali tak rovnost P TIME = NP TIME. Proto jsou problémy této třídy tak zajímavé.

17 Příklady NP úplných problémů Problém splnitelnosti Boolovské formule (SAT problém) Pro formuli zapsanou v konjunktivně disjunktivní normální formě zjistit, zda existuje nějaké pravdivostní ohodnocení TRUE / FALSE všech proměnných ve formuli, tak, aby výsledná pravdivostní hodnota formule byla TRUE, či nikoliv

18 Příklady NP úplných problémů Problém hamiltonovského cyklu v grafu: – Je dán orientovaný graf. Existuje v grafu uzavřená orientovaná cesta, která prochází každým uzlem právě jednou nebo neexistuje? Problém okružní hamiltonovské cesty: – Je dán neorientovaný graf. Existuje v tomto grafu neuzavřená cesta, na které leží každý vrchol právě jednou nebo neexistuje? Problém obchodního cestujícího: – Je dána množina míst. Vzdálenosti mezi libovolnými dvěma místy jsou dány jako celá kladná čísla. Existuje hamiltonovská cesta taková, že součet všech vzdáleností mezi sousedními místy je nejvýše roven zadanému kladnému číslu nebo neexistuje? Problém dvou loupežníků: Je dána množina n přirozených čísel. Je možné tuto množinu rozdělit na dvě disjunktní podmnožiny tak, aby součet čísel v obou těchto podmnožinách byl stejný nebo to možné není?

19 Příklady NP úplných problémů Problém řešení kvadratické diofantické rovnice: – Jsou dána přirozená čísla a, b a c. Existují přirozená čísla x a y tak, že a ⋅ x 2 + b ⋅ y = c nebo neexistují? Problém celočíselného programování: – Je dána matice celých čísel A typu (m, n) a celočíselný sloupcový vektor pravých stran o m složkách b. Existuje celočíselný m-rozměrný vektor x takový že A ⋅ x ≤ b nebo neexistuje? Problém prvočísel: – Pro dané přirozené číslo rozhodnout, zda je prvočíslem, či nikoliv.

20 Příklady NP úplných problémů Problém ruksaku: – Nechť je dána množina dvojic čísel S = {(s 1, v 1 ), …, (s N, v N )}. Proměnné s označují rozměr jednotlivých předmětů, proměnné v jejich cenu. Nechť b je celkový objem, který je k dispozici a k nechť je požadovaná celková cena. Lze vybrat podmnožinu S, tak, aby součet a Σ nebo nelze? Tedy tak, aby se nám do ruksaku vešly předměty aspoň zadané úhrnné hodnoty? bsNjj≤Σ=1 Problém optimalizace programu: – Je možné daný algoritmus realizovat pouze užitím k paměťových registrů nebo nelze, je-li k zadané číslo (rozsah paměti, která je k dispozici)?

21 Taxonomie problémů, případ NP není P Všechny rozhodovací problémy Nepřečíslitelné problémy Přečíslitelné, ale nerozhodnutelné problémy Doplňkově Nepřečíslitelné problémy Doplňkově přečíslitelné problémy Rozhodnutelné problémy Nikoli NP problémy NP problémy NP, ale ne P problémy NP, ale ne NP úplné NP úplné problémy

22 Taxonomie problémů, případ NP je P Všechny rozhodovací problémy Nepřečíslitelné problémy Přečíslitelné, ale nerozhodnutelné problémy Doplňkově Nepřečíslitelné problémy Doplňkově přečíslitelné problémy Rozhodnutelné problémy Nikoli NP problémy NP problémy NP, ale ne P problémy NP, ale ne NP úplné NP úplné problémy Toto vše je to samé, jako NP


Stáhnout ppt "Výpočetní složitost Odhlédneme-li od realizace algoritmu na konkrétním hardwaru a v konkrétním prostředí informačního systému, lze časovou složitost hodnotit."

Podobné prezentace


Reklamy Google