Složitost. Teoretická informatika Tomáš Foltýnek

Podobné dokumenty
Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Od Turingových strojů k P=NP

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

Třídy složitosti P a NP, NP-úplnost

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM:

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Úvod do informatiky. Miroslav Kolařík

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

10. Složitost a výkon

Složitost Filip Hlásek

ALGORITMY A DATOVÉ STRUKTURY

Výpočetní složitost algoritmů

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

NP-úplnost. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 23. května / 32

Složitost a moderní kryptografie

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

Třída PTIME a třída NPTIME. NP-úplnost.

(viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu.

Různé algoritmy mají různou složitost

Výpočetní složitost I

2. Složitost, grafové algoritmy (zapsal Martin Koutecký)

Z. Sawa (VŠB-TUO) Teoretická informatika 18. prosince / 67

Týden 11. Přednáška. Teoretická informatika průběh výuky v semestru 1. Nejprve jsme dokončili témata zapsaná u minulé přednášky.

Digitální učební materiál

Problémy třídy Pa N P, převody problémů

Třída PTIME a třída NPTIME. NP-úplnost.

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

TGH12 - Problém za milion dolarů

KMI/VCS1 Vyčíslitelnost a složitost

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

Algoritmy I, složitost

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Teoretická informatika průběh výuky v semestru 1

Časová složitost / Time complexity

Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

5.6.3 Rekursivní indexace složitostních tříd Uniformní diagonalizace Konstrukce rekursivních indexací a aplikace uniformní diagonalizace

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

YZTI - poznámky ke složitosti

Datové struktury 2: Rozptylovací tabulky

Dynamické programování

Digitální učební materiál

COMPLEXITY

Časová a prostorová složitost algoritmů

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Teoretická informatika průběh výuky v semestru 1

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Složitost her. Herní algoritmy. Otakar Trunda

Algoritmy a datové struktury

Pozn.MinulejsmesekPSPACEnedostali,protojezdepřekryvstextemzminula.

Složitost problémů. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 25. dubna / 23

Přijímací zkouška - matematika

Databáze, sítě a techniky programování X33DSP

Složitost. Složitost p.1/46

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2016

1. Algoritmy a problémy V matematice se často setkáváme s tvrzeními týkajícími se objektů, které neumíme zkonstruovat. Můžeme např.

Rozhodnutelné a nerozhodnutelné problémy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna / 49

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Týden 14. Přednáška. Teoretická informatika průběh výuky v semestru 1. PSPACE, NPSPACE, PSPACE-úplnost

TGH05 - Problém za milion dolarů.

Doba běhu daného algoritmu/programu. 1. Který fragment programu z následujících dvou proběhne rychleji?

Intervalová data a výpočet některých statistik

Dynamické programování

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2016

Úvod do informatiky. Miroslav Kolařík

Výroková a predikátová logika - II

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Poznámky k přednášce NTIN090 Úvod do složitosti a vyčíslitelnosti. Petr Kučera

Algoritmizace prostorových úloh

Úvod do problematiky

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Základy složitosti a vyčíslitelnosti

1 Algoritmus. 1.1 Úvod

FUNKCE A JEJICH VLASTNOSTI

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2017

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

Digitální učební materiál

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

Základy složitosti a vyčíslitelnosti

Výroková a predikátová logika - II

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

NP-úplnost problému SAT

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2015

Výroková a predikátová logika - III

Formální jazyky a gramatiky Teorie programovacích jazyků

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2014

Úvod do složitosti. Jan Konečný. 12. listopadu Jan Konečný Úvod do složitosti 12. listopadu / 27

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Tato tematika je zpracována v Záznamy přednášek: str

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

4. Teorie informace, teorie složitosti algoritmů. doc. Ing. Róbert Lórencz, CSc.

Základy algoritmizace a programování

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Logaritmus, logaritmická funkce, log. Rovnice a nerovnice. 3 d) je roven číslu: c) -1 d) 0 e) 3 c) je roven číslu: b) -1 c) 0 d) 1 e)

Základy algoritmizace, návrh algoritmu

Transkript:

Složitost Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz

Teoretická informatika 2 Opakování z minulé přednášky Co říká Churchova teze? Jak lze kódovat Turingův stroj? Co je to Univerzální Turingův stroj? Formulujte problém příslušnosti pro Turingovy stroje. Je tento problém rozhodnutelný? Proč? Jakým způsobem lze dokázat, že existují problémy, které nejsou ani částečně rozhodnutelné? Formulujte problém zastavení pro TS. Jak dokázat, že problém zastavení je nerozhodnutelný? Vysvětlete metodu redukce.

Teoretická informatika 3 Rozhodnutelné problémy Je-li problém rozhodnutelný, ještě to neznamená, že je rozhodnutelný v rozumném čase. Za rozumný čas považujeme takový čas, kdy je pro nás výsledek výpočtu ještě využitelný. Rozhodnutelností se zabývá teorie vyčíslitelnosti Časovou náročností se zabývá teorie složitosti O tom bude dnešní přednáška

