De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Minimum Spanning Tree. Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen.

Verwante presentaties


Presentatie over: "Minimum Spanning Tree. Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen."— Transcript van de presentatie:

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?

5

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

16

17

18

19

20

21

22

23

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

51

52

53

54

55

56

57 Is de MST uniek?

58

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

62

63 Prim VS Kruskal PrimKruskal DatastructuurPriority QueueUnion-Find Looptijd Extra ruimte

64 Conclusie


Download ppt "Minimum Spanning Tree. Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen."

Verwante presentaties


Ads door Google