Výpočetní složitost algoritmů

Podobné dokumenty
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

ALGORITMY A DATOVÉ STRUKTURY

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

Algoritmy a datové struktury

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

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

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

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

10. Složitost a výkon

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

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

TGH12 - Problém za milion dolarů

Algoritmy a datové struktury II

Úvod do informatiky. Miroslav Kolařík

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

5 Orientované grafy, Toky v sítích

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

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

Složitost Filip Hlásek

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.

YZTI - poznámky ke složitosti

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

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

Algoritmy I, složitost

grupa těleso podgrupa konečné těleso polynomy komutativní generovaná prvkem, cyklická, řád prvku charakteristika tělesa

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Od Turingových strojů k P=NP

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

1 Báze a dimenze vektorového prostoru 1

Další NP-úplné problémy

Přijímací zkouška - matematika

Dynamické programování

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

Vrcholová barevnost grafu

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

Vzdálenost uzlů v neorientovaném grafu

Dijkstrův algoritmus

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

10 Přednáška ze

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Základní pojmy teorie množin Vektorové prostory

Analýza Petriho sítí. Analýza Petriho sítí p.1/28

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

4 Pojem grafu, ve zkratce

Algoritmy na ohodnoceném grafu

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

PŘEDNÁŠKA 2 POSLOUPNOSTI

Zavedení a vlastnosti reálných čísel

1 Lineární prostory a podprostory

Stromy, haldy, prioritní fronty

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

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

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

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

Časová složitost / Time complexity

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

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Báze a dimenze vektorových prostorů

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

TGH09 - Barvení grafů

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

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

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

Metody síťové analýzy

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

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

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

H {{u, v} : u,v U u v }

Důkaz Heineho Borelovy věty. Bez újmy na obecnosti vezmeme celý prostor A = M (proč? úloha 1). Implikace. Nechť je (M, d) kompaktní a nechť.

DEFINICE Z LINEÁRNÍ ALGEBRY

TGH05 - aplikace DFS, průchod do šířky

12. Aproximační algoritmy

Dosud jsme se zabývali pouze soustavami lineárních rovnic s reálnými koeficienty.

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Grafové algoritmy. Programovací techniky

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Převoditelnost problémů nezávislé množiny na problém hamiltonovského cyklu () IS HC 1/10

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

Úvod do vybíravosti grafů, Nullstellensatz, polynomiální metoda

Vybíravost grafů, Nullstellensatz, jádra

Grafové algoritmy. Programovací techniky

Bakalářská matematika I

TEORIE GRAFŮ TEORIE GRAFŮ 1

Úlohy nejmenších čtverců

TGH02 - teorie grafů, základní pojmy

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

(ne)závislost. α 1 x 1 + α 2 x α n x n. x + ( 1) x Vektoru y = ( 1) y říkáme opačný vektor k vektoru y. x x = 1. x = x = 0.

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

3. Grafy a matice. Definice 3.2. Čtvercová matice A se nazývá rozložitelná, lze-li ji napsat ve tvaru A =

1 Vektorové prostory.

Základy maticového počtu Matice, determinant, definitnost

Dynamické programování

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

Kostry. 9. týden. Grafy. Marie Demlová (úpravy Matěj Dostál) 16. dubna 2019

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

TGH02 - teorie grafů, základní pojmy

SVD rozklad a pseudoinverse

Transkript:

Výpočetní složitost algoritmů Slajdy pro výuku na KS Ondřej Čepek

Sylabus 1. Definice časové a prostorové složitosti algoritmů. Příklady na konkrétních algoritmech. Prostředky pro popis výpočetní složitosti algoritmů (asymptotická notace), příklady použití asymptotické notace. 2. Optimalizační úlohy a rozhodovací problémy. Problémy řešitelné deterministicky v polynomiálním čase (třída P), problémy řešitelné nedeterministicky v polynomiálním čase (třída NP), polynomiální převoditelnost problémů. 3. NP-těžkost a NP-úplnost. Definice, důkazové postupy, příklady NP-úplných problémů. 4. Pseudopolynomiální algoritmy a jejich příklady. Silná NP-úplnost, příklady silně NP-úplných problémů. 5. Aproximační algoritmy pro NP-těžké optimalizační úlohy. Neaproximovatelnost, příklady neaproximovatelných úloh. 2

