Einführung in Berechenbarkeit, Komplexität und formale Sprachen

Werbung
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.
Herunterladen