Fakultät für Informatik Professur Theoretische Informatik und Informationssicherheit Prof. Dr. Hanno Lefmann Sommersemester 2007 Theoretische Informatik II 8. Übung Aufgabe 1 (6 Punkte) In einem Graphen heißt ein geschlossener Weg Euler-Tour, wenn jede Kante des Graphen genau einmal durchlaufen wird. Ein Graph, der eine Euler-Tour enthält, heißt eulersch. a) Zeigen Sie: Ein zusammenhängender Graph ist eulersch genau dann, wenn jeder Knoten einen geraden Knotengrad hat. b) Geben Sie einen effizienten Algorithmus an, der in einem eulerschen Graphen eine Euler-Tour bestimmt. ———————————————————————————————————————— MIN-TSP sei die Optimierungsvariante von TRAVELING SALESMAN. Beim Traveling Salesman Problem mit Dreiecksungleichung (TSP4 ) ist ein vollständiger Graph G = (V, E, d) mit Kantengewichtung d: E → IN gegeben, so dass stets d({x, z}) ≤ d({x, y}) + d({y, z}) für alle Knoten x, y, z ∈ V gilt. Wir betrachten die folgenden zwei Algorithmen für MIN-TSP4 : Double Edge Algorithmus Eingabe: vollständiger Graph G = (V, E, d) mit Kantengewichtung d: E → IN, der die Dreiecksungleichung erfüllt Ausgabe: Rundreise Schritt 1: Schritt 2: Schritt 3: Schritt 4: Bestimme einen minimalen Spannbaum T für den Graphen G. Verdopple alle Kanten von T und erhalte so den eulerschen Multigraphen H. Bestimme eine Euler-Tour in H. Streiche aus dieser Tour die doppelt besuchten Knoten. STOP. Aufgabe 2 (5 Punkte) Zeigen Sie, dass der Double Edge Algorithmus Güte höchstens 2 hat. Nearest Insertion Algorithmus Eingabe: vollständiger Graph G = (V, E, d) mit Kantengewichtung d: E → IN und |V | = n, der die Dreiecksungleichung erfüllt Ausgabe: Rundreise Schritt 1: Schritt 2: Schritt 3: Starte mit einem beliebigen Knoten, etwa v1 und setze k := 1, T1 := (v1 ). Sei Tk = (v1 , v2 , . . . , vk , v1 ) die aktuelle (Teil)Rundreise mit k Knoten. Wähle einen Knoten vk+1 , der nicht zu Tk gehört, und einen Knoten vi in Tk so, dass d({vi , vk+1 }) minimal ist. Streiche eine der Kanten von Tk , die zu vi inzident ist und verbinde ihre Endknoten mit vk+1 , um eine (Teil)Rundreise Tk+1 zu erhalten. Setze k := k + 1. Ist k < n gehe zu Schritt 2, andernfalls STOP. Aufgabe 3 (5 Punkte) Zeigen Sie, dass der Nearest Insertion Algorithmus Güte höchstens 2 hat.