Jak porovnávat kvalitu různých algoritmů? časová složitost algoritmu prostorová složitost algoritmu oboje závisí na velikosti vstupních dat Jak měřit velikost vstupních dat? rigorózně: počet bitů nutných k zapsání vstupních dat Příklad: vstupem jsou (přirozená) čísla a 1, a 2,, a n která je třeba setřídit velikost dat D v binárním zápisu je D = log 2 a 1 + + log 2 a n časová složitost = funkce f( D ) udávající počet kroků algoritmu v závislosti na velikosti vstupních dat intuitivně: není podstatný přesný tvar funkce f (multiplikativní a aditivní konstanty), ale pouze to, do jaké třídy funkce f patří (lineární, kvadratická, exponenciální, ) 3

Příklad: f( D ) = a D + b f( D ) = a D 2 + b D + c f( D ) = k 2 D lineární algoritmus kvadratický algoritmus exponenciální algoritmus Co je to krok algoritmu? rigorózně: operace daného abstraktního stroje (Turingův stroj, stroj RAM) zjednodušení (budeme používat): krok algoritmu = operace proveditelná v konstantním (tj. na velikosti dat nezávislém) čase aritmetické operace (sčítání, odčítání, násobení, ) porovnání dvou hodnot (typicky čísel) přiřazení (pouze pro jednoduché datové typy, ne pro pole ) tím se zjednoduší i měření velikosti dat (čísla mají pevnou maximální velikost) Příklad: setřídit čísla a 1, a 2,, a n velikost dat je D = n Toto zjednodušení nevadí při porovnávání algoritmů, ale může vést k chybě při zařazování algoritmů do tříd složitosti Proč měřit časovou složitost algoritmů? stačí přeci mít dostatečně rychlý počítač 4

Doba provádění f(n) operací (délka běhu algoritmu) pro vstupní data velikosti n za předpokladu že použitý hardware je schopen vykonat 1 milion operací za sekundu n f(n) 20 40 60 80 100 500 1000 n 20μs 40μs 60μs 80μs 0.1ms 0.5ms 1ms n log n 86μs 0.2ms 0.35ms 0.5ms 0.7ms 4.5ms 10ms n 2 0.4ms 1.6ms 3.6ms 6.4ms 10ms 0.25s 1s n 3 8ms 64ms 0.22s 0.5s 1s 125s 17min 2 n 1s 11.7dní 36tis.let n! 77tis.let 5

Růst rozsahu zpracovatelných úloh, tj. zvládnutelné velikosti vstupních dat, díky zrychlení výpočtu (lepší hardware) za předpokladu, že na stávajícím hardware lze řešit úlohy velikosti x Zrychlení výpočtu f(n) původní 10 krát 100 krát 1000 krát n x 10x 100x 1000x n log n x 7.02x 53.56x 431.5x n 2 x 3.16x 10x 31.62x n 3 x 2.15x 4.64x 10x 2 n x x+3 x+6 x+9 6

Asymptotická (časová) složitost Intuitivně: zkoumá chování algoritmu na velkých datech, tj. nebere v úvahu multiplikativní a aditivní konstanty, pouze zařazuje algoritmy do kategorií podle jejich skutečné časové složitosti Rigorózně: f(n) je asymptoticky menší nebo rovno g(n), značíme f(n) O(g(n)), pokud c>0 n 0 >0 n n 0 : 0 f(n) c g(n) f(n) je asymptoticky větší nebo rovno g(n), značíme f(n) Ω(g(n)), pokud c>0 n 0 >0 n n 0 : 0 c g(n) f(n) f(n) je asymptoticky stejné jako g(n), značíme f(n) (g(n)), pokud c>0 d>0 n 0 >0 n n 0 : 0 c g(n) f(n) d g(n) 7

Úlohy, optimalizační úlohy, rozhodovací problémy Úloha: pro dané zadání najít strukturu s danými vlastnostmi Příklady: v daném orientovaném grafu najdi cyklus vynásob dvě dané čtvercové matice Optimalizační úloha: pro dané zadání najít optimální (většinou nejmenší nebo největší) strukturu s danými vlastnostmi Příklady: v daném neorientovaném grafu najdi největší (počtem vrcholů) úplný podgraf (kliku) pro danou množinu úkolů najdi nejkratší rozvrh Rozhodovací problém: pro dané zadání odpovědět ANO/NE Příklady: existuje v daném neorientovaném grafu Hamiltonovská kružnice? je daná čtvercová matice regulární? My se v následujícím omezíme jen na rozhodovací problémy, což lze (více méně) udělat bez újmy na obecnosti - v tom smyslu, že k většině (optimalizačních) úloh existuje stejně těžký rozhodovací problém. 8

