Übungsblatt 11 - Chair 11: ALGORITHM ENGINEERING

Werbung
Fakultät für Informatik
Lehrstuhl 11 / Algorithm Engineering
Petra Mutzel
Nicola Beume, Christian Bockermann, Christian Horoba,
Ingo Schulz, Dirk Sudholt, Christine Zarges
Sommersemester 2009
DAP2 Übung – Blatt 11
Ausgabe: 25. Juni, Abgabe: 2. Juli, 14:00 Uhr, Block: D
Aufgabe 11.1 (4 Punkte)
Gegeben sei ein ungerichteter Graph G durch die Adjazenzlisten der Knoten V = {1, . . . , 8}:
1
4
2
3
2
1
4
3
4
6
1
4
8
5
3
5
4
7
6
6
5
1
3
7
5
8
8
7
4
6
1
2
(a) Zeichne den entsprechenden Graphen zu der Adjazenzliste.
(b) Gib die dazugehörige Adjazenzmatrix an.
(c) Führe eine DFS-Traversierung auf deinem gezeichneten Graphen durch und weise dabei
jedem Knoten eine gültige DFS-Nummer zu. Beginne die Traversierung beim Knoten 1.
(d) Führe eine BFS-Traversierung auf deinem gezeichneten Graphen durch und weise dabei
jedem Knoten eine gültige BFS-Nummer zu. Beginne die Traversierung bei Knoten 1.
Hinweis: Die BFS-/DFS-Nummern für die Knoten sollen hier in aufsteigender Reihenfolge (beginnend bei 0) für jeden Knoten vergeben werden, sobald dieser zum ersten Mal besucht wird.
Auf diese Weise werden die Knoten also in der Reihenfolge der Traversierung durchnummeriert.
Für die Lösungen zu (a), (c) und (d) gibt es am Ende dieses Übungsblatt Vordrucke.
Trage in die Vordrucke zur Lösung von (c) und (d) jeweils den entstehenden DFS- bzw.
BFS-Baum ein.
Aufgabe 11.2 (4 Punkte)
Gegeben sei der folgende, gerichtete Graph G:
g
i
b
p
n
d
l
s
r
e
j
o
t
u
k
Bestimme unter Verwendung des Algorithmus aus Listing 6.5 (Seite 167 im Skript) eine topologische Sortierung der Knoten von G. Gib dabei für jeden Durchlauf der while-Schleife (Zeilen
8-13) den Inhalt der Queue Q, sowie den ausgegebenen Knoten v an.
Wenn du zu einem Zeitpunkt aus mehreren Knoten einen wählen musst, wähle den, der in der
alphabetischen Reihenfolge zuerst kommt.
Aufgabe 11.3 (4 Punkte)
Gegeben sei ein ungerichteter Graph G = (V, E). Gib einen Algorithmus in Pseudocode an, der
prüft, ob G einen Kreis ungerader Länge enthält. Beschreibe das Vorgehen deines Algorithmus
und begründe seine Korrektheit.
Tipp: Überlege, wie mit Hilfe einer abwechselnden Färbung traversierter Knoten Kreise mit
ungerader Länge von Kreisen mit gerader Länge unterschieden werden können.
Präsenzaufgabe 11.4
Sei G = (V, E) ein Graph. Die Taillenweite τ (G) ist die Länge eines kürzesten Kreises in G, bzw.
∞, falls G azyklisch ist. (Beachte, dass ein Kreis mindestens 3 verschiedene Knoten enthält.)
Gib einen Algorithmus in Pseudocode an, der die Taillenweite eines Graphen G berechnet. Gib
zusätzlich die Laufzeit deines Algorithmus an.
Dieses Blatt könnt ihr zur Lösung der Aufgabe (1) verwenden.
Der Graph G:
1
2
6
3
4
5
8
7
DFS-Durchlauf:
1
2
6
3
4
5
8
7
BFS-Durchlauf:
1
2
6
3
4
5
8
7
http://ls11-www.cs.tu-dortmund.de/people/beume/dap2-09/dap2u.jsp
Herunterladen