Prof. Dr. Johannes Blömer David Teusner 14. Dezember 2011 Abgabe: 20. Januar 2012, bis 13.00 Uhr Einführung in Berechenbarkeit, Komplexität und formale Sprachen WS 2011/2012 Heimübungszettel 11 AUFGABE 1: Wir betrachten das folgende Optimierungsproblem. Gegeben ist eine Menge von n Aufträgen für die Ausführung auf einem Supercomputer. Wir verstehen einen Auftrag als Intervall [si , ei ] mit si , ei ∈ N und si < ei für i ∈ {1, . . . , n}. Dabei ist si der Start und ei das Ende des zur Ausführung des Auftrags auf dem Supercomputer benötigten Zeitraums. Ziel ist es, möglichst viele der Aufträge zu bearbeiten. Zu beachten ist, dass der Supercomputer zu keinem Zeitpunkt mehrere Aufträge gleichzeitig bearbeiten kann. Gesucht ist also eine möglichst große Anzahl an Intervallen [si , ei ], die sich nicht untereinander schneiden. Betrachten Sie den folgenden Approximationsalgorithmus für das gerade beschriebene Problem: KiTSiK (Die Kleinen ins Töpfchen, den Schnitt ins Kröpfchen.) Eingabe: si , ei ∈ N für 1 ≤ i ≤ n und n ∈ N 1. Setze A := {1, 2, . . . , n} und R := ∅. 2. Solange A nicht leer ist, wiederhole die folgenden Schritte: i. Wähle ein j ∈ A mit (ej − sj ) ≤ (ei − si ) für alle i ∈ A. ii. Setze R := R ∪ {j} und A := A \ {i ∈ A [si , ei ] ∩ [sj , ej ] 6= ∅}. 3. Gib R aus. Die berechnete Lösung ist also eine Teilmenge von {1, . . . , n} die wir mit den ausgewählten Intervallen bzw. Aufträgen assoziieren. Der Algorithmus nimmt immer das kürzeste verbliebene Intervall und fügt es der Lösung hinzu. Danach werden von den verbliebenen Intervallen alle diejenigen gelöscht, die sich mit dem gerade zur Lösung hinzugefügten Intervall schneiden. a) Sei S eine optimale Lösung für das beschriebene Optimierungsproblem. Zeigen Sie, dass jedes Intervall aus der vom Algorithmus KiTSiK berechneten Lösung R sich mit höchstens zwei Intervallen der optimalen Lösung S schneidet. (4 Punkte) b) Zeigen Sie unter Zuhilfenahme von Aufgabenteil a), dass KiTSiK einen Approximationsfaktor von 21 besitzt. (4 Punkte) AUFGABE 2: Wir betrachten das folgende Optimierungsproblem: Gegeben ist ein ungerichteter n × m Gittergraph G = (V, E) wie in der nebenstehenden Abbildung. Desweiteren ist eine Gewichtsfunktion ω : V 7→ N gegeben, d.h. jeder Knoten v ∈ V besitzt ein positives Gewicht ω(v). Gesucht ist einePunabhängige Knotenmenge U ⊆ V deren Gesamtgewicht u∈U ω(u) möglichst groß ist. Zur Erinnerung: In einer unabhängigen Menge von Knoten existieren keine Kanten zwischen den Knoten. Ein 6 × 5 Gittergraph. Betrachten Sie den folgenden Greedy-Algorithmus für das beschriebene Problem: HeaviestFirst(G, ω) G ein ungerichteter Gittergraph G = (V, E) ω eine Gewichtsfunktion ω : V 7→ N 1: U ← ∅ 2: Solange V 6= ∅ wiederhole die Schritte 3-6: 3: Wähle u ∈ V mit ω(u) ≥ ω(v) für alle v ∈ V . 4: U ← U ∪ {u} 5: Bestimme N = {u} ∪ {v ∈ V {u, v} ∈ E}. 6: V ←V \N 7: Gib U aus. a) Sei U ⊆ V die von HeaviestFirst berechnete unabhängige Menge und W ⊆ V eine beliebige weitere unabhängige Menge. Zeigen Sie, dass für jeden Knoten v ∈ W entweder v ∈ U oder ein Knoten u ∈ U existiert mit ω(u) ≥ ω(v) und {u, v} ∈ E. b) Zeigen Sie, dass HeaviestFirst einen Approximationsfaktor von 1 4 besitzt.