Třída P Definice (vágní): Třída P je třída rozhodovacích problémů, pro které existuje (deterministický sekvenční) algoritmus běžící v polynomiálním čase (vzhledem k velikosti zadání), který správně rozhodne ANO/NE (který řeší daný problém). je daný orientovaný graf silně souvislý? obsahuje daný neorientovaný graf trojúhelník? (speciální případ kliky ) je daná matice regulární? Poznámka: Problémy patřící do třídy P se považují za efektivně řešitelné, u praktických problémů nebývá stupeň polynomu omezujícího časovou složitost algoritmu příliš vysoký (typicky 3 výjimečně 5) i když samozřejmě existují (umělé) problémy řešitelné polynomiálními algoritmy s libovolně vysokým stupněm polynomu. 9

Třída NP Nedeterministický algoritmus = algoritmus, který v každém svém kroku může libovolně volit z několika možností Nedeterministický algoritmus řeší daný rozhodovací problém pro každé kladné zadání problému (odpověď ANO) existuje posloupnost voleb vedoucí k tomu, že algoritmus odpoví ANO, pro žádné záporné zadání taková posloupnost voleb neexistuje. Definice (vágní): Třída NP je třída rozhodovacích problémů, pro které existuje nedeterministický sekvenční algoritmus běžící v polynomiálním čase (vzhledem k velikosti zadání), který řeší daný problém. Jiný model nedeterministického algoritmu: dopředu provede volby (do paměti zapíše vektor čísel) a pak už provádí jednotlivé kroky původního algoritmu deterministicky. Alternativní definice (opět vágní): Rozhodovací problém patří do třídy NP, pokud pro každé jeho kladné zadání existuje (polynomiálně velký) certifikát, pomocí něhož lze v polynomiálním čase (deterministicky) ověřit, že zadání je skutečně kladné (že odpověď na dané zadání je skutečně ANO). Poznámka: Problémy patřící do třídy NP se považují za efektivně ověřitelné. 10

Příklady problémů ze třídy NP: KLIKA (úplný podgraf): Je dán neorientovaný graf G a číslo k. Otázka: Existuje v G úplný podgraf velikosti alespoň k? HK (Hamiltonovská kružnice): Je dán neorientovaný graf G. Otázka: Existuje v G Hamiltonovská kružnice? TSP (obchodní cestující): Je dán ohodnocený úplný neorientovaný graf G a číslo k. Otázka: Existuje v G Hamiltonovská kružnice celkové délky nejvýše k? SP (součet podmnožiny): Jsou dána přirozená čísla a 1, a 2,., a n, b. Otázka: Existuje podmnožina čísel a 1, a 2,., a n, jejíž součet je přesně b? ROZ (rozvr. na paralel. strojích): Je dán počet úkolů, jejich délky, počet strojů a číslo k. Otázka: Existuje přípustný rozvrh délky nejvýše k? Ukážeme, že HK TSP a SP ROZ, kde A B znamená, že pokud existuje polynomiální algoritmus řešící B potom také existuje polynomiální algoritmus řešící A, neboli vyřešit B je alespoň tak těžké jako vyřešit A. 11

Převody (redukce) mezi rozhodovacími problémy Nechť A,B jsou dva rozhodovací problémy. Říkáme, že A je polynomiálně redukovatelný na B, pokud existuje zobrazení f z množiny zadání problému A do množiny zadání problému B s následujícími vlastnostmi: 1. Nechť X je zadání problému A a Y zadání problému B takové, že Y = f(x). Potom je X kladné zadání problému A tehdy a jen tehdy, když je Y kladné zadání problému B. 2. Nechť X je zadání problému A. Potom je zadání f(x) problému B (deterministicky sekvenčně) zkonstruovatelné v polynomiálním čase vzhledem k velikosti X. Poznámka: Z 2. také vyplývá, že velikost f(x) je polynomiální vzhledem k velikosti X. NP-těžkost a NP-úplnost Definice: Problém B je NP-těžký pokud pro libovolný problém A ze třídy NP platí, že A je polynomiálně redukovatelný na B. Definice: Problém B je NP-úplný pokud 1) patří do třídy NP a 2) je NP-těžký. Důsledek 1: Pokud je A NP-těžký a navíc je polynomiálně redukovatelný na B, tak je B také NP-těžký. Důsledek 2: Pokud existuje polynomiální algoritmus pro nějaký NP-těžký problém, pak existují polynomiální algoritmy pro všechny problémy ve třídě NP. Věta (Cook-Levin 1971): Existuje NP-úplný problém (dokázáno pro problém SAT). 12

