Graphen - BFH-TI / Organisation

Werbung
Algorithmen & Datenstrukturen Übungen
P. Fierz / HS 2012/2013
Kapitel 5
Graphen
Aufgabe 5.1 [Gerichtete Graphen] Gegeben sei der folgende gerichtete und gewichtete
Graph
7
20
1
35
2
10
8
7
9
5
0
3
3
15
22
5
4
Abbildung 5-1: Gerichteter gewichteter Graph
a) Wieviele azyklische Pfade existieren von Knoten 0 nach Knoten 3?
b) Welches sind die Vorgänger des Knotens 1?
c) Welches sind die Nachfolger des Knotens 1?
d) Schreiben Sie alle einfachen Zyklen auf.
e) Schreiben Sie einige nicht einfache Zyklen der Länge kleiner oder gleich 7 auf. Mit der
Länge ist die Anzahl Kanten im Zyklus gemeint und nicht die Summe der Gewichte.
f) Bestimmen Sie die kürzesten Pfade vom Knoten 0 nach allen anderen Knoten des
Graphen mit Hilfe des Algorithmus von Dijkstra.
g) Bestimmen Sie alle kürzesten Pfade im Graphen mit Hilfe des Algorithmus von Floyd.
Aufgabe 5.2 [Ungerichtete Graphen] Gegeben sei der folgende ungerichtete gewichtete
Graph
a) Finden Sie alle Wege von 0 nach 3, so dass ein Knoten im Weg höchstens einmal
vorkommt.
b) Schreiben Sie alle einfachen Zyklen auf, die durch alle Knoten des Graphen gehen.
5-1
Algorithmen & Datenstrukturen Übungen
20
1
P. Fierz / HS 2012/2013
2
10
35
7
9
5
0
3
3
15
22
5
4
Abbildung 5-2: Ungerichteter gewichteter Graph
c) Schreiben Sie alle zum Knoten 0 adjazenten Knoten auf.
d) Bestimmen Sie einen minimalen aufspannenden Baum für diesen Graphen.
Aufgabe 5.3 [Graphen und Relationen]
1. Die Relation S auf den Knoten eines gerichteten Graphen sei folgendermassen definiert:
uSv dann und nur dann falls u = v oder es existiert ein Zyklus, der durch u und v geht.
Zeigen Sie, dass die Relation S eine Äquivalenzrelation ist.
2. Der Grad eines Knotens in einem ungerichteten Graphen ist die Anzahl Kanten, die von
diesem Knoten ausgehen.
Beweisen Sie mit vollständiger Induktion, dass in einem ungerichteten Graphen mit n
Knoten folgendes gilt:
X
k ∈ KnotenGrad(k) = 2 · Anzahl Kanten
Aufgabe 5.4 [Adjazenzmatrix versus Adjazenzliste] Graphen können mit Hilfe von Adjazenzlisten oder von Adjazenzmatrizen implementiert werden. Bestimmen Sie die Komplexität
der folgenden Operationen für beide Darstellungsarten.
a) Bestimmen ob eine Kante u → v von u nach v existiert.
b) Finden aller Nachfolger eines Knotens.
c) Finden aller Vorgänger eines Knotens.
d) Tiefensuche.
Aufgabe 5.5 [Implementation von Graphen] Implementieren Sie (gewichtete) Graphen
als Adjazenzmatrix und dazu eine Prozedur zum Einlesen der Knoten, Kanten und Gewichte
des Graphen. Für die Kanten und Knoten des Graphen muss eine Beschrifftung vorgesehen
werden.
Aufgabe 5.6 [Tiefensuche] Implementieren Sie die Tiefensuche sowohl rekursiv wie auch
iterativ.
Aufgabe 5.7 [Finden von Zyklen] Implementieren Sie eine Funktion, die entscheidet ob
ein Graph zyklisch ist oder nicht.
Aufgabe 5.8 [Topologisches Sortieren] Implementieren Sie den topologischen Sort für
azyklische Graphen.
Aufgabe 5.9 [Floyd] Implementieren Sie den Algorithmus von Floyd derart, dass nicht nur
5-2
Algorithmen & Datenstrukturen Übungen
P. Fierz / HS 2012/2013
die Länge des kürzesten Pfades zwischen zwei beliebigen Knoten bekannt ist, sondern auch der
Pfad selbst (alle Knoten auf dem Pfad).
Aufgabe 5.10 [Flussgraphen] Gegeben sei der folgende Flussgraph
1
0/14
0/12
2
0/10
0/8
0/5
0/9
0/5
q
s
0/3
0/7
0/10
3
4
Abbildung 5-3: Flussgraph
a) Wie gross ist die Kapazität des Schnitts X = ({q, 1, 3}, {2, 4, s}) ?
b) Finden Sie in diesem Flussgraphen einen maximalen Fluss.
c) Finden Sie in diesem Flussgraphen einen minimalen Schnitt.
Aufgabe 5.11 [Flussgraph und Kapazität] Gegeben sei ein Flussgraph N . Sie möchten
in diesem Graphen den maximalen Fluss um möglichst viel erhöhen, indem sie die Kapazität
von nur einer Kante e vergrössern.
a) Geben Sie einen Algorithmus an (in Pseudocode), der die Kante e findet. Sie können annehmen, dass die Algorithmen zum finden eines maximalen Flusses und eines minimalen
Schnittes zur Verfügung stehen.
b) Kann eine solche Kante e immer gefunden werden? Begründen Sie Ihre Antwort.
5-3
Herunterladen