Fachbereich IV - Abteilung Informatik Algorithmen und Datenstrukturen Universität Trier Daniel Schmitt Tel.: (0651)201-3272 5. Übung: Softwarepraktikum C++ Sommersemester 2007 16. Mai 2007 Abgabe per Email bis Mittwoch, 23. Mai 2007 Aufgabe 5.1: (Punkte 8) Visualisierung MST: Konstruieren Sie mit GraphWin einen ungerichteten (bidirekten), (positiv) gewichteten und zusammenhaengenden Graphen G = (V, E). Berechnen und visualisieren Sie den Minimum Spanning Tree T (G) mit dem Algorithmus von Prim: • Waehlen Sie einen Knoten als Startbaum T. • Verwalten Sie die Kanten adjazent zu T, sortiert nach Gewichtung, in Liste L. • Solange nicht alle Knoten im Baum enthalten sind: – Waehlen Sie die minimalste Kante, die einen neuen Knoten K zu T hinzufuegt. – Ordnen Sie die Kanten von K in L ein. Hinweise: • Benutzen Sie die Dateien auf der Homepage. • Benutzen Sie die Befehl Edit->Make->Bidirected von GraphWin oder die Funktionen G.make bidirected() und G.make map() (siehe Code), um sicherzustellen, dass fuer jedes Edge ein reversal Edge definiert ist. • http://www.algorithmic-solutions.info/leda manual/graphwin.html. • http://www.leda-tutorial.org/en/unofficial/ch05s02s05.html. Aufgabe 5.2: (Punkte 8) Visualisierung von Baeumen: Sei T = (V, E) ein Baum mit gewichteten Kanten. Zwischen zwei beliebigen Knoten u, v ∈ V existiert ein eindeutiger Pfad. Die Laenge des Pfades ist die Summe seiner Kantengewichte. Das Diameter eines Baumes ist der laengste Pfad des Baums. Berechnen und visualisieren Sie das Diameter eines Baumes, repraesentiert durch einen bidirekten, gewichteten Graphen. Hinweise: • Benutzen Sie Breiten- oder Tiefensuche. • Waehrend der Suche, auf dem Rueckweg von den Blaettern zur Wurzel, speichern Sie die Laenge des laengsten Pfades A und des zweit- laengsten Pfades B jedes Knoten zu einem Blatt. Auserdem protokollieren Sie den jeweils naechsten Knoten auf den Pfaden A und B. • Speichern Sie den Knoten mit den in der Summe teuersten beiden Pfaden.