Pseudopolynomiální algoritmy - příklad Algoritmus pro SP: předpokládejme, že platí a 1 a n, a že A je pole délky b. for j := 1 to b do {A[j] := 0; a 0 := b+1}; for i := 1 to n do A[a i ] := 1; SP := (A[b] = 1). for j := b downto a i-1 do if (A[j] = 1) and (j+a i b) then A[j+a i ] := 1; Platí: Po i-tém průchodu hlavním cyklem obsahuje pole A jedničky právě u těch indexů, které odpovídají součtům všech neprázdných podmnožin množiny {a 1,,a i }, které jsou nejvýše rovny b. Časová složitost: O(nb), což je exponenciální časová složitost vzhledem k binárně (ale také ternárně, dekadicky, ) kódovanému vstupu, ale polynomiální časová složitost vzhledem k unárně kódovanému vstupu. Algoritmy s těmito vlastnostmi se nazývají pseudopolynomiální. 13

Pseudopolynomiální algoritmy - definice Nechť je dán rozhodovací problém Q a jeho instance X. Definujme: kód(x) = délka zápisu (počet bitů) instance X v binárním (či vyšším ) kódovaním max(x) = největší číslo v X (velikost čísla, NE délka jeho binárního zápisu) Definice: Algoritmus řešící Q se nazývá pseudopolynomiální, pokud je jeho časová složitost při spuštění na vstupu X omezena polynomem v proměnných kód(x) a max(x). Poznámka: každý polynomiální algoritmus je samozřejmě také pseudopolynomiální. Pozorování: Pokud je Q takový, že pro každou jeho instanci X platí max(x) p(kód(x)) pro nějaký (pevný) polynom p, tak pro Q pojem polynomiálního a pseudopolynomiálního algoritmu splývá. Problémy, kde toto nenastává budeme nazývat číselné problémy. Definice: Rozhodovací problém Q se nazývá číselný, pokud neexistuje polynom p takový, že pro každou instanci X problému Q platí max(x) p(kód(x)). Věta: Nechť Q je NP-úplný problém, který není číselný. Potom pokud P NP, tak Q nemůže být řešen pseudopolynomiálním algoritmem. Otázka: Je každý číslený problém řešitelný nějakým pseudopolynomiálním algoritmem? Odpověď: NE (a typickým představitelům takových problémů se říká silně NP-těžké) 14

Silně NP- úplné problémy Nechť je Q rozhodovací problém a p polynom. Symbolem Q p označíme množinu instancí problému Q (tj. podproblém problému Q), pro které platí max(x) p(kód(x)), tj. Q p = {X Q max(x) p(kód(x))} Věta: Nechť je A pseudopolynomiální algoritmus řešící Q. Potom pro každý polynom p je A polynomiálním algoritmem řešícím Q p. Definice: Rozhodovací problém Q se nazývá silně NP-úplný, pokud Q NP a existuje polynom p takový, že podproblém Q p je NP-úplný. Věta: Nechť Q je silně NP-úplný problém. Potom pokud P NP, tak Q nemůže být řešen pseudopolynomiálním algoritmem. Příklady číselných silně NP-úplných problémů: Obchodní Cestující (TSP) : je to číselný problém (váhy na hranách mohou být libovolně velké) je silně NP-úplný neboť zůstává NP-úplný i když váhy omezíme (malou) konstantou 3-partition (3-P) toto je čistě číselný problém : Zadání: a 1,, a 3m, b N, taková že j : ¼ b < a j < ½ b a platí Σ j=1 3m a j = mb. Otázka: S 1,,S m disjunktní rozdělení množiny {1,,3m} takové, že i : Σ j Si a j = b? 15

