Grafer, träd, cykler
Transcription
Grafer, träd, cykler
Polyeder Grafdefinitioner 0 ≤ x1 ≤ 2, 0 ≤ x2 ≤ 2, 0 ≤ x3 ≤ 2, x1 + x2 + x3 ≤ 5, x1 + x2 + x3 ≥ 1 N = {i}: noder (hörn) B = {(i, j)}, i ∈ N, j ∈ N: bågar (kanter) Graf: G = (N, B) Definitioner Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod. En enkel väg innehåller ingen cykel. En sammanhängande graf har en väg mellan varje par av noder. Träd: Sammanhängande graf utan cykler. Möjligt synsätt: Simplexmetoden söker i en graf. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 1 / 33 Träd Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 2 / 33 Uppspännande träd Sats För en graf med n noder är följande begrepp ekvivalenta: • Ett uppspännande träd. • En sammanhängande graf med n − 1 bågar. • En graf utan cykler med n − 1 bågar. Träd Sats För ett träd med n (> 1) noder gäller: • Det har n − 1 bågar. • Mellan varje par av noder finns en unik väg. • Om en ny båge läggs till skapas exakt en cykel. • Om en båge tas bort bildas två träd. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 3 / 33 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 4 / 33 Grafer Grafer Definition Definition En fullständig graf har en båge mellan varje par av noder. En plan graf kan ritas så att inga bågar korsar varandra (förutom i noderna). Plan? Ja, plan. 3 1 6 Definition 4 I en tudelad graf går alla bågar från en nodmängd till en annan. 2 7 5 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 5 / 33 Cykler och vägar Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 6 / 33 10 september 2015 8 / 33 Hamiltoncykel Definitioner En Eulercykel är en cykel som använder varje båge exakt en gång. 3 En Hamiltoncykel är en cykel som passerar varje nod exakt en gång. 2 Exempel på frågeställningar: 8 4 7 9 Finns en Eulercykel i en given graf? Finns en Hamiltoncykel i en given graf? Definition 6 En nods valens är antalet bågar som ansluter till noden. 1 Sats En sammanhängande oriktad graf har en Eulercykel om och endast om alla dess noder har jämn valens. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 7 / 33 10 5 Petersens graf saknar Hamiltoncykel och Eulercykel. Kaj Holmberg (LiU) TAOP88 Optimering Bågmängder Graffärgning Nodfärgning: Inga två närliggande noder har samma färg. 1 5 1 7 3 4 2 1 3 Bågfärgning: Inga två angränsande bågar har samma färg. 2 4 2 1 1 5 2 6 Matchning: Varje nod ansluter till högst en båge. En perfekt matchning innehåller alla noder. 1 1 4 2 En klick är en fullständig subgraf. 2 3 3 4 4 7 2 5 3 6 3 5 2 1 2 4 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 9 / 33 Intressanta optimeringsproblem Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 10 / 33 Billigaste uppspännande träd (MST) Finn ett billigaste uppspännande träd i en given oriktad graf med bågkostnader. Maximal klick, nK . Maximal matchning, mM . Nodfärgning med min antal färger, χ. Bågfärgning med min antal färger, χ0 . Givet: Graf G = (N, B), bågkostnader c. Finn träd GT = (N, T ) , T ⊆ B, så att Satser χ ≥ nK . (En graf kallas perfekt om χ = nK .) X cij är minimal. (i,j)∈T 3 Varje plan graf kan färgas med fyra färger. 10 7 Satser χ0 ≥ vMAX . χ0 ≤ vMAX + 1. 6 5 4 (vMAX är grafens maxvalens.) 8 χ0 är vMAX eller vMAX + 1, men det är NP-fullständigt att avgöra vilket. 2 Metoder? Heuristiker. (Kommer senare.) Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 11 / 33 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 12 / 33 Graf-baserade lösningsmetoder: Kruskals metod: 1. Finn billigaste återstående båge. Ta bort bågen ur listan. 2. Om bågen ej bildar cykel, ta med den. (Annars släng den.) 3. Om antal bågar är n − 1: Stopp. Annars gå till 1. Ett uppspännande träd har n − 1 bågar, samt saknar cykler är sammanhängande Komplexitet: O(|B| log |B|) Två metodprinciper: (sortera bågarna först) 3 1. Ta med billigaste återstående bågen, om ingen cykel bildas (Kruskals metod). 10 7 6 5 4 2. Ta med billigaste bågen som utökar delträdet (Prims metod). 8 2 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 13 / 33 Prims metod: Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 14 / 33 Prims metod (bättre implementering) 0. Låt nod 1 vara delträdet. 1. Finn billigaste båge ut från delträdet. Håll reda på trädets närmaste granne till nod i, wi . 2. Ta med den och dess andra ändnod i delträdet. Spara möjliga nodmärkningar. 3. Om antal bågar är n − 1: Stopp. Annars gå till 1. 0. Låt nod 1 vara delträdet och sätt wi = 1 för alla andra noder i. 1. Finn billigaste båge ut ur delträdet: mini ci,wi . 3 3. Ta med bågen i delträdet. 10 7 4. Uppdatera wi via den nya bågen. (Närmare granne?) 5. Om antal bågar är n − 1: Stopp. Annars gå till 1. 6 5 4 Komplexitet: O(|N|2 ) 8 2 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 15 / 33 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 16 / 33 Handelsresandeproblemet (TSP) Handelsresandeproblemet: varianter Finn en billigaste Hamiltoncykel i en given graf med bågkostnader. Handelsresandeproblemet med återbesök (TSPr): Finn billigaste cykel i grafen som besöker varje nod minst en gång. Givet: Graf G = (N, B), bågkostnader c. Finn cykel GH = (N, H), H ⊆ B, så att X Specialfall: ∆TSP: Symmetrisk kostnadsmatris som uppfyller triangelolikheten: cij ≤ cik + ckj för alla k, i, j. cij är minimal. (i,j)∈H (Implicerar fullständig graf.) 3 Specialfall: ∆TSPb: Symmetrisk kostnadsmatris som uppfyller den begränsade triangelolikheten: cij ≤ cik + ckj för alla bågar som finns. 10 7 6 5 4 ∆TSP har samma lösning som ∆TSPr. (Återbesök lönar sig aldrig.) 8 Till varje TSP med lösning finns ett ∆TSPb som har samma optimala lösning. (Addera en konstant till alla kostnader.) 2 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 17 / 33 Heltalsformulering av TSP, riktad graf X min då i∈N X j∈N X xij = 1 för alla j 10 september 2015 18 / 33 cij xij (en in till varje nod) = 2 för alla j xij (valens två) ≥ 2 för alla S ⊂ N (sammanhängande) i∈S j∈N\S xij = 1 för alla i X xij (en ut från varje nod) ≥ 1 för alla S ⊂ N xij ∈ {0, 1} för alla (i, j) ∈ B För TSPr: Ta bort första bivillkoren. (sammanhängande) i∈S j∈N\S xij ∈ {0, 1} ellerX X X (i,j)∈B X xij i∈N X X cij xij (i,j)∈B X TAOP88 Optimering TSP, oriktad graf Variabeldefinition: xij = 1 om båge (i, j) ingår i cykeln, 0 om inte. min Kaj Holmberg (LiU) Alternativ X X(ej för TSPr): xij ≤ |S| − 1 för alla S ⊂ N för alla (i, j) ∈ B (inga småcykler) i∈S j∈S xij ≤ |S| − 1 för alla S ⊂ N (inga småcykler) (ej TSPr) i∈S j∈S Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 19 / 33 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 20 / 33 Relaxation av TSP: 1-träd Förbättring av 1-träd Billigaste 1-träd: Ett MST för noderna {2, 3, . . . , n}, plus de två billigaste bågarna som ansluter till nod 1. Nodstraff: Addition av konstant till c för alla bågar som ansluter till en nod ändrar ej optimal handelsresandetur. (Alltså inte ett träd.) Alla tillåtna lösningar blir 2c dyrare. Rätt antal bågar. Nod 1 får valens 2, men andra noder kan ha fel valens. 1 Finn billigaste 1-träd. 2 Stopp om Hamiltoncykel fås. Optimum. Lika lätt att hitta billigaste 1-träd som MST. 3 Välj en nod med för hög valens. Öka kostnaderna för alla bågar som ansluter till noden med t.ex. 1. Ett 1-träd är en Hamiltoncykel om varje nods valens är lika med två. 4 Gå till 1. En cykel (som kan vara för liten) bildas genom nod 1. Heuristik: Försök få en tillåten lösning genom att flytta en ändnod för enstaka bågar, från noder med för hög valens till noder med för låg. Om billigaste 1-träd är en Hamiltoncykel, är turen optimal. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 21 / 33 Exempel: 1-träd Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 22 / 33 TSP: LP-relaxation LP-relaxationen samt relaxation av sammanhängandekrav: 2 3 1 Kan ge lösningsgraf (där xij > 0) som ej är sammanhängande. 5 8 Lägg till det bivillkor som ej uppfylls. 4 7 3 1 7 5 9 1 Lös LP-relaxationen. 2 Identifiera en nodmängd S som ej är sammanhängande med övriga noder. 3 Lägg till bivillkoret att minst två bågar ska gå ut från S och lös om LP-relaxationen. 4 Om lösningen inte är sammanhängande, gå till 2. 3 6 4 Billigaste 1-träd. Kostnad: 17. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 23 / 33 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 24 / 33 Steinerträdsproblemet Ruttplaneringsproblemet Givet: Graf G = (N, E ), en nodmängd N 0 ⊂ N och bågkostnader c. Ett antal lastbilar skall köra ut varor till ett antal kunder. Varje lastbil startar i en depå, kör runt till några kunder och levererar varor och återvänder till depån. Lastbilarna har begränsad lastkapacitet och kunderna given efterfrågan. Ett Steinerträd måste omfatta samtliga noder i N 0 men får också omfatta noder i N \ N 0 . Steinerträdsproblemet: Finn ett Steinerträd med minimal kostnad. Mittennoden behöver inte vara med, men det blir billigare att ta med den. Varje lastbil kör en handelsresandetur i en mängd noder som ska bestämmas. Samtliga noder skall täckas av någon tur. Målfunktion: Minimera kostnaden eller avgasutsläppen eller en kombination av dem. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 25 / 33 Kinesiska brevbärarproblemet Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 26 / 33 Kinesiska brevbärarproblemet A En brevbärartur är en tur som använder varje båge minst en gång. A Det kinesiska brevbärarproblemet är att finna en brevbärartur med minimal kostnad. B D Pregel Königsbergs broar: (Euler, 1700-talet) Försök finna en tur som passerar varje bro en gång. Königsberg Königsberg En Eulercykel är en optimal brevbärartur, om den finns. D En oriktad graf har en Eulercykel om och endast om den är sammanhängande och alla dess noder har jämn valens. C → Kaj Holmberg (LiU) TAOP88 Optimering C En Eulercykel är en cykel som använder varje båge i grafen exakt en gång. B Pregel C → A D B Det fanns inget promenadstråk genom Königsberg som passerade varje bro exakt en gång. (Se nodvalens.) 10 september 2015 27 / 33 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 28 / 33 Kinesiska brevbärarproblemet: Modell Kinesiska brevbärarproblemet Sats Det finns en optimallösning med x ≤ 2 (om c ≥ 0). (Dvs. ingen båge används mer än en gång för mycket.) Matematisk modell: xij : antalet gånger båge (i, j) trafikeras. zi : antal gånger nod i passeras i turen. XX min cij xij då Metod: Minimera extraarbetet. Dvs. minimera kostnaden för de bågar som används mer än en gång. i j X (xij + xji ) − 2zi = 0 för alla i Lägg till bågar mellan noder med udda valens, så att alla noder får jämn valens, på billigaste sätt. j xij ≥ 1, heltal zi ≥ 1, heltal för alla i, j för alla i En Eulercykel ger då den billigaste brevbärarturen. 1. Förbind noderna med udda valens på billigaste sätt (mha billigaste-väg och minimal perfekt matchning). 2. Finn Eulercykeln. Polynomisk optimerande metod. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 29 / 33 Kinesiska brevbärarproblemet: Exempel 10 1 Kaj Holmberg (LiU) Königsberg: A 7 5 6 B 8 3 A 12 8 7 30 / 33 A 12 7 D 6 B 12 7 15 16 9 9 10 september 2015 Kinesiska brevbärarproblemet 2 12 TAOP88 Optimering D 14 8 15 6 B D 14 8 4 C C C Finn Eulercykel. Kostnad: 43 + 12 = 55. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 31 / 33 Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 32 / 33 Kinesiska brevbärarproblemet Addera bågarna i billigaste perfekta matchning. Finn valfri Eulercykel. A A 12 7 8 12 8 9 B 6 B D 16 D Pregel 8 Königsberg C C En söndagspromenad i Königsberg. Kaj Holmberg (LiU) TAOP88 Optimering 10 september 2015 33 / 33