Aproximativní algoritmy. 14.4.2005 UIN009 Efektivní algoritmy 1
Jak nakládat s NP-těžkými úlohami? Speciální případy Aproximativní algoritmy Pravděpodobnostní algoritmy Exponenciální algoritmy pro data malého rozsahu vylepšení typu ořezávání neperspektivních možností (metoda větví a mezí) Lokální prohledávání Heuristiky Metody umělé inteligence: neuronové sítě, genetické algoritmy 14.4.2005 UIN009 Efektivní algoritmy 2
Aproximativní řešení optimalizačních problémů Algoritmus A pro optimalizační problém P je aproximativní algoritmus s poměrem ρ(n), pokud pro každé přirozené číslo n a každou instanci I problému P délky n platí max{a P (I)/OPT P (I), OPT P (I)/A P (I)} ρ(n), přičemž OPT P (I) je optimální řešení a A P (I) řešení nalezené algoritmem A 14.4.2005 UIN009 Efektivní algoritmy 3
Aproximativní algoritmus pro vrcholové pokrytí Vstup: graf G Výstup: Minimální vrcholové pokrytí grafu G AproxVrcholovéPokrytí(V,E) V := ; E :=E; while E do vyber libovolnou hranu {u,v} E ; přidej u,v do V return V. od odstraň z E každou hranu incidentní s u nebo v Věta: AproxVrcholovéPokrytí(I) 2OPT(I) pro každou instanci I problému VP. 14.4.2005 UIN009 Efektivní algoritmy 4
Převoditelnost aproximativních řešení NEZ > VP. Lze tímto převodem získat též aproximaci problému NEZ s poměrem 2? Polynomiální transformace, která zachovává optimální řešení, nemusí nutně zachovávat poměr mezi optimálním a aproximativním řešením. Příklad. Graf G, V(G) =1000, OPT VP (G)=490, A VP (G) 980. Pak OPT NEZ (G)/A NEZ (G) (1000-490)/(1000-980)=25.5 14.4.2005 UIN009 Efektivní algoritmy 5
Problém obchodního cestujícího s nerovností Problém obchodního cestujícího (optimalizační verze) Vstup: Graf G s nezáporně ohodnocenými hranami Výstup: Hamiltonovská kružnice minimální ceny Dodatečná podmínka: nerovnost c(x,y)+ c(y,z) c(x,z) pro každé tři vrcholy x,y,z. AproxPOC (G) sestroj minimální kostru T grafu G průchodem do hloubky očísluj vrcholy kostry T v pořadí, v němž byly navštíveny return (hamiltonovskou) kružnici, která prochází vrcholy grafu v tomto pořadí. 14.4.2005 UIN009 Efektivní algoritmy 6
Problém obchodního cestujícího - pozitivní a negativní výsledek Věta: AproxPOC (I) 2OPT(I) pro každou instanci I problému POC. Věta: Jestliže existuje konstanta c 1 a polynomiální aproximativní algoritmus pro POC bez nerovnosti takový, že pro každou instanci I platí A(I) c OPT(I), pak P=NP. 14.4.2005 UIN009 Efektivní algoritmy 7
Množinové pokrytí Vstup: Množina M a její pokrytí P Výstup: Minimální podpokrytí Hladový algoritmus N := M; A := ; while N do vyber S P tak, aby S N bylo maximální N:= N \ S; A := A {S}; od. Věta: AproxMnožinovéPokrytí(M,P) (ln M +1) OPT(M,P). 14.4.2005 UIN009 Efektivní algoritmy 8
Aproximační schéma pro optimalizační problém P je aproximativní algoritmus A, jehož vstupem je instance I problému P a ε > 0 tak, že A(I)-OPT(I) /OPT(I) ε. ε I A A(I) Polynomiální aproximační schéma -jeho časová složitost je omezena polynomem v délce instance. Úplné polynomiální aproximační schéma - jeho časová složitost je omezena polynomem v proměnných n (délka instance) a 1/ε. 14.4.2005 UIN009 Efektivní algoritmy 9
Úplné polynomiální aproximační schéma pro problém batohu Problém batohu (optimalizační verze) Vstup: Množina přirozených čísel S={x 1,..., x n }, t N Výstup: S S, x t s maximálním x S x S Algoritmus dynamického programování (exponenciální) Datové struktury: L = l 1,..., l k uspořádaný seznam prvků l 1 < l 2 <...<l k L+x = l 1 +x,...,l k +x Merge(L,L ) sloučení L a L do nového uspořádaného seznamu s odstraněním násobných výskytů x 14.4.2005 UIN009 Efektivní algoritmy 10
Problém batohu - exponenciální algoritmus Batoh(S= {x 1,..., x n }, t ) L 0 := 0 for i:=1 to n do L i := Merge(L i-1,l i-1 +x i ) odstraň z L i každý prvek > t od return největší prvek v L n. Časová složitost: O(n t) Příklad: S={1,4,5}, t=7. 14.4.2005 UIN009 Efektivní algoritmy 11
Úplné polynomiální aproximační schéma (Ibarra,Kim,1975) Buď 0< δ <1. Ořezání seznamu L: pro každý odstraněný prvek y musí v L zůstat z tak, aby (1-δ)y z y, tj. (y-z)/y δ. Příklad: δ=0.1, L = 10,11,12,15,20,21,22,23,24,29. 14.4.2005 UIN009 Efektivní algoritmy 12
Ořezání seznamu Vstup: L= y 1,...,y m, 0<δ<1. Výstup: ořezaný seznam L Trim(L,δ) m:= L ; L := y 1 ; poslední := y 1 for i := 2 to m do if poslední< (1- δ) y i then L := L,y i poslední := y fi i od return L 14.4.2005 UIN009 Efektivní algoritmy 13
Aproximační schéma AproxBatoh(S,t,ε) n := S L 0 := 0 for i:=1 to n do L i := Merge(L i-1,l i-1 +x i ) L i := Trim(L i,ε/n) odstraň z L i každý prvek > t od return největší prvek v L n. Příklad: S={104,102,201,101}, t= 308, ε = 0.2 Věta: AproxBatoh je úplné polynomiální aproximační schéma pro problém batohu. 14.4.2005 UIN009 Efektivní algoritmy 14