Aproximační algoritmy Aproximační algoritmy jsou typicky používány na řešení velkých instancí NP-těžkých optimalizačních problémů, pro které je nalezení optimálního řešení beznadějné, tj. časově příliš náročné (pro malé instance lze nalézt optimální řešení hrubou silou v exponenciálním čase). Aproximační algoritmus má následující tři vlastnosti: 1. Vrací (většinou) suboptimální řešení (někdy ale může vrátit i optimum). 2. Dává odhad kvality vráceného řešení vzhledem k optimu. 3. Běží v polynomiálním čase vzhledem k velikosti zadání. Odhad kvality vráceného řešení Značení: OPT = optimální řešení APR = řešení vrácené aproximačním algoritmem f(z) = hodnota řešení Z (předpokládáme, že je vždy nezáporná) Definice: Aproximační algoritmus A řeší optimalizační problém X s poměrovou chybou r(n), pokud pro všechna zadání problému X velikosti n platí max { f(apr) / f(opt), f(opt) / f(apr) } r(n). Definice: Aproximační algoritmus A řeší optimalizační problém X s relativní chybou e(n), pokud pro všechna zadání problému X velikosti n platí f(apr) f(opt) / f(opt) e(n). 16

Příklad maximalizačního problému (optimalizační verze Kliky): Pro daný neorientovaný graf najít největší (měřeno počtem vrcholů) kliku v daném grafu. Aproximační algoritmus by musel poskytovat odhad (záruku kvality) tohoto typu f(apr) ¾ f(opt), kde f(x) je v tomto případě počet vrcholů (tj. velikost kliky) v řešení X. Příklad minimalizačního problému (optimalizační verze Obchodního cestujícího): Pro daný úplný vážený neorientovaný graf najít nejkratší Hamiltonovskou kružnici (měřeno součtem délek hran) v daném grafu. Aproximační algoritmus by musel poskytovat odhad (záruku kvality) tohoto typu f(apr) 2 f(opt), kde f(x) je v tomto případě délka Hamiltonovské kružnice v řešení X. 17

Příklady aproximačních algoritmů Úloha vrcholového pokrytí (optimalizační verze): Vstup: Neorientovaný graf G = (V,E). Úloha: Najít vrcholové pokrytí minimální velikosti, tj. najít V V takové, že pro každé (u,v) E platí u V nebo v V (nebo oboje), a navíc V má minimální možnou kardinalitu. Algoritmus A: opakovaně vyber v grafu vrchol nejvyššího stupně, přidej ho do postupně konstruovaného vrcholového pokrytí a odstraň ho z grafu spolu se všemi incidentními (a tedy pokrytými) hranami dokud nezbývá v grafu žádná hrana. Má Algoritmus A konstantní relativní (poměrovou) chybu? Algoritmus B: opakovaně vyber v grafu libovolnou hranu (u,v) dej jak u tak v do postupně konstruovaného vrcholového pokrytí a odstraň jak u tak v z grafu spolu se všemi incidentními (a tedy pokrytými) hranami dokud nezbývá v grafu žádná hrana. Má Algoritmus B konstantní poměrovou chybu? 18

Úloha obchodního cestujícího (optimalizační verze): Vstup: Úplný vážený neorientovaný graf G = (V,E) a váhová funkce c : E Z + {0} Úloha: Najít v G Hamiltonovskou kružnici nejmenší celkové váhy (délky). Obchodní cestující s trojúhelníkovou nerovností Platí: u,v,w V : c(u,w) c(u,v) + c(v,w) Napřed nutno zjistit: Je tento podproblém vůbec NP-těžký (a má tedy vůbec cenu uvažovat o aproximačních algoritmech)?? Algoritmus C: a) Najdi minimální kostru grafu G. b) Vyber libovolný vrchol grafu G a spusť z něj na nalezené kostře DFS, které očísluje vrcholy v preorder pořadí c) Výsledná Hamiltonovská kružnice je dána pořadím (permutací) z bodu b) Poznámka: Pokud je v bodě a) použit Primův (Jarníkův) algoritmus, tak celý algoritmus běží v čase O( E ) = O( V 2 ). Věta: Algoritmus C má konstantní poměrovou chybu r(n) 2. 19

