Ü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