TW2020 Optimalisering Hoorcollege 12 Leo van Iersel Technische Universiteit Delft 7 december 2016 Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 1 / 25
Volgende week: Study guide Vragenuurtje Stuur vragen of suggesties per email Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 2 / 25
Vorige keer: Voor NP-moeilijke problemen bestaan waarschijnlijk geen polynomiale algoritmes Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 3 / 25
Vorige keer: Voor NP-moeilijke problemen bestaan waarschijnlijk geen polynomiale algoritmes die een optimale oplossing vinden. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 3 / 25
Vorige keer: Voor NP-moeilijke problemen bestaan waarschijnlijk geen polynomiale algoritmes die een optimale oplossing vinden. Deze week: Kunnen we voor zulke problemen wel een goede oplossing vinden in polynomiale tijd? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 3 / 25
Stel (de beslissingsvariant van) een optimaliseringsprobleem is NP-moeilijk. Wat kunnen we doen? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 4 / 25
Stel (de beslissingsvariant van) een optimaliseringsprobleem is NP-moeilijk. Wat kunnen we doen? 1 Het probleem optimaal oplossen in exponentiële tijd (bijvoorbeeld Branch & Bound). Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 4 / 25
Stel (de beslissingsvariant van) een optimaliseringsprobleem is NP-moeilijk. Wat kunnen we doen? 1 Het probleem optimaal oplossen in exponentiële tijd (bijvoorbeeld Branch & Bound). 2 Benaderen in polynomiale tijd met kwaliteitsgarantie: approximatiealgoritmes (benaderingsalgoritmes). Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 4 / 25
Stel (de beslissingsvariant van) een optimaliseringsprobleem is NP-moeilijk. Wat kunnen we doen? 1 Het probleem optimaal oplossen in exponentiële tijd (bijvoorbeeld Branch & Bound). 2 Benaderen in polynomiale tijd met kwaliteitsgarantie: approximatiealgoritmes (benaderingsalgoritmes). 3 Benaderen zonder kwaliteitsgarantie: heuristieken. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 4 / 25
Stel (de beslissingsvariant van) een optimaliseringsprobleem is NP-moeilijk. Wat kunnen we doen? 1 Het probleem optimaal oplossen in exponentiële tijd (bijvoorbeeld Branch & Bound). 2 Benaderen in polynomiale tijd met kwaliteitsgarantie: approximatiealgoritmes (benaderingsalgoritmes). 3 Benaderen zonder kwaliteitsgarantie: heuristieken. Vandaag kijken we naar de 2 e optie. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 4 / 25
Definitie Een ρ-approximatiealgoritme (approximation algorithm) voor een optimaliseringsprobleem P is een algoritme dat voor iedere instantie I van P een oplossing produceert in polynomiale tijd, z.d.d. ALG(I ) ρ OPT (I ) ALG(I ) ρ OPT (I ) als P een minimaliseringsprobleem is als P een maximaliseringsprobleem is. Met: ALG(I ) de waarde van de oplossing geproduceerd door het algoritme voor instantie I. OPT (I ) de waarde van een optimale oplossing voor instantie I. ρ de prestatiegarantie of approximation ratio. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 5 / 25
Definitie Een vertex cover in een graaf G = (V, E) is een verzameling punten die alle lijnen raakt. Voorbeeld Vind een zo klein mogelijke vertex cover in elk van de onderstaande grafen. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 6 / 25
Probleem Vertex Cover Gegeven: G = (V, E). Vind: een vertex cover van G met een minimum aantal punten. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 7 / 25
Probleem Vertex Cover Gegeven: G = (V, E). Vind: een vertex cover van G met een minimum aantal punten. Greedy algoritme voor Vertex Cover: 1 C := 2 Kies een punt v met zo hoog mogelijke graad. 3 Voeg v toe aan C. 4 Verwijder v en alle aangrenzende lijnen uit de graaf. 5 Herhaal stappen 2-4 totdat er geen lijnen meer over zijn. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 7 / 25
Probleem Vertex Cover Gegeven: G = (V, E). Vind: een vertex cover van G met een minimum aantal punten. Greedy algoritme voor Vertex Cover: 1 C := 2 Kies een punt v met zo hoog mogelijke graad. 3 Voeg v toe aan C. 4 Verwijder v en alle aangrenzende lijnen uit de graaf. 5 Herhaal stappen 2-4 totdat er geen lijnen meer over zijn. Dan is C een vertex cover. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 7 / 25
Probleem Vertex Cover Gegeven: G = (V, E). Vind: een vertex cover van G met een minimum aantal punten. Greedy algoritme voor Vertex Cover: 1 C := 2 Kies een punt v met zo hoog mogelijke graad. 3 Voeg v toe aan C. 4 Verwijder v en alle aangrenzende lijnen uit de graaf. 5 Herhaal stappen 2-4 totdat er geen lijnen meer over zijn. Dan is C een vertex cover. Vraag Is het greedy algoritme een goed of een slecht benaderingsalgoritme? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 7 / 25
Beschouw een bipartiete graaf G = (U W, E) met U = n, W = W 1 W 2... W n, W 1 = n, W 2 = n 2, W 3 = n 3,..., W n = n n = 1. Zodanig dat elk punt in W i verbonden is met i punten in U en elk punt in U verbonden is met hoogstens 1 punt in W i. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 8 / 25
Beschouw een bipartiete graaf G = (U W, E) met U = n, W = W 1 W 2... W n, W 1 = n, W 2 = n 2, W 3 = n 3,..., W n = n n = 1. Zodanig dat elk punt in W i verbonden is met i punten in U en elk punt in U verbonden is met hoogstens 1 punt in W i. U W W 1 W 2 W 3 W 4 Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 8 / 25
U W W 1 W 2 W 3 W 4 Merk op: d(u) n d(w) = i u U w W i Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 9 / 25
U W W 1 W 2 W 3 W 4 Merk op: d(u) n d(w) = i u U w W i Het greedy algoritme kiest een willekeurig punt met maximum graad, dus kan het punt in W n (in dit geval W 4 ) kiezen. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 9 / 25
U W W 1 W 2 W 3 W 4 Nu is: d(u) n 1 d(w) = i u U w W i Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 10 / 25
U W W 1 W 2 W 3 W 4 Nu is: d(u) n 1 d(w) = i u U w W i Het greedy algoritme kiest een willekeurig punt met maximum graad, dus kan het punt in W n 1 (in dit geval W 3 ) kiezen. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 10 / 25
U W W 1 W 2 W 3 W 4 Nu is: d(u) n 2 d(w) = i u U w W i Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 11 / 25
U W W 1 W 2 W 3 W 4 Nu is: d(u) n 2 d(w) = i u U w W i Het greedy algoritme kiest steeds een willekeurig punt met maximum graad, dus kan de punten in W n 2 (in dit geval W 2 ) kiezen. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 11 / 25
U W W 1 W 2 W 3 W 4 Nu is: d(u) n 3 d(w) = i u U w W i Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 12 / 25
U W W 1 W 2 W 3 W 4 Nu is: d(u) n 3 d(w) = i u U w W i Het greedy algoritme kiest steeds een willekeurig punt met maximum graad, dus kan de punten in W n 3 (in dit geval W 1 ) kiezen. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 12 / 25
U W W 1 W 2 W 3 W 4 Uiteindelijk worden alle punten in W gekozen. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 13 / 25
U W W 1 W 2 W 3 W 4 Uiteindelijk worden alle punten in W gekozen. Dus vindt het algoritme een vertex cover met grootte: W = n + n 2 + n 3 +... + n n n ln(n) Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 13 / 25
U W W 1 W 2 W 3 W 4 Uiteindelijk worden alle punten in W gekozen. Dus vindt het algoritme een vertex cover met grootte: W = n + n 2 + n 3 +... + n n n ln(n) Hoe groot is een kleinste vertex cover in deze graaf? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 13 / 25
Dus voor deze klasse van instanties geldt: en dus ρ ln(n). ALG OPT n ln(n) = ln(n) n Het greedy algoritme is een heel slecht benaderingsalgoritme, want het heeft geen constante prestatiegarantie. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 14 / 25
Kunnen we een LP-relaxatie gebruiken om Vertex Cover te benaderen? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 15 / 25
Kunnen we een LP-relaxatie gebruiken om Vertex Cover te benaderen? Beslissingsvariabelen: { 1 als punt v in de vertex cover zit x v = 0 anders Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 15 / 25
Kunnen we een LP-relaxatie gebruiken om Vertex Cover te benaderen? Beslissingsvariabelen: { 1 als punt v in de vertex cover zit x v = 0 anders Beschouw de gewogen versie van Vertex Cover, met een gewicht c v 0 voor elk punt v V. ILP formulering: z IP = min c v x v v V o.d.v. x u + x v 1 e = {u, v} E x v {0, 1} v V Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 15 / 25
LP relaxatie: z LP = min c v x v v V o.d.v. x u + x v 1 e = {u, v} E x v 1 v V (niet nodig want c v 0) x v 0 v V Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 16 / 25
LP relaxatie: z LP = min c v x v v V o.d.v. x u + x v 1 e = {u, v} E x v 1 v V (niet nodig want c v 0) x v 0 v V Een afrondalgoritme: 1 Los de LP-relaxatie op. Laat x de gevonden optimale oplossing zijn. 2 Dan is C := {v V xv 1 2 } een vertex cover. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 16 / 25
LP relaxatie: z LP = min c v x v v V o.d.v. x u + x v 1 e = {u, v} E x v 1 v V (niet nodig want c v 0) x v 0 v V Een afrondalgoritme: 1 Los de LP-relaxatie op. Laat x de gevonden optimale oplossing zijn. 2 Dan is C := {v V xv 1 2 } een vertex cover. Stelling Het afrondalgoritme is een 2-approximatiealgoritme voor Vertex Cover. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 16 / 25
Voorbeeld Vind een vertex cover in de onderstaande graaf met behulp van het afrondalgoritme. Hoe groot is een kleinste vertex cover? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 17 / 25
Simpeler 2-approximatiealgoritme voor ongewogen Vertex Cover: 1 C := 2 Kies een willekeurige lijn e = {u, v}. 3 Voeg u en v toe aan C. 4 Verwijder u, v en alle aangrenzende lijnen uit de graaf. 5 Herhaal stappen 2-4 totdat er geen lijnen meer over zijn. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 18 / 25
Simpeler 2-approximatiealgoritme voor ongewogen Vertex Cover: 1 C := 2 Kies een willekeurige lijn e = {u, v}. 3 Voeg u en v toe aan C. 4 Verwijder u, v en alle aangrenzende lijnen uit de graaf. 5 Herhaal stappen 2-4 totdat er geen lijnen meer over zijn. Stelling Het bovenstaande algoritme is een 2-approximatiealgoritme voor Vertex Cover. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 18 / 25
Voorbeeld Hoe groot is een vertex cover gevonden door het simpelere 2-approximatiealgoritme in de onderstaande graaf, hoe groot is een kleinste vertex cover? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 19 / 25
Probleem Symmetrisch handelsreizigersprobleem (TSP) Gegeven: een volledige graaf G = (V, E), een lengte d e voor elke lijn e E; Gevraagd: een Hamilton circuit C in G waarvoor e C d e minimaal is. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 20 / 25
Probleem Symmetrisch handelsreizigersprobleem (TSP) Gegeven: een volledige graaf G = (V, E), een lengte d e voor elke lijn e E; Gevraagd: een Hamilton circuit C in G waarvoor e C d e minimaal is. Stelling Er bestaat geen ρ-approximatiealgoritme voor TSP met ρ een constante tenzij P = NP. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 20 / 25
Probleem Symmetrisch handelsreizigersprobleem (TSP) Gegeven: een volledige graaf G = (V, E), een lengte d e voor elke lijn e E; Gevraagd: een Hamilton circuit C in G waarvoor e C d e minimaal is. Stelling Er bestaat geen ρ-approximatiealgoritme voor TSP met ρ een constante tenzij P = NP. Bewijs (idee) Een ρ-approximatiealgoritme voor TSP zou gebruikt kunnen worden om te beslissen of er een Hamilton Circuit bestaat in een graaf, en dit probleem is NP-volledig. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 20 / 25
Vraag Kunnen we wel een approximatiealgoritme vinden voor speciale gevallen van TSP? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 21 / 25
Vraag Kunnen we wel een approximatiealgoritme vinden voor speciale gevallen van TSP? Laat d uv := d {u,v}, de afstand van de lijn tussen punt u en punt v. Definitie De afstanden voldoen aan de driehoeksongelijkheid als d uv d uw + d wv u, v, w V Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 21 / 25
Vraag Kunnen we wel een approximatiealgoritme vinden voor speciale gevallen van TSP? Laat d uv := d {u,v}, de afstand van de lijn tussen punt u en punt v. Definitie De afstanden voldoen aan de driehoeksongelijkheid als d uv d uw + d wv u, v, w V Definitie TSP, de driehoeksongelijkheidsversie van TSP, is het TSP probleem beperkt tot afstanden die voldoen aan de driehoeksongelijkheid. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 21 / 25
Vraag Kunnen we wel een approximatiealgoritme vinden voor speciale gevallen van TSP? Laat d uv := d {u,v}, de afstand van de lijn tussen punt u en punt v. Definitie De afstanden voldoen aan de driehoeksongelijkheid als d uv d uw + d wv u, v, w V Definitie TSP, de driehoeksongelijkheidsversie van TSP, is het TSP probleem beperkt tot afstanden die voldoen aan de driehoeksongelijkheid. TSP is NP-volledig. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 21 / 25
Een multigraaf is een graaf waarin paralelle lijnen zijn toegestaan (meerdere lijnen tussen hetzelfde paar punten). Definitie Een Euler tour in een multigraaf is een gesloten wandeling waarin elk punt tenminste één keer voorkomt en elke lijn precies één keer voorkomt. Als er een Euler tour bestaat in een multigraaf G dan heet G Euleriaans. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 22 / 25
Bruggen van Königsberg (1736) Kun je elke brug precies één keer oversteken en bij je beginpunt uitkomen? Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 23 / 25
Stelling (Euler) Een multigraaf G is Euleriaans dan en slechts dan als G samenhangend is en de graad van elk punt van G even is. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 24 / 25
Stelling (Euler) Een multigraaf G is Euleriaans dan en slechts dan als G samenhangend is en de graad van elk punt van G even is. Voorbeeld Is de onderstaande graaf Euleriaans? Zo ja, vind een Euler tour. u v w x a b z y Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 24 / 25
Boomalgoritme voor TSP in een (volledige) graaf G met afstanden voor de lijnen: 1 Vind een minimum opspannende boom T in G. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 25 / 25
Boomalgoritme voor TSP in een (volledige) graaf G met afstanden voor de lijnen: 1 Vind een minimum opspannende boom T in G. 2 Verdubbel de lijnen in T. Dit geeft een Euleriaanse multigraaf. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 25 / 25
Boomalgoritme voor TSP in een (volledige) graaf G met afstanden voor de lijnen: 1 Vind een minimum opspannende boom T in G. 2 Verdubbel de lijnen in T. Dit geeft een Euleriaanse multigraaf. 3 Vind een Euler tour in deze multigraaf. Volg de wandeling maar sla punten over als ze al bezocht zijn. Dit geeft een TSP tour. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 25 / 25
Boomalgoritme voor TSP in een (volledige) graaf G met afstanden voor de lijnen: 1 Vind een minimum opspannende boom T in G. 2 Verdubbel de lijnen in T. Dit geeft een Euleriaanse multigraaf. 3 Vind een Euler tour in deze multigraaf. Volg de wandeling maar sla punten over als ze al bezocht zijn. Dit geeft een TSP tour. Stelling Het boomalgoritme is een 2-approximatiealgoritme voor TSP. Leo van Iersel (TUD) TW2020 Optimalisering 7 december 2016 25 / 25