Föreläsning 12+13: Approximationsalgoritmer

Relevanta dokument
Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Föreläsning 9: NP-fullständighet

Föreläsning 7+8: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Algoritmer, datastrukturer och komplexitet

Föreläsning 8+9: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Föreläsning 8: Intro till Komplexitetsteori

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

Föreläsning 5: Dynamisk programmering

Övningsmästarprov 2 + några NP-reduktioner. Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Föreläsning 1. Introduktion. Vad är en algoritm?

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Föreläsningsanteckningar F6

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Algoritmer, datastrukturer och komplexitet

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Föreläsning 5: Grafer Del 1

Algoritmkomplexitet. Komplexitet Teoretisk bas för frågorna: Är en viss metod bra eller dålig? Är ett visst problem lätt eller svårt?

Kaliningrad) låg vid bägge sidor av floden Pregel samt på

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning 2. Kortaste vägar i grafer.

Algoritmer, datastrukturer och komplexitet

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Komplexitetsklasser och repetition

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Algoritmer, datastrukturer och komplexitet

Föreläsning Datastrukturer (DAT036)

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Föreläsning Datastrukturer (DAT037)

Föreläsning 2: Grafer. Exempel på graf

Föreläsning 4: Kombinatorisk sökning

Tommy Färnqvist, IDA, Linköpings universitet

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Grundläggande logik och modellteori

Programkonstruktion och Datastrukturer

Föreläsning 2. Kortaste vägar i grafer.

Tentamen Datastrukturer, DAT037 (DAT036)

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

Föreläsning 11. Giriga algoritmer

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning 13 Innehåll

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 8 Datastrukturer (DAT037)

Algoritmer, datastrukturer och komplexitet

min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

Sökning och sortering

Algoritmer, datastrukturer och komplexitet

Tommy Färnqvist, IDA, Linköpings universitet

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

1 LP-problem på standardform och Simplexmetoden

Föreläsning 11. Giriga algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

Linjärprogramming. EG2205 Föreläsning 7, vårterminen 2015 Mikael Amelin

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

n (log n) Division Analysera skolboksalgoritmen för division (trappdivision). Använd bitkostnad.

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Lösningsförslag till tentamen Datastrukturer, DAT037,

Algoritmer, datastrukturer och komplexitet

Optimering. TAOP88 Optimering för ingenjörer. När inte intuitionen räcker till... Långsiktiga mål med kursen. Vad är optimering?

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Föreläsning 3-4 Innehåll

Frågan om P=NP? Är P=NP? Bakgrund. "Snabb lösning"?!

Föreläsning 5 Innehåll

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

PCP-satsen på kombinatoriskt manér

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Föreläsning 9 Datastrukturer (DAT037)

Algoritmer, datastrukturer och komplexitet

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet

min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

Tommy Färnqvist, IDA, Linköpings universitet

Eulercykel. Kinesiska brevbärarproblemet. Kinesiska brevbärarproblemet: Metod. Kinesiska brevbärarproblemet: Modell. Definition. Definition.

Tentamen Datastrukturer D DAT 036/INN960

Föreläsning 6 Datastrukturer (DAT037)

Pseudokod Analys av algoritmer Rekursiva algoritmer

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

Datastrukturer. föreläsning 8. Lecture 6 1

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Datastrukturer och Algoritmer D0041D

Tentamen Datastrukturer D DAT 036/INN960

Transkript:

Föreläsning 12+13: Approximationsalgoritmer Många av de NP-fullständiga problemen är från början optimeringsproblem: TSP, Graph Coloring, Vertex Cover etc. Man tror att P NP och att det alltså inte går att lösa problemen exakt i polynomisk tid. En approximationsalgoritm till ett optimeringsproblem i NP är en algoritm som i polynomisk tid hittar en lösning som garanterat ligger nära den optimala. Approximation av Vertex Cover ApproxVertexCover(G =(V,E)) (1) C (2) while E (3) Ta godtycklig kant (u, v) E (4) C C {u} {v} (5) Ta bort alla kanter i E som innehåller u eller v (6) return C Algoritmen returnerar alltid en hörntäckning: När en kant togs bort lades minst ett av de ingående hörnen till C. Betrakta kanten (u, v) i något skede i algoritmen. Minst ett av hörnen u och v måste ingå i alla hörntäckningar, algoritmen låter båda ingå. Den resulterande hörntäckningen är högst dubbelt så stor som den optimala. Tidskomplexitet: O( E ) Mått på approximerbarhet Approximationskvoten för en algoritm är max approx för minimeringsproblem opt opt max för maximeringsproblem approx Den är alltså alltid 1 med likhet om algoritmen alltid hittar den optimala lösningen. Annars är den ett mått på hur långt från den optimala lösningen algoritmen kan vara som värst. Algoritmen för minimal hörntäckning har approximationskvot 2 eftersom den ger en hörntäckning som är högst dubbelt så stor som den minimala. Grader av approximerbarhet De NP-fullständiga problemen är väsentligen lika svåra att lösa exakt men är olika svåra att approximera: För en del problem finns det för varje ɛ>0 en polynomisk algoritm med approximationskvot 1+ɛ. Ex.: Kappsäcksproblemet

