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