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

13
1 Einführung in minmale Spannbäume und deren Berechnung Johannes Diemke Nils Sommer Universität Oldenburg, FK II – Department für Informatik Vortrag im Rahmen des Proseminars 2006

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

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

1

Einführung in minmale Spannbäume und deren Berechnung

Johannes Diemke Nils Sommer

Universität Oldenburg, FK II – Department für InformatikVortrag im Rahmen des Proseminars 2006

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

2

Inhalt

■ Spannbäume■ Greedy Algorithmen■ Algorithmus von Kruskal■ Prims Algorithmus■ Praktische und theoretische Bedeutung■ Resümee

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

3

Spannbäume

■ Spannbaum T=(V,E')■ Teilgraph eines ungerichteten

zusammenhängenden Graphen G=(V,E)■ Mit ■ T ist ein Baum (keine Zyklen)

E'⊂E

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

4

Spannbäume

■ Kantengewichtete Graphen G=(V,E,w)■ Zuordnung einer reelen Zahl zu jeder Kante■ Gewichtungsfunktion w:E ⇒ R■ Gewicht des Graphen

■ Ein Spannbaum ist minimal gdw. kein Spannbaum mit geringerem Gewicht existiert

G=∑e∈Ewe

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

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

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

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)

}

}

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

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)

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

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

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

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;

}

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

10

Prims Algorithmus

■ Noch stark optimierbar Datenstrukturen Sortieralgorithmus

■ In diesem Fall O(n²)■ Immer optimal

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

11

Praktische und Theoretische Bedeutung

■ Theorie Lehre Basis für komplexere Probleme

■ Praxis: Netzwerke: Computer, Elektrische Netze Routing

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

12

Resümee

■ Weitgehend erforschtes Gebiet■ Forschung schon in den 50er Jahren (Bell)■ In der Praxis oft eingesetzt

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

13

Fragen ?