Übung 1

Werbung
Übungsblatt1
VU 186.145 Algorithmen auf Graphen
WS 2004/2005
Aufgabe 1
Das “Survivable Network Design Problem” ist wie folgt definiert: Gegeben ist
ein zusammenhängender Graph G = (V, E) mit einer Kostenfunktion c : E → N
auf den Kanten und eine Funktion p : V → {0, 1, 2}. Gesucht ist ein zusammenhängender Teilgraph G0 der die Summe der Kosten der enthaltenen Kanten
minimiert und die folgenden Eigenschaften hat:
1. Alle Knoten v mit p(v) > 0 sind in G0 enthalten.
2. Alle Knoten v mit p(v) = 2 liegen in der gleichen Zweizusammenhangskomponente von G0 .
Entwickeln Sie eine Heuristik für das Problem. Die Heuristik sollte nur gültige
Lösungen erzeugen.
Aufgabe 2
Das “Diameter Constrained Steiner Tree Problem” unterscheidet sich vom Standard Steiner Baum Problem dadurch, dass der Durchmesser des Lösungsgraphen
beschränkt ist. Der Durchmesser eines Graphen G = (V, E) ist die maximale
Distanz zweier Knoten in G. Eine exakte Definition ist die folgende: Sei d(u, v)
die Länge des kürzesten Pfades in G der u und v verbindet. Dann ist der Durchmesser von G:
max d(u, v)
u,v∈V
Die Distanzen beziehen sich immer auf die Gewichtsfunktion auf den Kanten.
Entwickeln Sie eine Heuristik für das Problem.
Aufgabe 3
Eine Instanz des “Prize Collecting Steiner Tree Problem” besteht aus einem
Graphen G = (V, E), einer Funktion p : V → N ∪ {0} (Profite der Knoten) und
einer Funktion c : E → N (Kantenkosten). Gesucht ist ein zusammenhängender
Teilgraph von G, der die Summe der Profite der enthaltenen Knoten minus der
Kosten der enthaltenen Kanten maximiert. Dieses Problem tritt z.B. bei der
Planung von Fernwärmenetzwerken auf. Entwickeln Sie eine Heuristik für das
Problem.
1
Aufgabe 4
Eine Heuristik zur Lösung von schwierigen Problemen ist lokale Suche. Dazu
muss man einen Operator definieren, der aus einer gegebenen Lösung für das
betrachtete Problem eine neue Lösung berechnet (Move-Operator ). Der Operator sollte folgende Eigenschaften haben:
1. Er sollte randomisiert sein dh. das Ergebnis sollte von Zufallsexperimenten
(Münzwurf, würfeln . . .) abhängen.
2. Es sollte durch mehrfachen Aufruf des Operators möglich sein, von jeder
beliebigen Lösung aus jede andere Lösung zu erreichen.
Entwickeln Sie einen Move-Operator für das Steiner Baum Problem. Die erzeugten Lösungen sollen die Eigenschaft haben, dass all Steinerknoten mindestens
Grad zwei haben. Begründen Sie, warum Ihr Algorithmus die geforderten Eigenschaften hat.
Aufgabe 5
Wenn man einen genetischen Algorithmus für ein Problem entwickeln will,
benötigt man auch einen Rekombinations-Operator. Dieser erhält zwei Lösungen als Eingabe und erzeugt eine dritte Lösung aus den beiden ersten. Diese
neue Lösung sollte möglichst viele Eigenschaften der beiden Ausgangslösungen
besitzen. Beschreiben Sie einen solchen Operator für das “Prize Collecting Steiner Tree Problem” aus Aufgabe 3. Beachten Sie dabei, dass der Operator auch
dann funktionieren muss, wenn die Ausgangslösungen keine gemeinsamen Knoten besitzen. Der Operator soll randomisiert sein, dh. das Ergebnis sollte von
Zufallsexperimenten (Münzwurf, würfeln . . .) abhängen.
Aufgabe 6
Das “Prize Collecting Steiner Tree Problem” aus Aufgabe 3 ist in linearer Zeit
exakt lösbar, wenn der Eingabegraph schon ein Baum ist. Gehen Sie zur Vereinfachung davon aus, dass es einen ausgezeichneten Knoten im Eingabegraphen
gibt, der in jeder Lösung enthalten sein muss (die “Wurzel”). Geben Sie einen
Algorithmus an, der das “Prize Collecting Steiner Tree Problem” für einen Baum
mit Wurzel in linearer Zeit exakt löst.
2
Herunterladen