Einführung in minmale Spannbäume       und deren Berechnung        Johannes Diemke           Nils SommerUniversität Oldenb...
Inhalt■ Spannbäume■ Greedy Algorithmen■ Algorithmus von Kruskal■ Prims Algorithmus■ Praktische und theoretische Bedeutung■...
Spannbäume■ Spannbaum T=(V,E)■ Teilgraph eines ungerichteten  zusammenhängenden Graphen G=(V,E)■ Mit E⊂E■ T ist ein Baum (...
Spannbäume■ Kantengewichtete Graphen G=(V,E,w)■ Zuordnung einer reelen Zahl zu jeder Kante■ Gewichtungsfunktion w:E ⇒ R■ G...
Algorithmus von Kruskal■ Konstruiert einen minimalen Spannbaum  T=(V,E) aus einem zusammenhängenden,  ungerichteten, gewic...
Algorithmus von Kruskal■   Auswahlbedingung:            Führt das Einfügen einer Kante in T zu Zyklen, so        verwerfe...
Algorithmus von Kruskal■   Konkrete Implementierungen nutzen:            Priority-Queue            Merge-Find-Struktur■ ...
Prims Algorithmus■   Schritte:            Wähle beliebigen Knoten            Füge Kante hinzu, die einen neuen Knoten au...
Prims Algorithmus■   Pseudocode:public static Graph primMinSpanTree(Graph   input) {   Graph T = new Graph();   T.addNode(...
Prims Algorithmus■   Noch stark optimierbar            Datenstrukturen            Sortieralgorithmus■ In diesem Fall O(n...
Praktische und Theoretische Bedeutung■   Theorie            Lehre            Basis für komplexere Probleme■   Praxis:   ...
Resümee■ Weitgehend erforschtes Gebiet■ Forschung schon in den 50er Jahren (Bell)■ In der Praxis oft eingesetzt           ...
Fragen ?       13
Upcoming SlideShare
Loading in …5
×

Einführung in minimale Spannbäume und deren Berechnung (Vortrag)

376 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
376
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Einführung in minimale Spannbäume und deren Berechnung (Vortrag)

  1. 1. Einführung in minmale Spannbäume und deren Berechnung Johannes Diemke Nils SommerUniversität Oldenburg, FK II – Department für Informatik Vortrag im Rahmen des Proseminars 2006 1
  2. 2. Inhalt■ Spannbäume■ Greedy Algorithmen■ Algorithmus von Kruskal■ Prims Algorithmus■ Praktische und theoretische Bedeutung■ Resümee 2
  3. 3. Spannbäume■ Spannbaum T=(V,E)■ Teilgraph eines ungerichteten zusammenhängenden Graphen G=(V,E)■ Mit E⊂E■ T ist ein Baum (keine Zyklen) 3
  4. 4. Spannbäume■ Kantengewichtete Graphen G=(V,E,w)■ Zuordnung einer reelen Zahl zu jeder Kante■ Gewichtungsfunktion w:E ⇒ R■ Gewicht des Graphen G=∑e∈E w  e■ Ein Spannbaum ist minimal gdw. kein Spannbaum mit geringerem Gewicht existiert 4
  5. 5. Algorithmus von Kruskal■ Konstruiert einen minimalen Spannbaum T=(V,E) aus einem zusammenhängenden, ungerichteten, gewichteten Graphen G=(V,E)■ Funktionsweise:  T enthält genau die Knoten aus G  Setze E={}  Füge die Kanten sukzessiv in aufsteigender Reihenfolge ihres Gewichtes in Abhängigkeit einer Auswahlbedingung zu E hinzu 5
  6. 6. Algorithmus von Kruskal■ Auswahlbedingung:  Führt das Einfügen einer Kante in T zu Zyklen, so verwerfe die Kante. Ansonsten füge sie ein.■ Pseudocode: while(!isConnectedGraph(T)) { edge = getEdgeWithMinimumCost(E); deleteEdgeFromGraph(E, edge); if(!addingEdgeToGraphCreatesCycle(T, edge)) { addEdgeToGraph(T, edge) } } 6
  7. 7. Algorithmus von Kruskal■ Konkrete Implementierungen nutzen:  Priority-Queue  Merge-Find-Struktur■ Hauptaufwand durch Verwaltung der Priotry- Queue■ Insgesamt ergibt sich ein Gesamtaufwand von O(e log e) 7
  8. 8. Prims Algorithmus■ Schritte:  Wähle beliebigen Knoten  Füge Kante hinzu, die einen neuen Knoten aus dem Ausgangsgraphen mit dem neuen Graphen verbindet.  Kante zu diesem Knoten muss minimale Gewichtungen haben  Fertig wenn Kantenmenge von beiden Graphen gleich 8
  9. 9. Prims Algorithmus■ Pseudocode:public static Graph primMinSpanTree(Graph  input) { Graph T = new Graph(); T.addNode(input.getAnyNode()); while(!T.nodesEqual(input)) { Edge edges[] =  getEdgesWhichAddNewNode(input, T); edges.sortByWeight(); T.addEdgeWithNode(edges[0]); } return T;} 9
  10. 10. Prims Algorithmus■ Noch stark optimierbar  Datenstrukturen  Sortieralgorithmus■ In diesem Fall O(n²)■ Immer optimal 10
  11. 11. Praktische und Theoretische Bedeutung■ Theorie  Lehre  Basis für komplexere Probleme■ Praxis:  Netzwerke: Computer, Elektrische Netze  Routing 11
  12. 12. Resümee■ Weitgehend erforschtes Gebiet■ Forschung schon in den 50er Jahren (Bell)■ In der Praxis oft eingesetzt 12
  13. 13. Fragen ? 13

×