11. Übungsblatt - Universität Konstanz

Werbung
Algorithmen und Datenstrukturen
Universität Konstanz
Fachbereich Informatik & Informationswissenschaft
WS 2013/2014
Prof. Dr. Ulrik Brandes / Martin Mader / Mark Ortmann / Dr. Barbara Pampel
11. Übungsblatt
Ausgabe: 30. Januar 2014 Abgabe: 6. Februar 2014, 9:00 Uhr
Die Bearbeitung in Zweiergruppen ist ausdrücklich erwünscht.
Aufgabe 1: Topologische Sortierung
10 Punkte
Eine topologische Sortierung in einem gerichteten azyklischen Graphen
(DAG, directed acyclic graph) G = (V, E) mit |V | = n ist eine Nummerierung der Knoten, also eine bijektive Abbildung f : V → {1, . . . , n}, so
dass für alle Kanten (v, w) ∈ E gilt: f (v) < f (w). Anders ausgedrückt zeigen alle Kanten nach rechts, wenn die Knoten auf einer Linie in Reihenfolge
der topologischen Sortierung angeordnet werden.
(a) Ein zerstreuter Professor kann sich nie merken, in welcher Reihenfolge
er sich anziehen soll. Er hat zehn Kleidungsstücke: Unterhose, Socken,
Uhr, Gürtel, Jackett, Hemd, Unterhemd, Krawatte, Schuhe, Hose.
Stellen Sie einen DAG auf; dieser hat die Kleidungsstücke als Knoten,
und gerichtete Kanten zwischen zwei Kleidungsstücken, wenn man das
eine vor dem anderen anziehen sollte, z. B. Unterhemd → Hemd.
(b) Helfen Sie dem Professor beim Anziehen, indem Sie eine topologische
Sortierung dieses Graphen angeben.
(c) Eine Möglichkeit, einen DAG topologisch zu sortieren, ist es, wiederholt einen Knoten mit Eingangsgrad 0 (eine sogenannte Quelle) zu
ermitteln, diesen auszugeben, und ihn anschließend inklusive aller seiner ausgehenden Kanten aus dem Graphen zu löschen.
Erläutern Sie, was sich für die Laufzeit dieses Verfahrens ergibt, wenn
der DAG als
i. Adjazenzmatrix
ii. Adjazenzlisten (pro Knoten je eine lineare Liste bezüglich eingehender und ausgehender Kanten)
repräsentiert ist.
[Bitte wenden]
(d) Verbessern Sie das Verfahren aus Teilaufgabe (c) so, dass die Laufzeit in
O(|V | + |E|) ist. Welche Repräsentation muss gewählt werden? Geben
Sie Pseudocode an und begründen Sie Korrektheit und Laufzeit.
(e) Eine topologische Sortierung eines DAGs kann auch über eine modifizierte Tiefensuche in O(|V | + |E|) bestimmt werden. Geben Sie die
Modifikationen an und begründen Sie die Korrektheit.
Aufgabe 2: Kürzeste Wege, Radius und Durchmesser
5 Punkte
Sei G = (V, E) ein zusammenhängender, schlichter Graph mit uniformer
Kantenbewertung.
(a) Zeigen Sie, dass die Dreiecksungleichung für kürzeste Wege gilt, also
dG (u, w) ≤ dG (u, v) + dG (v, w)
für beliebige u, v, w ∈ V .
(b) Der Durchmesser eines Graphen ist definiert als
diam(G) = max dG (u, v) ,
u,v∈V
und der Radius ist definiert als
rad(G) = min max dG (u, v) .
u∈V v∈V
Zeigen Sie, dass
rad(G) ≤ diam(G) ≤ 2 · rad(G) .
(c) Geben Sie je eine Familie von Graphen an, für die gilt:
i. diam(G) = rad(G)
ii. diam(G) = 2 · rad(G)
Aufgabe 3: Dijkstra
5 Punkte
Bestimmen Sie für folgenden Graphen den Baum der kürzesten Wege ausgehend vom Startknoten S mit Hilfe des Algorithmus von Dijkstra, und
bestimmen Sie die Distanzen aller Knoten von S. Dokumentieren Sie hierbei
Ihre Schritte und geben Sie für jeden Schleifendurchlauf der while-Schleife
an:
[Bitte wenden]
• welcher Knoten aus Q entnommen wird
• wie sich ggf. Distanzschätzungen und parent-Zeiger verändern.
S
C
10
5
17
9
13
6
F
B
A
4
8
1
E
2
4
D
Herunterladen