Teoretická informatika 4 Složitost Složitost algoritmu vyjadřuje náročnost algoritmu na výpočetní prostředky počítače v závislosti na délce vstupních dat. Časová složitost náročnost algoritmu na čas procesoru V jakých jednotkách časovou složitost měřit? Značení: T(x) Prostorová složitost náročnost algoritmu na operační paměť V jakých jednotkách prostorovou složitost měřit? Značení: S(x)

Teoretická informatika 5 Výpočetní model pro složitost Turingův stroj není vhodný kvůli sekvenčnímu přístupu na pásku RAM stroj Neomezený počet registrů pro uložení libovolně velkých čísel Instrukce READ, STORE, LOAD, ADD, SUB, JUMP, JPOS, JNEG, JZERO, HALT V základních rysech odpovídá reálnému počítači

Teoretická informatika 6 Délka výpočtu výrazů T(a) = 1, je-li a konstanta či proměnná T(a b) = 1 + T(a) + T(b), kde {+,-,*,/,div,mod} T(a AND b) = 1 + T(a) [ + T(b)] T(a OR b) = 1 + T(a) [ + T(b)] T(NOT a) = 1 + T(a)

Teoretická informatika 7 Čas na vykonání příkazu Elementární příkazy (délka výpočtu 1): načtení/výpis jedné proměnné přiřazení (nutno přičíst čas potřebný na vyhodnocení přiřazované hodnoty) T(IF a THEN b ELSE c) = 1 + T(a) + T(b) T(c) T(FOR i:=1 TO n DO p) = n*(p+2)

Teoretická informatika 8 Druhy složitosti Složitost v nejhorším případě: ze všech možných vstupních dat uvažujeme ta, nad nimiž je výpočet (časově) nejnáročnější Složitost v nejlepším případě: ze všech možných vstupních dat uvažujeme ta, nad nimiž je výpočet (časově) nejméně náročný Složitost v průměrném případě: z (časových) náročností všech možných vstupních dat vypočteme průměrnou hodnotu Kterou složitost v praxi nejvíce oceníme? Kterou složitost dokážeme nejsnáze určit?

Teoretická informatika 9 Definice časové složitosti Časová složitost algoritmu je funkce, která je pro každou velikost vstupních dat rovna délce nejdelšího výpočtu na všech možných datech této délky Je tedy třeba provést analýzu nejhoršího případu Časová složitost problému je minimum časových složitostí všech algoritmů řešících daný problém

Teoretická informatika 10 Definice prostorové složitosti Prostorová složitost algoritmu je funkce, která je pro každou délku vstupních dat rovna největšímu počtu registrů RAM stroje / políček pásky Turingova stroje obsazených během výpočtu Prostorová složitost problému je minimum prostorových složitostí všech algoritmů řešících daný problém Extrasekvenční prostorová složitost je prostorová složitost, do níž nezapočítáváme vstupní údaje

Teoretická informatika 11 Vztah času a prostoru Základní rozdíl: prostor lze využít opakovaně, čas ne Za jednu jednotku času můžeme obsadit maximálně jednu jednotku prostoru Anebo využít prostor obsazený dříve K obsazení nové jednotky prostoru vždy potřebujeme nejméně jednu jednotku času Důsledek: Časová složitost je vždy větší nebo rovna prostorové složitosti

Teoretická informatika 12 Asymptotická časová složitost Zanedbáváme aditivní konstanty Pro analýzu složitosti nemají praktický význam Zanedbáváme multiplikativní konstanty Lze nahradit rychlejším počítačem, větším počtem počítačů, atd. Zajímá nás jen hrubá charakteristika funkce její chování v nekonečnu Tedy jen její asymptoty Zavedení tříd funkcí

Teoretická informatika 13 Třídy funkcí podle asymptotického růstu O(g) = {f c>0, n 0 : n>n 0 : f(n) c g(n) } Třída funkcí, které rostou asymptoticky nejvýše tak rychle, jako funkce g Např. f(x) = ax 2 +b O(x 2 ) pro libovolné a, b Např. f(x) = ax 2 +b O(x 3 ) pro libovolné a, b Ω(g) = {f c>0, n 0 : n>n 0 : c g(n) f(n) } Třída funkcí, které rostou asymptoticky alespoň tak rychle, jako funkce g Např. f(x) = ax 2 +b Ω(x 2 ) pro libovolné a, b Např. f(x) = ax 3 +bx 2 +c Ω(x 2 ) pro libovolné a, b Θ(g) = {f c 1,c 2 >0, n 0 : n>n 0 : c 1 g(n) f(n) c 2 g(n) } Třída funkcí ohraničených funkcí g z obou stran Např. f(x) = ax 2 +b Ω(x 2 ) pro libovolné a, b Např. f(x) = ax 3 +bx 2 +c Ω(x 3 ) pro libovolné a, b Platí: Θ(g) = O(g) Ω(g)

Teoretická informatika 14 Složitostní třídy I. Konstantní: O(c) př.: Hello world!, výběr konstanty Logaritmická: O(log c n) pro libovolné c př.: Vyhledávání půlením intervalu, vyhledávání v binárním stromu Lineární: O(n) př.: Sekvenční vyhledávání, překladač Kvadratická: O(n 2 ) př.: Bubble sort, součet matic řádu n Kubická: O(n 3 ) př.: Násobení matic řádu n Polynomiální: O(n c ) pro libovolné c N Exponenciální: O(c n ) pro libovolné c N př.: Problém obchodního cestujícího

