Benaderingsalgoritmen Eerste hulp bij NP-moeilijkheid Algoritmiek
Herhaling NP-volledigheid (1) NP: er is een polynomiaal certificaat voor ja-instanties dat in polynomiale tijd te controleren is Een probleem A is NP-moeilijk als B ≤P A (reductie van B naar A) voor iedere B in NP Een probleem A is NP-volledig als het in NP zit en NP-moeilijk is Er bestaan NP-moeilijke problemen die niet in NP zitten, of waarvan het niet bekend is of ze in NP zitten Algoritmiek
Herhaling NP-volledigheid (2) Belangrijke boodschap: als ook maar één NP-moeilijk probleem in polynomiale tijd oplosbaar is, dan zijn alle problemen in NP in polynomiale tijd oplosbaar Er is een sterk geloof dat geen enkel NP-moeilijk probleem in polynomiale tijd oplosbaar is Maar wat geloof jij? Algoritmiek
Herhaling NP-volledigheid (3) Wat betekent het dat een probleem NP-moeilijk is? Heel veel, maar ook heel weinig Niet: je kunt het probleem niet oplossen Wel: je zult creatief moeten zijn om het probleem op te lossen of geluk met de invoer moeten hebben Algoritmiek
Herhaling NP-volledigheid (4) NP-moeilijkheid/volledigheid gaat meestal over beslisproblemen Maar er zijn veel NP-moeilijke optimaliserings-problemen Bijv. Handelsreizigersprobleem Merk op dat een polynomiale reductie gewoon kan bestaan voor optimaliseringsproblemen; zulke problemen zitten alleen niet in NP Hoe gaan we met dit soort problemen om? Algoritmiek
Eerste Hulp bij NP-moeilijkheid Maak gebruik van/aannames over je invoer Kortste simpele pad NP-moeilijk in het algemeen (reductie van Hamiltonian Path), maar polynomiaal zonder negatieve cycles (Bellman-Ford) Heuristiek: polynomiaal algoritme dat vaak een goede oplossing geeft Genetische algoritmen, benaderingsalgoritmen, sommige greedy algoritmen Gebruik (moderaat) exponentiële tijd Vaak: alle mogelijke oplossing afgaan en beste kiezen Of een combinatie! Algoritmiek
Toepassingsgebied: Logistiek Stel, je werkt bij een supermarkt… Toepassingsgebied: Logistiek Algoritmiek
Boodschappenophaalpunten (1) Nieuw in supermarktland: online bestellen, en dan in de winkel afhalen Onze opdrachtgever is een grote supermarkt die een test wil doen met ophaalpunten Er is geld voor k ophaalpunten, die op willekeurige plekken in het land gebouwd mogen worden Algoritmiek
Boodschappenophaalpunten (2) Dankzij reclames is er inmiddels een verzameling A van n adressen van klanten Zodra de k ophaalpunten gebouwd zijn, zal een klant naar het dichtsbijzijnde ophaalpunt gaan Dichtsbijzijnd: Euclidische afstand Waar bouwen we de ophaalpunten zdd de langste afstand die een klant aflegt zo klein mogelijk is? Algoritmiek
k-Center Gegeven een verzameling A van n punten in het vlak en een getal k Als P een verzameling punten in het vlak is, dan is dist(a,P) = minp in P dist(a,p) (het dichtsbijzijnde ophaalpunt) en r(P) = maxa in A dist(a,P) de bedekkingsradius (maximale rij-afstand) Opdracht: vind een verzameling P met |P| ≤ k zdd r(P) zo klein mogelijk is P hoeft geen deelverzameling van A te zijn Algoritmiek
k-Center NP-moeilijk We moeten toch een plaatsing genereren Daar helpt NP-moeilijkheid niet bij Wat is jouw algoritme? Bijvoorbeeld greedy, maar iets anders mag ook Algoritmiek
Een greedy aanpak Bijvoorbeeld: bouw P iteratief op, en plaats telkens een ophaalpunt op een plek die r(P) zoveel mogelijk verkleint De gevonden oplossing is niet goed in vergelijking met optimum d Optimaal: r(P*) = 0 Kunnen we een algoritme vinden dat wel goed is in vergelijking met het optimum Greedy: r(P) = d/2 k=2 A B Algoritmiek
Benaderingsfactor Gegeven invoer van een optimaliseringsprobleem Laat SOL de waarde zijn van de oplossing die jouw algoritme vindt Laat OPT de waarde zijn van het optimum Dan is de benaderingsfactor van de door jouw algoritme geleverde oplossing: max{SOL/OPT, OPT/SOL} Relatieve kwaliteit van de gevonden oplossing Altijd minstens 1 Algoritmiek
Benaderingsalgoritme Een algoritme is een c-benaderingsalgoritme als voor iedere probleeminvoer het algoritme een oplossing geeft met benaderingsfactor hoogstens c c kan een constante zijn, maar ook afhangen van (de grootte van) de invoer c heet de benaderingsfactor van het algoritme “Benaderingsalgoritmen zijn heuristieken die een oplossing berekenen van bewijsbaar goede kwaliteit t.o.v. het optimum” Algoritmiek
k-Center benaderen: Poging 1 Stel: we weten het optimum R* Kun je een plaatsing P berekenen met r(P) ≤ 2R*? Tip: gebruik greedy Werkend idee: plaats bij willekeurige onbedekte klant een ophaalpunt en verklaar alle klanten binnen afstand 2R* bedekt Algoritmiek
Greedy algoritme 1 Markeer alle a in A onbedekt, P = ∅ while er is een onbedekte a in A do p = willekeurige onbedekte a in A plaats p in P en markeer alle punten binnen afstand 2R* van p bedekt return P Algoritmiek
Greedy algoritme 1: eigenschappen Het algoritme heeft polynomiale looptijd r(P) ≤ 2R* per constructie |P| ≤ k bewijs op volgende slide Stelling: k-Center heeft een polynomiale tijd, 2-benaderingsalgoritme, als het optimum bekend is Algoritmiek
|P| ≤ k Stel P* heeft r(P*) = R* en |P*| = k, maar |P| > k Voor iedere p in P* is er hooguit 1 a in P met dist(a,p) ≤ R* Stel er zijn er twee, a en a’ Per constructie geldt dist(a,a’) > 2R* 2R* ≥ dist(a,p) + dist(p,a’) ≥ dist(a,a’) > 2R* Contradictie Iedere a in P wordt door ≥ 1 p in P* bedekt Dus |P*| ≥ |P| > k, een contradictie Algoritmiek
k-Center benaderen: Poging 2 Stel: we weten het optimum niet Gelukje: het algoritme kunnen we gebruiken om het volgende te beslissen voor gegeven R Er is een oplossing P met |P| ≤ k en r(P) ≤ 2R Er is geen oplossing P met |P| ≤ k en r(P) ≤ R Algoritme en correctheidsbewijs: zie volgende slides Algoritmiek
Greedy algoritme 1” Invoer: verzameling klanten A, getal R Markeer alle a in A onbedekt, P = ∅ while er is een onbedekte a in A do p = willekeurige onbedekte a in A plaats p in P en markeer alle punten binnen afstand 2R van p bedekt if |P| ≤ k then return P else return “geen oplossing met grootte ≤ k en bedekkingsradius ≤ 2R” Algoritmiek
Algoritme 1”: |P| ≤ k Stel P* heeft r(P*) = R en |P*| = k, maar |P| > k Voor iedere p in P* is er hooguit 1 a in P met dist(a,p) ≤ R Stel er zijn er twee, a en a’ Per constructie geldt dist(a,a’) > 2R 2R ≥ dist(a,p) + dist(p,a’) ≥ dist(a,a’) > 2R Contradictie Iedere a in P wordt door ≥ 1 p in P* bedekt Dus |P*| ≥ |P| > k, een contradictie Algoritmiek
k-Center benaderen: poging 2 Gebruik nu binair zoeken Algoritme 1” kunnen we gebruiken om het volgende te beslissen voor gegeven R Er is een oplossing P met |P| ≤ k en r(P) ≤ 2R Er is geen oplossing P met |P| ≤ k en r(P) ≤ R Dus iedere keer kunnen we ondergrens verhogen of bovengrens verlagen Totdat boven- en ondergrens factor 2 van elkaar liggen Algoritmiek
k-Center benaderen: Poging 3 Voorgaande algoritme is niet helemaal precies, en zelfs binair zoeken kan een tijd duren r(P) is niet per se geheeltallig Ander idee, dat ook nog simpeler is Voorheen kozen we adres met afstand > 2R* van eerder gekozen punten Idee: kies adres dat zover mogelijk weg is van eerder gekozen punten Algoritmiek
k-Center: greedy algoritme 2 P = {a} voor willekeurige a in A while |P| < k do p = a in A die dist(a,P) maximaliseert plaats p in P return P Algoritmiek
Greedy algoritme 2: correctheid Lemma: r(P) ≤ 2R*, waarbij R* de bedekkingsradius van het optimum Bewijs: Stel r(P) > 2R* en dus er is a in A met dist(a,P) > 2R* Laat ai het punt gekozen in iteratie i en Pi de verzameling P aan het begin van iteratie i Dan is dist(ai,Pi) ≥ dist(a,Pi) ≥ dist(a,P) > 2R*, omdat ai verst weg van Pi ligt, en a minstens zo ver ligt van Pi als van P Algoritmiek
Greedy algoritme 2: correctheid Dus ieder gekozen punt is minstens 2R* weg van eerder gekozen punten Dat betekent dat we a1,…,ak ook hadden kiezen in Algoritme 1”, en dan nog een extra ak+1 hadden gekozen vanwege het bestaan van a Algoritme 1” zou dus een oplossing van grootte > k vinden, en dan nee rapporteren, dwz er is geen oplossing P* met r(P*) ≤ R* en |P*| ≤ k Dit is een contradictie met definitie R*, dus r(P) ≤ 2R* Algoritmiek
Greedy algoritme 2: eigenschappen Het algoritme heeft polynomiale looptijd r(P) ≤ 2R* |P| ≤ k per constructie Stelling: k-Center heeft een polynomiale tijd, 2-benaderingsalgoritme Techniek: greedy algoritme Algoritmiek
Verdieping (1) Algoritme werkt zolang dist “redelijk” is Voldoet aan driehoeksongelijkheid Symmetrisch en dist(x,x)=0 Anders wordt het probleem veel moeilijker: geen constante benaderingsfactor mogelijk in polynomiale tijd, tenzij P=NP Er bestaat geen polynomiale tijd algoritme met benaderingsfactor beter dan 2, tenzij P=NP Algoritmiek
Verdieping (2) Stel: R ligt vast is en we willen het minimum aantal ophaalpunten bepalen: Punten bedekken met schijven van radius R Variant van bekende Set Cover probleem Gegeven een verzameling U, en een verzameling F van deelverzamelingen van U, vind een kleinste deelverzameling van F zdd dat heel U bedekt wordt In dit geval, U=A en F = {door schijf S overdekte elementen in A | schijven S} log |U|-benaderingsalgoritme in het algemeen (lees algoritme in boek) Algoritmiek
Handelsreizigerprobleem Logistiek deel 2 Algoritmiek
Handelsreizigersprobleem 1 2 3 4 5 Gegeven: steden 1, … n. Voor elk paar steden i, j, een afstand d(i,j) Gevraagd: wat is de kortste route die in stad 1 begint, elke stad precies 1 keer bezoekt en weer in stad 1 eindigt? Optimalisering 4 4 1 2 1 2 3 3 2 2 5 De tweede route is dus beter dan de eerste. We zoeken de kortste route, dat is hier dus : 1, 2, 3, 4. In ‘t Engels: TSP: Travelling Salesman Problem, of: Travelling Sales Person problem. 5 2 2 3 3 4 2 4 2 13 11 Algoritmiek
Geval 1: driehoeksongelijkheid Stel d(i,j) ≤ d(i,k) + d(k,i) voor alle i,j,k Stelling: Er is een polynomiale tijd, 2-benaderingsalgoritme voor Handelsreiziger met driehoeksongelijkheid Techniek: een ondergrens voor het optimum vinden Vaak impliciet in de analyse, hier expliciet Bewijs: het bord-bewijs staat in het boek ook goed uitgelegd Algoritmiek
Geval 2: geen driehoeksong. Stelling: Voor iedere constante c: er is geen c-benaderingsalgoritme voor het Handelsreizigers-probleem zonder driehoeksong., tenzij P=NP Idee: Reductie van Hamiltonian Circuit Gegeven: Ongerichte graaf G=(N,A). Gevraagd: Is er een cycle in G, die elke knoop in G precies een keer bezoekt? Bewijs: het bord-bewijs staat in het boek ook goed uitgelegd Een graaf met een Hamiltonian circuit Algoritmiek
Verdieping (1) Dit is een gap-introducing reduction Een gat in de benaderingsfactor ter grootte c Er bestaan ook gap-preserving reductions Speciale polynomiale reducties, specifiek om benaderingsfactoren te bewaren Er zijn veel ondergrensbewijzen Algoritmiek
Verdieping (2) Er bestaat een mooi (3/2)-benaderingsalgoritme voor Handelsreiziger met driehoeksongelijkheid https://en.wikipedia.org/wiki/Christofides_algorithm Euclidische geval: Benaderingsfactor (1+𝛜) mogelijk in polynomiale tijd voor iedere vaste 𝛜 PTAS (Polynomial-Time Approximation Scheme) Algoritmiek
Verdieping (3) Veel onderzoek naar exacte algoritmen voor Handelsreiziger Werkt zelfs met tienduizenden steden vaak zonder grote problemen “Praktisch” Veel bedrijven leveren software die dit doet Algoritmiek
Verdieping (4) Er bestaan benaderingsalgoritmes die in exponentiële tijd lopen En ondergrensbewijzen voor zulke algoritmes! Er bestaan benaderingsalgoritmes voor problemen die in polynomiale tijd oplosbaar zijn Snel een redelijke oplossing op big data Er bestaan benaderingsalgoritmes met een additieve (ipv multiplicatieve) benaderingsfactor Algoritmiek