Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdMatthias Kuipers Laatst gewijzigd meer dan 10 jaar geleden
1
Minimum Spanning Tree
2
Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen
3
Wat is een tree/boom?
4
Hoeveel kanten heeft een boom?
6
Definitie MST
7
Voorbeeld MST
8
MST als optimaliseringsprobleem
9
Bomen bouwen 1
10
Bomen bouwen 2
11
Hoe bepaal je een MST? • Algoritmische trukendoos: – Divide & Conquer • Verdeel de graaf in twee deelgraven? • Verbind de deel-MST’s met de lichtste kant? • Fail… – Dynamisch Programmeren
12
Hoe bepaal je een MST?
13
• DP heeft naast OSS ook overlapping subproblems nodig • Het kan wél, maar… • Het probleem heeft een greedy choice property!
14
Algoritme van Prim • Bouw de boom op door steeds 1 kant toe te voegen • Kies een beginknoop • Bekijk de knopen die je in 1 stap kunt bereiken • Kies de lichtste van de uitgaande kant • Je kiest steeds de lichtste boomverlatende kant
15
Algoritme van Prim
24
Implementatie van Prim • Hoe kun je snel de lichtste kant vinden? Priority Queue! • Representatie van het resultaat? Parent Pointers
25
Pseudocode van Prim foreach(Vertex v in graph.Vertices) v.Key = ∞; root.Key = 0; PQ = new PriorityQueue(graph.Vertices); while(!PQ.Empty) u = PQ.ExtractMin(); foreach(Vertex v in u.Neighbors) if(PQ.Contains(v) && w(u,v) < v.Key) v.Parent = u; PQ.DecreaseKey(v, w(u,v));
26
Algoritme van Prim Priority Queue B: 4 H: 8
27
Algoritme van Prim Priority Queue B: 4 C: 8 H: 8
28
Algoritme van Prim Priority Queue C: 8 I: 2 F: 4 D: 7 H: 8
29
Algoritme van Prim Priority Queue I: 2 F: 4 G: 6 D: 7 H: 8 H: 7
30
Algoritme van Prim
31
Pseudocode van Prim
32
Pseudocode van Prim Dijkstra
33
Bewijs van Prim
34
Algoritme van Kruskal
35
• Bekijk de kanten van licht naar zwaar • Voeg steeds de kant toe als hij geen cykel introduceert • Cykels testen: Union-Find! Sort(edges);foreach(Vertex v) MakeSet(v); foreach(Edge e) if(FindRep(e.A) ≠ FindRep(e.B)) resultaat.Add(e); Union(e.A, e.B);
36
Algoritme van Kruskal
37
Voorbeeld Kruskal HG IC GF AB CF IG CD HI AH BC DE FE
38
Voorbeeld Kruskal HG: A B C D E F GH I IC GF AB CF IG CD HI AH BC DE FE
39
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF AB CF IG CD HI AH BC DE FE
40
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB CF IG CD HI AH BC DE FE
41
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF IG CD HI AH BC DE FE
42
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG CD HI AH BC DE FE
43
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG: niks CD HI AH BC DE FE
44
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG: niks CD: AB CDFGHI E HI AH BC DE FE
45
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG: niks CD: AB CDFGHI E HI: niks AH BC DE FE
46
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG: niks CD: AB CDFGHI E HI: niks AH: ABCDFGHI E BC DE FE
47
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG: niks CD: AB CDFGHI E HI: niks AH: ABCDFGHI E BC: niks DE FE
48
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG: niks CD: AB CDFGHI E HI: niks AH: ABCDFGHI E BC: niks DE: ABCDEFGHI FE
49
Voorbeeld Kruskal HG: A B C D E F GH I IC: A B CI D E F GH GF: A B CI D E FGH AB: AB CI D E FGH CF: AB CFGHI D E IG: niks CD: AB CDFGHI E HI: niks AH: ABCDFGHI E BC: niks DE: ABCDEFGHI FE: niks
50
Correctheid van Kruskal
57
Is de MST uniek?
59
Kroegentocht of TSP • Travelling Salesman • Bepaal een volgorde (rondtocht) om zo snel mogelijk een aantal knopen te bezoeken in een graaf. • Handelsreiziger: wil zijn product in een aantal steden verkopen, wat is de kortste route. • Is een “moeilijk” probleem: NP-compleet • Waarschijnlijk kost het exponentiële tijd om op te lossen
60
TSP-Approximatie • Met behulp van MST kunnen we TSP benaderen
61
TSP-Approximatie
63
Prim VS Kruskal PrimKruskal DatastructuurPriority QueueUnion-Find Looptijd Extra ruimte
64
Conclusie
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.