Teoretická informatika 15 Řešitelnost v rozumném čase Otázka: Kde leží hranice mezi problémy, které považujeme za řešitelné v rozumném čase a těmi, které jsou v rozumném čase neřešitelné?

Teoretická informatika 16 Nedeterminismus V teorii složitosti uvažujeme i nedeterministické výpočetní modely Nedeterministický Turingův stroj Nedeterministický RAM stroj Každý nedeterministický model lze převést na deterministický Za cenu nárůstu časové složitosti Je třeba vyzkoušet všechny možnosti

Teoretická informatika 17 Složitostní třídy II. DTIME(f(n)) = množina všech problémů řešitelných deterministickým algoritmem s časovou složitostí patřící do O(f(n)) DSPACE(f(n)) = množina všech problémů řešitelných deterministickým algoritmem s prostorovou složitostí patřící do O(f(n)) NTIME(f(n)) = množina všech problémů řešitelných nedeterministickým algoritmem s časovou složitostí patřící do O(f(n)) NSPACE(f(n)) = množina všech problémů řešitelných nedeterministickým algoritmem s prostorovou složitostí patřící do O(f(n))

Teoretická informatika 18 Vztahy složitostních tříd I. DSPACE(f(n)) NSPACE(f(n)) Každý problém řešitelný v prostoru f(n) deterministicky, lze v témže prostoru řešit nedeterministicky DTIME(f(n)) NTIME(f(n)) Každý problém řešitelný v čase f(n) deterministicky, lze v témže čase řešit nedeterministicky DTIME(f(n)) DSPACE(f(n)) Prostor lze použít opakovaně, čas nikoliv. Tedy co lze řešit v čase f(n), lze řešit i v prostoru f(n) NTIME(f(n)) NSPACE(f(n)) Taktéž nedeterministicky

Teoretická informatika 19 Vztahy složitostních tříd II. NTIME(f(n)) c>0 DTIME(c f(n) ) Při převodu nedeterminismu na determinismus je třeba vyzkoušet všechny možnosti (tj. prohledat c-ární výpočtový strom) NSPACE(f(n)) c>0 DTIME(c f(n) ) Počet všech konfigurací NTS pracujícího v prostoru f(n) je Q Γ f(n). Sestrojíme-li graf, jehož uzly odpovídají konfiguracím a hrany přechodové fci, jedná se o prohledávání tohoto grafu se složitostí v O( U 2 ), tedy v O(c f(n) ). NTIME(f(n)) DSPACE(f(n)) Nedeterministický stroj je náročnější na čas, nikoliv na paměť. Co lze řešit (byť nedeterministicky) v čase f(n), lze řešit i v prostoru f(n)

Teoretická informatika 20 Složitostní třídy III. P = k>0 DTIME(n k ) NP = k>0 NTIME(n k ) PSPACE = k>0 DSPACE(n k ) NPSPACE = k>0 NSPACE(n k ) DEXPTIME = k>0 DTIME(2^n k ) NEXPTIME = k>0 NTIME(2^n k ) DLOG = DSPACE(log n) NLOG = NSPACE(log n)

Teoretická informatika 21 Vztahy složitostních tříd DLOG NLOG P NP PSPACE DEXPTIME NEXPTIME O všech inkluzích se předpokládá, že jsou ostré. O žádné se to však zatím nepodařilo dokázat Jistě pouze víme, že DLOG PSPACE P DEXPTIME NP NEXPTIME Nejvýznamnější inkluze je mezi P a NP

Teoretická informatika 22 Úplné problémy Nechť C je složitostní třída. Problém P nazveme C-úplný, jestliže P C a jestliže pro každý problém patřící do C platí, že jej lze redukovat na P. Tedy Q C: Q P Úplné problémy jsou tedy nejtěžší problémy v dané třídě Je-li rozdíl mezi danou třídou a nižší třídou neprázdný, pak obsahuje právě tyto problémy

Teoretická informatika 23 Příklady NP-úplných problémů Problém obchodního cestujícího Problém nalezení nejkratší hamiltonovské kružnice v grafu o n vrcholech Problém splnitelnosti booleovské formule Je dána výroková formule (v KNF). Existuje ohodnocení proměnných takové, že formule je pravdivá? Problém batohu Je dána konečná množina objektů. Každý objekt má svoji hmotnost a cenu. Problém spočívá v nalezení takové podmnožiny objektů, jejichž celková hmotnost je nižší než daná mez a jejichž cena je nejvyšší možná

Teoretická informatika 24 P =? NP Nejvýznamnější problém teoretické informatiky Všechny NP-úplné problémy jsou navzájem redukovatelné jeden na druhý Nalezení polynomiálního algoritmu pro jediný z nich znamená nalezení polynomiálního algoritmu pro všechny a tedy dokázání, že P = NP. Důsledek: konec jednosměrných funkcí (hashování, šifrování)