Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel Carsten Gutwenger, André Gronemeier, Anna-Lena Lamprecht, Tobias Marschall, Hubert Wagner, Hoi-Ming Wong Sommersemester 2008 DAP2 Übung – Blatt 11 Ausgabe: 19. Juni — Abgabe: 26. Juni Globalübung: Fr. 5. Juli Aufgabe 11.1 (4 Punkte) Gegeben ist die folgende Adjazenzliste eines ungerichteten Multigraphen: 1 2 3 4 5 6 7 8 →4→2→4→3→6 →1→4 →4→6→1 →8→5→3→1→2→1 →4→7→6 →5→1→3 →5→8 →7→4 1. Zeichne den entsprechenden Graphen zu der Adjazenzliste. 2. Gib die dazugehörige Adjazenzmatrix an. 3. DFS-Nummerierung: Beim Traversieren eines Graphen mit DFS-Visit wird noch zusätzlich eine DFS-Nummer für jeden Knoten aufsteigend vergeben. Die Nummerierung beginnt bei 0 und wird dann vergeben, wenn ein Knoten zum ersten Mal von DFS-Visit besucht wird. Führe eine DFS-Traversierung an deinem gezeichneten Graphen durch und weise dabei jedem Knoten eine gültige DFS-Nummer zu. Beginne die DFS-Traversierung bei Knoten 1. Beachte, dass die Reihenfolge der zu besuchenden Knoten durch die obige Adjazenzliste bestimmt wird. 4. BFS-Nummerierung: Die BFS-Nummer wird, wie die DFS-Nummer, aufsteigend für jeden Knoten vergeben. Die Nummerierung beginnt bei 0 und wird dann vergeben, wenn ein Knoten zum ersten Mal von BFS besucht wird. Führe eine BFS-Traversierung an deinem gezeichneten Graphen durch und weise dabei jeder Knoten eine gültige BFS-Nummer zu. Beginne die BFS-Traversierung bei Knoten 1. Beachte, dass die Reihenfolge der zu besuchenden Knoten durch die obige Adjazenzliste bestimmt wird. Aufgabe 11.2 (2 Punkte) Was ist die maximal mögliche Dichte eines ungerichteten und eines gerichteten Graphen ohne Mehrfachkanten (Multikanten) und Schleifen, wenn beide Graphen jeweils n Knoten besitzen? Aufgabe 11.3 (4 Punkte) Gib eine iterative Version von DFS-Visit in Pseudo-Code an. Verwende dabei einen Stack als Hilfsdatenstruktur. Aufgabe 11.4 (2 Punkte) Gegeben sei ein ungerichteter, zusammenhängender Graph G = (V, E) und ein Knoten s ∈ V . Zeige oder widerlege: Wird DF S − V isit(s) aufgerufen, dann ist der DFS-Baum mit der Wurzel s eindeutig. Aufgabe 11.5 (2 Punkte) Erkläre, wie es passieren kann, dass ein Knoten v eines gerichteten Graphen in einem Tiefensuchbaum landet, der nur v enthält, obwohl v sowohl eintretende als auch austretende Kanten hat. Gib dazu ein Beispiel, wo dies der Fall ist. Aufgabe 11.6 (2 Punkte) Man kann BFS auch auf gerichteten Graphen durchführen, wobei man Kanten nur in Vorwärtsrichtung abläuft. Der einem gerichteten Graph zugrundeliegende ungerichtete Graph entsteht, indem man die Kantenrichtung ignoriert. 1. Erweitere den Pseudo-Code in Listing 6.1 so, dass BFS einen gerichteten Graphen, dessen zugrundeliegende Graph zusammenhängend ist, durchläuft. 2. Wenn wir BFS zunächst auf einem gerichteten, zusammenhängenden Graphen G aufrufen und dann auf dem zugrundeliegenden ungerichteten Graphen von G, was ist dann der maximale Höhenunterschied zwischen den BFS-Bäume im gerichteten und der BFS-Baum im ungerichteten Fall? Gib einen Beispiel für deine Überlegung. Aufgabe 11.7 (4 Punkte) Der Durchmesser eines ungewichteten, azyklischen Graphen G = (V, A) ist der größte graphentheoretische Abstand von zwei Knoten in G. Gib einen Algorithmus zur Berechnung des Durchmessers von G mit Laufzeit O(|V |) an. Begründe, warum dein Algorithmus die angegebene Laufzeit besitzt. Tipp: Wurzele G erst an einem Knoten v und unterscheide die beiden folgende Fälle: • v ist ein Knoten des längsten Weges. • v ist kein Knoten des längsten Weges. Der längste Weg zwischen zwei Blättern ist der Durchmesser von G. Hinweis: Es ist nicht notwendig, den Algorithmus in Pseudo-Code anzugeben. Bonusaufgabe 11.8 (4 Bonuspunkte) Eine universelle Senke eines gerichteten Graphen (ohne Multikanten und Schleifen) G = (V, E) ist ein Knoten mit n − 1 eingehenden und keine ausgehenden Kanten. Skizziere einen Algorithmus, der bei einer gegebenen Adjazenzmatrix von G in Zeit O(|V |) feststellen kann, ob der Graph G eine universelle Senke enthält. Begründe, warum dein Algorithmus die vorgegebene Lauftzeit besitzt. Powodzenia! – das DAP2-Team