Úloha rozvrhování na paralelních strojích: Vstup: Je dán počet úkolů n, jejich délky x 1,,x n a počet strojů m. Úloha: Zkonstruovat nejkratší možný rozvrh. Naivní aproximační algoritmus FRONTA : bere úkoly postupně podle jejich čísel a každý úkol vždy umístí na stroj, který je volný nejdříve. Značení: OPT = optimální rozvrh, Q = rozvrh zkonstruovaný algoritmem FRONTA, délka(opt) = o, délka(q) = q Věta: Pokud m je počet strojů, tak q ((2m 1) / m)o a tento odhad již nelze zlepšit. Důsledek: Aproximační algoritmus FRONTA má poměrovou chybu 2. 1. Těsnost odhadu: Pro každé m zkonstruujeme zadání, pro které platí v dokazované nerovnosti rovnost, a to následujícím způsobem x 1 = x 2 = = x m 1 = m 1 (m 1 úkolů délky m 1) x m = x m+1 = = x 2m 2 = 1 (m 1 úkolů délky 1) x 2m 1 = m (1 úkol délky m) 2. Platnost nerovnosti: Nechť j je úkol končící jako poslední v rozvrhu Q (končící v čase q) a nechť t je okamžik zahájení úkolu j. Potom žádný procesor nemá prostoj před časem t a platí mq (2m 1)o. 20

Lepší aproximační algoritmus USPOŘÁDANÁ FRONTA pro optimalizační verzi ROZ: pracuje stejně jako FRONTA, ale na začátku úkoly setřídí do nerostoucí posloupnosti podle jejich délek. Značení: OPT = optimální rozvrh, U = rozvrh zkonstruovaný algoritmem USPOŘÁDANÁ FRONTA, délka(opt) = o, délka(u) = u Věta: Pokud m je počet strojů, tak u ((4m 1) / 3m)o a tento odhad již nelze zlepšit. Důsledek: Aproximační algoritmus USPOŘÁDANÁ FRONTA má poměrovou chybu 4/3. Důkaz: Těsnost odhadu: Pro každé liché m zkonstruujeme zadání, pro které platí v dokazované nerovnosti rovnost, a to následujícím způsobem x 1 = x 2 = 2m 1 x 3 = x 4 = 2m 2 (2 úkoly délky 2m 1) (2 úkoly délky 2m 2) x 2m 3 = x 2m 2 = m+1 (2 úkoly délky m+1) x 2m 1 = x 2m = x 2m+1 = m (3 úkoly délky m) Lemma: Pokud pro všechny úkoly platí x i > 1/3o pak u = o. Dokončení důkazu: Nechť j je úkol končící jako poslední v rozvrhu U (končící v čase u). Pokud x j > 1/3o tak použijeme Lemma, v opačném případě je důkaz 21 velmi podobný jako pro algoritmus FRONTA.

Příklad neaproximovatelného problému Obchodní cestující bez trojúhelníkové nerovností Věta: Nechť R 1 je libovolná konstanta. Potom pokud P NP, tak neexistuje polynomiální aproximační algoritmus řešící obecný případ obchodního cestujícího s poměrovou chybou nejvýše R. Důsledek (o existenci neaproximovatelných úloh): Existují NP-těžké optimalizační úlohy, pro které neexistují polynomiální aproximační algoritmy s konstantní poměrovou chybou (pokud P NP). Opačný případ: Existují NP-těžké optimalizační úkoly, které lze aproximovat s libovolně malou relativní chybou (poměrovou chybou libovolně blízko 1) s tím, že čím menší je požadovaná chyba tím vyšší je typicky časová složitost aproximačního algoritmu. Algoritmy mající na vstupu zadání optimalizační úlohy a požadovanou relativní chybu a vracející na výstupu řešení dané úlohy s požadovanou relativní chybou se nazývají aproximační schémata (AS, PAS, ÚPAS) Poznámka: NP-těžké optimalizační úlohy jsou všechny stejné (vzájemně na sebe převoditelné) z hlediska obtížnosti získání optimálního řešení, ale mohou se zcela diametrálně lišit z hlediska obtížnosti aproximace (získání přibližného řešení). 22

Vztah determinismu a nedeterminismu pro prostorovou složitost Definice (vágní): Třída PSPACE je třída rozhodovacích problémů, pro které existuje (deterministický sekvenční) algoritmus běžící v polynomiálním prostoru (vzhledem k velikosti zadání), který správně rozhodne ANO/NE (který řeší daný problém). Definice (vágní): Třída NPSPACE je třída rozhodovacích problémů, pro které existuje nedeterministický sekvenční algoritmus běžící v polynomiálním prostoru (vzhledem k velikosti zadání), který řeší daný problém. Věta (Savičova): Nechť S : N N je polynomiální funkce funkce taková, že n platí S(n) n. Potom lze každý nedeterministický výpočet probíhající v prostoru S(n) odsimulovat deterministickým sekvenčním výpočtem v prostoru O(S 2 (n)). Důsledek: PSPACE = NPSPACE 23