Andra problem kan approximeras inom någon konstant > 1 men inte godtyckligt nära 1 om P NP. Ex.: Minimal hörntäckning Det finns problem som inte kan approximeras inom någon konstant om P NP. Ex.: Maximal klick Approximation av TSP Visa att TSP/ APX dvs att TSP inte kan approximeras. Antag motsatsen dvs att TSP kan approximeras inom faktor B. Reduktion från Hamiltoncykel: Hamiltoncykel(G) (1) n V (2) foreach (v i,v j ) E (3) w(p i,p j ) 1 (4) foreach (v i,v j ) / E (5) w(p i,p j ) V B (6) if TSAPPROX(p i,t) V B (7) return TRUE (8) return FALSE Om TSAPPROX kan approximera TSP inom faktor B så avgör ovanstående algoritm ifall det finns en Hamiltoncykel i G vilket är NP-Fullständigt. Det ger motsägelse. Kappsäcksproblemet Indata är n objekt där objekt i beskrivs av paret (w i,u i ). w i är objektets vikt och u i är dess nytta; båda är positiva heltal. Beslutsproblemet är att avgöra om det går att välja ut objekt av total vikt högst W så att den totala nyttan blir minst U. Detta problem är NP-fullständigt. Motsvarande optimeringsproblem kan formuleras max i x i u i så att i x i w i W x i {0, 1} i DynP-lösning av kappsäcksproblemet Låt V i,j vara den minsta vikten som ger nyttan i när bara de j första objekten får väljas. Här är 1 j n och 0 i n max u i eftersom målfunktionen är högst n max u i.

Då är V 0,j =0, j =1,...,n V u1,1 = w 1 V i,1 =, i u 1 V i,j =min { V i,j 1,V i uj,j 1 + w j } Det tar O(n 2 max u i ) tid att fylla i hela tabellen. Optimalvärdet är det största i sådant att V i,n W. Ur tabellen är det sedan lätt att hitta en mängd som ger detta värde på målfunktionen. Pseudopolynomiska algoritmer Algoritmen A är pseudopolynomisk om tidskomplexiteten är polynomisk i n, indatas längd, och M, det största talet som ingår i indata. Obs: En algoritm som är pseudopolynomisk kan trots allt vara exponentiell i n. Om indata är ett n-siffrigt binärt tal kan ju M 2 n. Ett NP-fullständigt problem som bara kan ha en pseudopolynomisk algoritm om P = NP är starkt NP-fullständigt. Approximationsalgoritm för kappsäcksproblemet Den exakta algoritmen fungerar bra om nyttokoefficienterna u i i indata är små. Skala därför dessa med en faktor och kör den exakta algoritmen: ApproxKnapsack(U, W ) (1) 2n ɛu max (2) for i =1to n (3) u i u i (4) return ExactKnapsack(U,W) (Vi låter u max =maxu i och w max =maxw i.) Frågor: Vilken approximationskvot fås? Vilken är tidskomplexiteten? Vi antar att Analys av algoritmen 1. w max W ; w i >W är ointressant 2. W nw max ; annars består lösningen av alla objekt

