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
Nächste SlideShare
Wird geladen in …5
×

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

371 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
371
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

×