Kosaraju-Sharir - Lehrstuhl für Informatik der RWTH Aachen

Werbung
Datenstrukturen und Algorithmen SS17
Übungsblatt 8 (Abgabe 28.6.2017)
Prof.aa
Dr. Ir. G. Woeginger
T. Hartmann, D. Korzeniewski, B. Tauer
Allgemeine Hinweise:
• Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung
(Tutorium) bearbeitet werden. Namen und Matrikelnummern der Studierenden sind auf jedes Blatt
der Abgabe zu schreiben. Heften bzw. tackern Sie die Blätter!
• Die Nummer der Übungsgruppe muss links oben auf das erste Blatt der Abgabe geschrieben
werden. Notieren Sie die Gruppennummer gut sichtbar, damit wir besser sortieren können.
• Die Lösungen müssen bis Mittwoch, den 28.6.2017 um 16:00 Uhr in den Übungskasten vom i1
(Erdgeschoss, Treppenhaus E1 im Informatik-Zentrum) eingeworfen werden. Alternativ können Sie die
Lösungen auch vor der Abgabefrist direkt bei Ihrer Tutorin/Ihrem Tutor abgeben.
Globalübungsaufgabe1 (Adjazenzmatrix):
Gegeben sei ein ungerichteter Graph G mit |V | = n. Die zugehörige Adjazenzmatrix hat einen Speicherbedarf
von n2 vielen Einträgen. Gibt es eine Möglichkeit, diesen Graphen auch in nur n(n−1)
Einträgen abzuspeichen
2
und trotzdem in O(1) Schritten zu entscheiden, ob zwei Knoten i und j adjazent sind?
Globalübungsaufgabe2 (Kosaraju-Sharir):
Wenden Sie Sharir’s Algorithmus aus der Vorlesung an, um die starken Zusammenhangskomponenten des
folgenden Graphen zu finden. Geben Sie das Array color und den Stack S nach jeder Schleifeniteration der
ersten und zweiten Phase (also nach Zeile 17 und nach Zeile 22 im Code auf den Folien) an, falls DFS1 bzw.
DFS2 ausgeführt wurde. Geben Sie zudem das Array scc nach jeder Schleifeniteration der zweiten Phase (also
nach Zeile 22) an, falls DFS2 ausgeführt wurde. Nehmen Sie hierbei an, dass scc initial mit Nullen gefüllt ist
und die Knoten im Graphen und in allen Adjazenzlisten aufsteigend nach ihren Schlüsselwerten sortiert sind,
also der Knoten mit Schlüssel 1 vom Algorithmus als erstes berücksichtig wird usw.
1
2
3
4
5
6
7
8
9
10
Globalübungsaufgabe3 (kritischer Pfad):
Bestimmen Sie eine topologische Sortierung unter Verwendung des in der Vorlesung vorgestellten Algorithmus für den folgenden Graphen. Die Knoten in diesem Graphen sind mit jeweils einem Schlüssel und einer
Dauer beschriftet. Im gesamten Algorithmus werden Knoten in aufsteigender alphabetischer Reihenfolge ihrer
Schlüssel berücksichtigt. Geben Sie als Ergebnis die Liste der Knotenschlüssel zusammen mit ihrem jeweiligen frühesten Endzeitpunkt (eft) in aufsteigender Reihenfolge der Topologiewerte an. Markieren Sie außerdem
1
Datenstrukturen und Algorithmen SS17
Übungsblatt 8 (Abgabe 28.6.2017)
einen kritischen Pfad, indem Sie die zugehörigen Knotenschlüssel unterstreichen, und geben Sie den gesamten
frühesten Endzeitpunkt (eft) an.
A, 1
B, 1
D, 2
E, 2
C, 3
F, 3
Globalübungsaufgabe4 (Kondensationsgraph):
a) Zeigen Sie, dass für jeden gerichteten Graphen G gilt, dass der transponierte Graph des Kondensationsgraphen von G gleich dem Kondensationsgraphen des transponierten Graphen von G ist:
(G ↓)T = (GT ) ↓
b) Entwerfen Sie einen Algorithmus, der für einen gegebenen gerichteten Graphen G = (V, E) in Laufzeit
O(|V | + |E|) den Graph G ↓ berechnet. Stellen Sie insbesondere sicher, dass es in G ↓ höchstens eine
Kante von einem Knoten v zu einem anderen Knoten w gibt (d.h. es darf keine doppelten Kanten geben).
2
Datenstrukturen und Algorithmen SS17
Übungsblatt 8 (Abgabe 28.6.2017)
Hausaufgabe5 (Terminologie Graphen + Topologische Sortierung): (2+1+2 Punkte)
a) Zeichnen Sie den folgenden Graphen:
G = {{s, v1 , v2 , v3 , v4 , t}, {(s, v1 ), (s, v3 ), (v1 , v2 ), (v1 , v4 ), (v3 , v4 ), (v2 , t), (v4 , t), (v3 , v2 )}}
b) Ist G kreis-frei?
c) Interpretieren sie nun die Pfeile als Vorgängerbezeihungen. Ist G topologisch sortierbar? Falls ja, geben
sie eine explizite bijektive Abbildung Φ : V → {0, 1, 2, 3, 4, 5} an. Ist diese eindeutig?
Hausaufgabe6 (kritischer Pfad):
(7 Punkte)
Bestimmen Sie eine topologische Sortierung unter Verwendung des in der Vorlesung vorgestellten Algorithmus für den folgenden Graphen. Die Knoten in diesem Graphen sind mit jeweils einem Schlüssel und einer
Dauer beschriftet. Im gesamten Algorithmus werden Knoten in aufsteigender alphabetischer Reihenfolge ihrer
Schlüssel berücksichtigt. Geben Sie als Ergebnis die Liste der Knotenschlüssel zusammen mit ihrem jeweiligen frühesten Endzeitpunkt (eft) in aufsteigender Reihenfolge der Topologiewerte an. Markieren Sie außerdem
einen kritischen Pfad, indem Sie die zugehörigen Knotenschlüssel unterstreichen, und geben Sie den gesamten
frühesten Endzeitpunkt (eft) an.
A, 2
B, 1
C, 2
D, 1
E, 2
F, 3
G, 3
H, 2
I, 3
J, 1
K, 1
L, 2
Hausaufgabe7 (CC- Sharir):
(2 Punkte)
Wenden Sie Sharir’s Algorithmus aus der Vorlesung an, um die starken Zusammenhangskomponenten des
folgenden Graphen zu finden. Geben Sie das Array color und den Stack S nach jeder Schleifeniteration der
ersten und zweiten Phase (also nach Zeile 17 und nach Zeile 22 im Code auf den Folien) an, falls DFS1 bzw.
DFS2 ausgeführt wurde. Geben Sie zudem das Array scc nach jeder Schleifeniteration der zweiten Phase (also
nach Zeile 22) an, falls DFS2 ausgeführt wurde. Nehmen Sie hierbei an, dass scc initial mit Nullen gefüllt ist
und die Knoten im Graphen und in allen Adjazenzlisten aufsteigend nach ihren Schlüsselwerten sortiert sind,
also der Knoten mit Schlüssel 1 vom Algorithmus als erstes berücksichtig wird usw.
3
Datenstrukturen und Algorithmen SS17
Übungsblatt 8 (Abgabe 28.6.2017)
1
2
3
4
5
6
7
8
9
10
11
12
13
Hausaufgabe8 (Eulersch):
(2+1+2 Punkte)
a) Betrachten Sie die Graphen G1 , G2 , G3 und G4 aus Abbildung 1. Welche der Graphen Gi ist eulersch
(d.h. erfüllt das Theorem von Euler aus der Vorlesung)?
q
y
r
w
w
p
r
z
x
y
x
Graph G1
q
w
z
Graph G2
y
q
r
y
r
x
z
z
x
Graph G3
w
Graph G4
Abbildung 1: Auswahl an Graphen für Aufgabenteil (a)
b) Geben sie, falls möglich, jeweils eine Eulerkreis an.
c) Ein (ungerichteter zusammenhängender) Graph enthält genau dann einen Eulerweg (Eulerpfad), wenn
zwei oder keiner seiner Knoten ungeraden Knotengrad besitzen. Geben Sie, falls möglich, jeweils einen
Eulerweg an.
4
Herunterladen