Låt opt vara optimum till (U, W )-instansen och approx vara målfunktionsvärdet hos den approximativa lösningen. Låt vidare I [n] vara indexen till de objekt som ingår i lösningen till (U, W )- instansen och I vara lösningen till (U,W)-instansen. Då är approx = u i 1 u i 1 u i i I i I i I 1 ( u i n ) = 1 (opt n) = i I = opt n opt(1 ɛ/2) Analys, forts. D.v.s. approximationskvoten är opt approx 1 1 ɛ/2 1+ɛ Körtiden är O(n 3 /ɛ). Det betyder att approximationskvoten kan fås godtyckligt nära 1 i polynomisk tid. Detta är ett exempel på ett approximationsschema (eng. Polynomial Time Approximation Scheme, PTAS). Flera PTAS:er för andra NP-fullständiga optimeringsproblem bygger på samma typ av skalning som i algoritmen ovan. Terminologi NPO Klassen av optimeringsproblem i NP. APX De problem som kan approximeras inom någon konstant. PTAS De problem som kan approximeras inom varje konstant 1+ɛ. Det finns ett flertal problem (t.ex. minimal hörntäckning) som tillhör APX men inte PTAS om inte P = NP. Det finns ett specialfall av Handelsresandeproblemet som går att approximera. Approximation av TSP med triangelolikhet Triangelolikheten: w(i, j) w(i, k)+w(k, j) för alla noder i, j, k. Triangelolikheten medför att om i, j, k 1,k 2,..., k s bildar en cykel i grafen så gäller w(i, j) w(i, k s )+w(k s,k s 1 )+...w(k 1,j). Problemet TSP med triangelolikhet brukar kallas TSP. Sats: TSP är NP-fullständigt. Antag att vi har ett minimalt spännande träd T i grafen. Om vi går fram och tillbaka från en nod i trädet till alla andra noder får vi en väg av längd 2w(T )

där w(t ) är summan av kantvikterna i trädet. Vägen är förstås ingen tillåten lösning eftersom den inte är en cykel. Låt C vara en optimal cykel. w(c) =OPT.EftersomC är spännade träd + en kant fås w(t ) w(c). 2 w(t ) 2 w(c) 2 OPT Vi kan göra om trädvandringen till en cykel C 1 genom att vandra runt noderna i den ordning de besöks i inorderordningen iträdet. Påstående: w(c 1 ) 2 w(t ) Det går att visa genom upprepad användning av triangelolikheten. Viharnu: w(c) w(c 1 ) 2 w(t ) 2 w(c) Vi sätter APP = w(c 1 ).Vifårdå: OPT APP 2 OPT Beräkningen av APP går att göra i polynomiell tid. Approximationskvoten blir B =2. Det finns en mer avancerad algoritm för approximation av TSP som heter Christofides algoritm. Den bygger på samma idéer som ovanstående algoritm men lyckas pressa ner approximationskvoten till 3 2.

Lådpackning Givet tal S = {s 1,s 2,..., s n } 0 <s i 1 skall vi packa talen i lådor som bara rymmer summan 1. Vi skall använda så få lådor som möjligt Beslutsproblem: Givet S och K, går det att packa talen i K lådor? Problemet är NP-fullständigt. Bevis: Vi visar att PARTITION LÅDPACKNING. Givet en lista P med tal beräknar vi W = i p i. Vi kan anta att alla p i W 2 (annars skulle svaret på partionsproblemet vara NEJ trivialt). Skala om: s i = 2pi W Sätt K =2. Det ger vår instans av LÅDPACKNING. Approximation av Lådpackning Vi beskriver en metod som kallas First Fit Decreasing (FFD). Sortera S så att s s 2... s n. Vi tänker oss att vi har en följd av tomma lådor beredda. Vi placerar s 1 i första lådan. Sedan placeras talen i tur och ordning i den första lådan den får plats i. Ex: S = {0, 8, 0, 5, 0, 4, 0, 4, 0, 3, 0, 2, 0, 2, 0, 2}. FFD placerar talen enligt: L 1 0,8, 0,2 L 2 0,5, 0,4 L 3 0,4, 0,3, 0,2 L 4 0,2 Denna placering är inte optimal eftersom talen kan placeras i 3 lådor. (Hur?) Komplexiteten blir O(n 2 ). Vi gör nu en analys av hur bra approximationen är: Påstående: Låt OPT vara det optimala (minimala) antalet lådor som krävs. Alla objekt som placeras i överflödiga lådor av algoritmen har storlek 1 2. Varför?: Tal som är > 1 2 måste hamna i olika lådor. Det finns inga val i det fallet. De enda tal som kan placeras fel är de som är 1 2. Påstående: Antalet tal som placeras i överflödiga lådor är OPT 1. Bevis: Vi vet att alla talen kan placeras i OPT antal lådor. Det betyder att i s i OPT. Antag att OPT st objekt med storlek t 1,t 2,..., t OPT placeras i överflödiga lådor. Låt b i vara summan av innehållet i låda i för 1 i OPT efter att approximationsalgoritmen körts. Då måste t i + b i > 1. i s i OPT i=1 b i + OPT i=1 t i = OPT i=1 (b i + t i ) >OPT. Det ger motsägelse. Om OPT = m så placeras alltså högst m 1 av storlek 1 2 i överflödiga lådor. APP m + m 1 2 B 1+ m 1 2 m 1+ m 2 m = 3 2. Det betyder att algoritmen approximerar inom faktorn 3 2.