Files
creator/uni/aak (Copy)/alle_hausaufgaben.txt
2026-06-18 14:30:21 +02:00

817 lines
40 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Algorithmen und Komplexität
Prof. Dr. K. Jansen, B. Schumacher, C. Wambsganz
09.06.2025
Hausaufgaben zur Vorlesung »Analyse von Algorithmen und
Komplexität«
Blatt 9
Definition 1 (Vertex Cover (VC)). Für einen (ungerichteten) Graphen G = (V, E) ist ein Vertex
Cover eine Menge von Knoten C ⊆ V , sodass u ∈ C oder v ∈ C für alle { u, v } ∈ E gilt, also ist
für alle Kanten mindestens ein Endpunkt in C.
Für das V ERTEX C OVER Problem ist neben einem Graphen G eine Zahl k ∈ N≥0 gegeben und
es wird gefragt, ob ein Vertex Cover mit Größe (Anzahl der Knoten) höchstens k in G existiert.
Definition 2 (Feedback Vertex Set (FVS)). Für einen gerichteten Graphen G = (V, E) ist ein
Feedback Vertex Set eine Menge von Knoten X ⊆ V , sodass G \ X kreisfrei ist.
Für das F EEDBACK V ERTEX S ET Problem ist neben einem Graphen G eine Zahl k ∈ N≥0 gege-
ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens
k in G existiert.
1 6 2
5
8 7
3
4
Abbildung 1: Beispiel Graph.
Hausaufgabe 9.1 (Nichtdeterministischer Algorithmus für VC) (5 Punkte)
1. Finden Sie ein minimales Vertex Cover in Abbildung 1. Für ein Vertex Cover ist die
Orientierung der Kanten nicht relevant.
2. Zeigen Sie V ERTEX C OVER ∈ NP, indem Sie einen nichtdeterministischen Algorithmus
angeben, der V ERTEX C OVER in Polynomialzeit löst. Begründen Sie die Korrektheit und
die Laufzeit von Ihrem Algorithmus.
Lösung. 1. Ein minimales Vertex Cover ist zum Beispiel { 3, 5, 6, 7, 8 }.
2. Unser nichtdeterministischer Algorithmus geht wie folgt vor: Für jeden Knoten wird
nichtdeterministisch entschieden, ob dieser im Vertex Cover sein soll. Nachdem dies für
alle Knoten entschieden wurde, wird überprüft, ob nicht mehr als k Knoten gewählt wur-
den und ob für jede Kante mindestens ein Endpunkt im Vertex Cover liegt.
Existiert ein Vertex Cover im Graphen, existiert auch eine Reihe von nichtdeterministi-
schen Entscheidungen, die diese Teilmenge von Knoten auswählt. Diese Teilmenge wird
dann auch von dem Algorithmus akzeptiert. Damit ist der Algorithmus korrekt.
Beide diese Schritte können naiv in Polynomialzeit erledigt werden, also löst dieser Al-
gorithmus das Vertex Cover Problem in Polynomialzeit.
Bewertung 1 Punkt für das Beispiel und 4 Punkte für den Algorithmus, dabei 2 Punkte für
die Beschreibung und jeweils 1 Punkt für Korrektheit und Laufzeit.
Hausaufgabe 9.2 (Polynomieller Verifizierer für FVS) (5 Punkte)
1. Finden Sie ein minimales Feedback Vertex Set in Abbildung 1.
2. Zeigen Sie F EEDBACK V ERTEX S ET ∈ NP, indem Sie einen polynomiellen Verifizierer
für F EEDBACK V ERTEX S ET angeben. Begründen Sie die Korrektheit und die Laufzeit
von Ihrem Verifizierer.
Lösung. 1. Ein minimales FVS ist zum Beispiel { 5, 6 }.
2. Das Zertifikat hat die Form einer Teilmenge X ⊆ V , die beschreibt, welche Knoten das
Feedback Vertex Set bilden sollen. Zum Beispiel über ein Bit pro Knoten. Nun wird
überprüft, ob |X| ≤ k gilt und ob G \ X azyklisch ist.
Hat der Graph ein Feedback Vertex Set von Größe maximal k, gibt es ein Zertifikat, wel-
ches dieses beschreibt. Dieses Zertifikat wird dann von unserem Verifizierer akzeptiert,
damit ist der Verifizierer korrekt.
Die Größe von X zu überprüfen ist naiv in Polynomialzeit möglich. Für den zweiten Test
bietet sich der Algorithmus zur topologischen Sortierung aus der Vorlesung an, welcher in
Polynomialzeit eine topologische Sortierung findet, wenn der gegebene Graph azyklisch
ist. Insgesamt ist dieser Verifizierer korrekt und auch ein polynomieller Verifizierer.
Bewertung 1 Punkt für das Beispiel und 4 Punkte für den Verifizierer, dabei 2 Punkte für die
Beschreibung und jeweils 1 Punkt für Korrektheit und Laufzeit.
Abgabe: 16.06.2025, 10:00 in Moodle bitte beachten Sie die Informationen zum Abgabefor-
mat im Moodlekurs.
Hausaufgabe 9
Marek Lenczewski
Matrikelnummer: 1025252
22. Juni 2025
Hausaufgabe 9.1
Teil 1
Ein minimales Vertex Cover ist C = {2, 7, 5, 4, 1}.
Die Minimale Knotenanzahl ist 5.
Teil 2
Der Algorithmus arbeitet wie folgt:
• Zuerst wird für jeden Knoten v ∈ V nichtdeterministisch entschieden, ob dieser in das
Vertex Cover aufgenommen wird. Dabei wird drauf geachtet, dass die Anzahl k nicht
übersteigt.
• Danach wird geprüft, ob für jede Kante {u, v} ∈ E entweder v ∈ C oder u ∈ C oder beides
zutrifft.
• Falls dies für alle Kanten gilt, akzeptieren wir. Andernfalls lehnen wir ab.
Existiert ein Vertex Cover der Größe höchstens k, dann gibt es auch eine, nichtdeterminis-
tisch ausgewählte, Knotenmenge, die dazu passt. Von dieser werden alle Kanten abgedeckt und
der Algorithmus akzeptiert. Falls es kein Vertex Cover gibt, dann lehnt der Algorithmus ab.
Die Auswahl der Knoten und die Prüfung der Kanten läuft in polynomieller Zeit, also ist dies
ein polynomieller nichtdeterministischer Algorithmus, der VERTEX COVER löst und damit ist
V ERT EXCOV ER ∈ N P .
Hausaufgabe 9.2
Teil 1
Ein minimales Feedback Vertex Set ist X = {1, 5}
Teil 2
Der Verifizierer arbeitet wie folgt:
• Es wird eine Teilmenge X ⊆ V übergeben, die das Feedback Vertex Set darstellen soll.
• Dann wird geprüft, ob |X| ≤ k gilt und es wird abgelehnt, falls es nicht gilt.
• Danach wird ein Graph G = G \ X konstruiert, in dem alle Knoten aus X und alle an X
angrenzenden Kanten entfernt wurden.
1
• Auf dem Graphen G wird eine Tiefensuche durchgeführt, dabei werden Knoten während
der Bearbeitung grau markiert und beim Backtracking schwarz.
• Wird eine Kante zu einem grauen Knoten entdeckt, dann wird abgelehnt, da dies einen
Kreis anzeigt.
• Falls die Tiefensuche den gesamten Graphen durchläuft ohne abzulehnen, dann wird ak-
zeptiert.
Existiert ein Feedback Vertex Set der Größe höchstens k, dann gibt es auch ein Zertifikat, das
genau diese Knotenmenge beschreibt. Alle Teilmengen, die die Tiefensuche überstehen, werden
von dem Verifizierer akzeptiert und sonst abgelehnt.
Die Prüfung der übergebenen Teilmenge und die Konstruktion des Graphen laufen in polyno-
mieller Zeit. Ebenfalls die Tiefensuche läuft in polynomieller Zeit, somit ist auch der Verifizierer
polynomiell und verifiziert die Lösung für das FEEDBACK VERTEX SET in polynomieller
Zeit. Also gilt F EEDBACKV ERT EXSET ∈ N P .
2
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Algorithmen und Komplexität
Prof. Dr. K. Jansen, B. Schumacher, C. Wambsganz
16.06.2025
Hausaufgaben zur Vorlesung »Analyse von Algorithmen und
Komplexität«
Blatt 10
Definition 1 (Feedback Vertex Set (FVS)). Für einen gerichteten Graphen G = (V, E) ist ein
Feedback Vertex Set eine Menge von Knoten X ⊆ V , sodass G \ X kreisfrei ist.
Für das F EEDBACK V ERTEX S ET Problem ist neben einem Graphen G eine Zahl k ∈ N≥0 gege-
ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens
k in G existiert.
Hausaufgabe 10.1 (F EEDBACK V ERTEX S ET ist NP-vollständig) (5 Punkte)
Zeigen Sie, dass F EEDBACK V ERTEX S ET NP-vollständig ist.
Hinweis: Reduzieren Sie V ERTEX C OVER auf F EEDBACK V ERTEX S ET. Wenn ein Vertex Cover
aus einem Graphen entfernt wird, hat dieser keine Kanten mehr.
Lösung. F EEDBACK V ERTEX S ET ∈ NP ist bekannt aus der letzten Hausaufgabe. Nun zeigen
wir eine Reduktion von V ERTEX C OVER auf F EEDBACK V ERTEX S ET. Betrachte die folgende
Reduktion:
Für eine gegebene V ERTEX C OVER Instanz (G = (V, E), k) erzeuge den Graphen G = (V, E )
mit E := { (u, v), (v, u) | {u, v} ∈ E }. Gebe (G , k) als F EEDBACK V ERTEX S ET Instanz aus.
Korrektheit:
⇒ (Falls (G, k) eine Ja-Instanz von V ERTEX C OVER ist, dann ist (G , k) eine Ja-Instanz von
F EEDBACK V ERTEX S ET.):
Sei C ⊆ V ein Vertex Cover mit Größe kleiner oder gleich k. Dann enthält G \C keine Kanten.
Damit hat G \C ebenfalls keine Kanten und somit keine Kreise.
⇐ (Falls (G , k) eine Ja-Instanz von F EEDBACK V ERTEX S ET ist, dann ist (G, k) eine Ja-Instanz
von V ERTEX C OVER.):
Sei X ⊆ V ein Feedback Vertex Set mit Größe kleiner oder gleich k. Dann ist X ein Vertex
Cover in G, da ansonsten eine Kante {u, v} ∈ E existiert, für die u ∈
/ X ∧v ∈
/ X gilt. Damit wäre
aber (u, v, u) ein Kreis in G und X somit kein Feedback Vertex Set.
Laufzeit: Das Erzeugen der Menge E geht in Zeit O(|E|). Insgesamt ist die Reduktion dem-
nach in Laufzeit O(|E|), also in polynomieller Laufzeit, durchführbar.
Also existiert eine polynomielle Reduktion von V ERTEX C OVER auf F EEDBACK V ERTEX S ET.
Da V ERTEX C OVER nach den aktuellen Präsenzaufgaben NP-vollständig ist und
F EEDBACK V ERTEX S ET ∈ NP gilt, ist somit F EEDBACK V ERTEX S ET NP-vollständig.
Bewertung 2 Punkte für die Konstruktion, 1 Punkt für den 1. Fall, 1 Punkt für den 2. Fall,
0.5 Punkte für die Laufzeit, 0.5 Punkte für die Beweisführung im Ganzen
Hausaufgabe 10.2 (Turingmaschinen) (5 Punkte)
Entwerfen Sie eine Turingmaschine für die Sprache L = { w ∈ Σ∗ | w ist ein Palindrom } über
einem gegebenen Alphabet Σ und geben Sie die Laufzeit Ihrer Turingmaschine an. Begründen
Sie dabei, warum Ihre Turingmaschine korrekt ist und die angegebene Laufzeit hat.
Lösung. Die Turingmaschine sieht folgendermaßen aus:
(1) Falls kein Wort auf dem Band steht, akzeptiere.
(2) Falls nur ein Buchstabe auf dem Band steht, akzeptiere.
(3) Lese den ersten Buchstaben und bewege danach den Kopf zum letzten Buchstaben. Falls
die beiden Buchstaben verschieden sind, verwerfe. Ansonsten ersetze beide Buchstaben
durch ein neues Symbol x. Ersetze dafür zuerst den letzten Buchstaben und bewege dann
den Kopf zum ersten Buchstaben.
(4) Gehe zu Schritt (1).
Korrektheit: Die Turingmaschine vergleicht immer den ersten und den letzten Buchstaben.
Wenn die Buchstaben nicht gleich sind, ist das Wort kein Palindrom und es wird verworfen.
Ansonsten werden die Buchstaben rausgestrichen (siehe Schritt (3)). Diese Prozedur wird so-
lange wiederholt, bis man in der Mitte des Wortes angekommen ist und entweder nur noch ein
Buchstabe oder kein Buchstabe vorhanden ist. In beiden Fällen ist das Wort ein Palindrom und
es wird akzeptiert (siehe Schritte (1) und (2)).
Laufzeit: Die Schritte (1) bis (3) benötigen jeweils eine Laufzeit von O(n), wobei n hier die
Länge der Eingabe bezeichnet. Da in jedem Durchlauf der Schritte (1) bis (3) zwei Buchstaben
raus gestrichen werden oder das Wort akzeptiert oder verworfen wird, gibt es maximal ⌊n/2⌋
Durchläufe, bis nur noch ein oder kein Buchstabe auf dem Band stehen und somit in den Schrit-
ten (1) oder (2) akzeptiert wird. Damit ergibt sich insgesamt eine Laufzeit von O(n2 ).
Bewertung 2 Punkte für die Turingmaschine, 1 Punkt für die Korrektheit und 2 Punkte für
die Laufzeit: 1 Punkt Angabe, 1 Punkt Begründung
Abgabe: 23.06.2025, 10:00 in Moodle bitte beachten Sie die Informationen zum Abgabefor-
mat im Moodlekurs.
Hausaufgabe 10
Marek Lenczewski
Matrikelnummer: 1025252
22. Juni 2025
Hausaufgabe 10.1
Teil 1: FeedbackVertexSet ∈ NP
Zuerst brauchen wir einen polynomiellen Verifizierer, um zu zeigen dass FeedbackVertexSet
∈ NP.
Der Verifizierer bekommt einen Graphen G und eine Teilmenge X, dieser arbeitet wie folgt:
• Prüfe, ob |X| ≤ k, sonst ablehnen
• Den Graphen G = G \ X konstruieren
• Tiefensuche auf G durchführen, dabei werden Knoten vom aktuellen Pfad als grau mar-
kiert und nach vollständiger Bearbeitung als schwarz. Wird eine Kante zu einem grauen
Knoten gefunden, zeigt dies einen Kreis an und wir lehnen ab
• Akzeptieren, wenn die Tiefensuche nichts findet
Die Schritte 1-4 laufen in polynomieller Zeit, somit läuft der Verifizierer in polynomieller
Zeit. Damit ist F eedbackV ertexSet ∈ N P .
Teil 2: FeedbackVertexSet ist NP-schwer
Jetzt brauchen wir eine Reduktion von VertexCover auf FeedbackVertexSet, um zu zeigen,
dass F eedbackV ertexSet N P Schwer ist.
Konstruktion: Sei dafür ein VertexCover gegeben mit einem Graphen G und einer Zahl k.
Aus G wird ein G , wobei jede ungerichtete Kante {u, v} ∈ E durch zwei gerichteten Kanten
(u, v) und (v, u) zu E ersetzt wird. Das k wird einfach übernommen k = k .
Beweis VertexCover nach FeedbackVertexSet:
• Sei C ein VertexCover von G mit |C| ≤ k
• Da C ein VertexCover ist, wird jede Kante mit C verbunden
• Wenn C entfernt wird, dann hat G \ C keine Kanten mehr
• Dann hat auch G \ C keine Kanten und ist somit Kreisfrei
• Damit ist C ein FeedbackVertexSet für G mit |C| ≤ k
Beweis FeedbackVertexSet nach VertexCover:
1
• Sei X ein FeedbackVertexSet von G mit |X| ≤ k
• Dann ist G \ X kreisfrei
• Angenommen X wäre kein VertexCover von G, dann gäbe es eine Kante {u, v} ∈ E mit
u, v ∈
/X
• Somit wären u, v noch in G \ X vorhanden
• Die Kanten (u, v) und (v, u) würden, durch die Konstruktion, einen Kreis erzeugen
• Das ist ein Widerspruch, somit ist G \ X kreisfrei und X ist ein VertexCover
Da F eedbackV ertexSet ∈ N P und N P schwer ist, folgt dass F eedbackV ertexSet NP-
Vollständig ist. □
Hausaufgabe 10.2
Lösung. Die Turingmaschine arbeitet wie folgt:
1. Falls das Band leer ist oder nur aus Markierungen besteht, akzeptiere
2. Merke das erste unmarkierte Zeichen und ersetze es durch X
3. Laufe zum letzten unmarkierten Zeichen oder verwefe
4. Falls dieses Zeichen nicht mit dem gemerkten übereinstimmt, verwerfe
5. Ersetze es durch X und gehe zurück zum Anfang
6. Gehe zu 1
Korrektheit: Ein Wort ist genau dann ein Palindrom, wenn es sich von vorne und hin-
ten gleich liest. Dies prüft die Turingmaschine, indem sie Schrittweise die äußeren Buchstarben
verifiziert, bis nur noch einer oder keiner Vorhanden ist, dann akzeptiert ist und wenn eine Un-
stimmigkeit auftritt, dann lehnt sie ab.
Laufzeit: Die Turingmaschine hat eine Laufzeit von O(n2 ). In jedem Durchlauf macht sie
O(n) Schritte und das mit O(n) Durchläufen. □
2
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Algorithmen und Komplexität
Prof. Dr. K. Jansen, B. Schumacher, C. Wambsganz
23.06.2025
Hausaufgaben zur Vorlesung »Analyse von Algorithmen und
Komplexität«
Blatt 11
Definition 1 (Dreiecksüberdeckung eines Graphen (∆ C OVER)). Gegeben ist ein endlicher un-
gerichteter Graph G = (V, E) und eine Zahl k ∈ N. Dieser Graph hat eine Dreiecksüberdeckung,
wenn eine Menge von Knoten C∆ ⊆ V mit |C∆ | ≤ k existiert, so dass zu jedem Teilgraphen (Drei-
eck) D = (VD , ED ) ⊆ (V, E) mit |VD | = 3 und ED = { {v1 , v2 } ∈ VD ×VD | v1 ̸= v2 } von G gilt,
v ∈ C∆ für mindestens ein v ∈ VD .
Hausaufgabe 11.1 (10 Punkte)
(a) (1 Punkt) Markieren Sie im folgenden Graphen (Abbildung 1 (a)) ein V ERTEX C OVER
der Größe 5.
(b) (1 Punkt) Markieren Sie im folgenden Graphen (Abbildung 1 (b)) eine Dreiecksüberde-
ckung der Größe 5.
(c) (8 Punkte) Zeigen Sie, dass ∆ C OVER NP-vollständig ist.
(a) (b)
Abbildung 1: Beispielgraph
Lösung.
(a) (b)
Abbildung 2: Beispielgraph Lösung
(c) Wir zeigen zunächst, ∆ C OVER ∈ NP mittels eines polynomiellen Verifizierers.
Der polynomielle Verifizierer erhält als Zertifikat eine Menge von Knoten C∆ ⊆ V . Zunächst
überprüft er, ob |C∆ | ≤ k. Falls dies nicht der Fall ist, verwerfe die Instanz. Ansonsten überprüfe
für alle Teilgraphen D = (VD , ED ) ⊆ (V, E) mit |VD | = 3 und ED = { {v1 , v2 } ∈ VD ×VD | v1 ̸= v2 }
von G, ob für mindestens ein v ∈ VD auch v ∈ C∆ gilt. Falls dies gilt, akzeptiere. Ansonsten ver-
werfe.
Korrektheit: Der Verifizierer überprüft die geforderten Eigenschaften. Falls ein Graph eine Drei-
ecksüberdeckung besitzt, so existiert ein entsprechendes Zertifikat C∆ und der Verifizierer ak-
zeptiert die Instanz. Falls ein Graph keine Dreiecksüberdeckung besitzt, exisitert kein valides
entsprechendes Zertifikat C∆ und der Verifizierer verwirft die Instanz.
Laufzeit: Es gibt maximal |V |3 verschiedene Teilmengen, die ein Dreieck bilden könnten und
daher überprüft werden müssen. Die Überprüfung geht in O(|V |) Zeit. Da alle anderen Schritte
des Verifizierers in O(1) Zeit erledigt werden können, ergibt sich somit insgesamt eine Laufzeit
von O(|V |4 ), was einer polynomiellen Laufzeit entspricht.
Also gilt ∆ C OVER ∈ NP.
Nun reduzieren wir V ERTEX C OVER auf ∆ C OVER. Betrachte folgende Reduktion:
Sei I = (G = (V, E), k) eine Instanz von V ERTEX C OVER. Bilde den Graphen G = (V , E ) mit
V = V { ve | e ∈ E } und E = E { {ve , e1 }, {ve , e2 } | e = {e1 , e2 } ∈ E }. Gebe I = (G , k)
als ∆ C OVER Instanz aus.
Korrektheit:
⇒ (Falls (G, k) eine Ja-Instanz von V ERTEX C OVER ist, dann ist (G , k) eine Ja-Instanz von ∆
C OVER.):
Sei C ein Vertex Cover mit Größe kleiner oder gleich k von G. Dann ist C ebenfalls eine Drei-
ecksüberdeckung mit Größe kleiner oder gleich k. Offensichtlich gilt |C| ≤ k. Da C ein Vertex
Cover von G ist, gilt für jede Kante {u, v} ∈ E, dass u ∈ C oder v ∈ C. Für alle Teilgraphen
D = (VD , ED ) ⊆ (V, E) mit |VD | = 3 und ED = { {v1 , v2 } ∈ VD ×VD | v1 ̸= v2 } von G gilt damit
direkt, dass mindestens ein v ∈ VD auch in C enthalten ist. Der Graph G besitzt neben allen
solchen Teilgraphen in G zusätzlich solche Teilgraphen (Dreiecke), die durch die Knotenmenge
{ ve | e ∈ E } und die entsprechenden Kanten { e, {ve , e1 }, {ve , e2 } | e = {e1 , e2 } ∈ E } entste-
hen. Für diese Dreiecke gilt aber auch, dass mindestens ein Knoten, nämlich e1 oder e2 , in C
enthalten sein muss, da C ein Vertex Cover ist.
⇐ (Falls (G , k) eine Ja-Instanz von ∆ C OVER ist, dann ist (G, k) eine Ja-Instanz von V ERTEX -
C OVER.):
Sei C∆ eine Dreiecksüberdeckung von G der Größe |C∆ | ≤ k. Ohne Beschränkung der All-
gemeinheit können wir davon ausgehen, dass C∆ ⊆ V gilt: Falls für einen Knoten ve ∈ C∆ gilt,
können wir e1 zu C∆ hinzufügen und ve aus C∆ löschen. Dadurch bleibt die Überdeckungseigen-
schaft erhalten und die Menge wird höchstens kleiner. Nun gilt also C∆ ⊆ V . Die Menge C∆ ist
auch ein Vertex Cover mit Größe kleiner oder gleich k von G. Offensichtlich gilt |C∆ | ≤ k. Da für
alle Teilgraphen D = (VD , ED ) ⊆ (V , E ) mit |VD | = 3 und ED = { {v1 , v2 } ∈ VD ×VD | v1 ̸= v2 }
von G gilt, dass mindestens ein Knoten v ∈ VD ebenfalls in C∆ enthalten sein muss, gilt dies
auch für die Dreiecke {ve , e1 , e2 }. Da außerdem C∆ ⊆ V gilt, gilt e1 ∈ C∆ oder e2 ∈ C∆ für alle
Kanten e ∈ E.
Laufzeit: Das Hinzufügen von einem neuen Knoten und zwei neuen Kanten pro Kante geht in
O(|E|). Damit geht die gesamte Reduktion in O(|E|), also in polynomieller Zeit.
Also existiert eine polynomielle Reduktion von V ERTEX C OVER auf ∆ C OVER. Da V ERTEX -
C OVER NP-vollständig aus den Präsenzaufgaben bekannt ist und ∆ C OVER ∈ NP gilt, ist somit
∆ C OVER NP-vollständig.
Bewertung (a) und (b) jeweils 1 Punkt, (c) gibt 8 Punkte: 1 Punkt Angabe Verifizierer/NDTM,
0,5 Punkte Korrektheit Verifizierer/NDTM, 0,5 Punkte Laufzeit Verifizierer/NDTM, 1 Punkt
Angabe Reduktion, 3 Punkte Korrektheit (je Richtung 1,5 Punkte), 1 Punkt Laufzeit Reduktion,
1 Punkt Beweisführung
Abgabe: 30.06.2025, 10:00 in Moodle bitte beachten Sie die Informationen zum Abgabefor-
mat im Moodlekurs.
Hausaufgabe 11
Marek Lenczewski
Matrikelnummer: 1025252
28. Juni 2025
Hausaufgabe 11.1
a
1
2 3
4 5
6 10
7 9
8
b
a b c
d e
f g
h i j
k l m n
o p q
r s
t u v
c
Teil 1: ∆-Cover ∈ NP
1
Zuerst brauchen wir einen polynomiellen Verifizierer, um zu zeigen, dass ∆-Cover ∈ NP.
Der Verifizierer bekommt einen Graphen G = (V, E), Zahl k und ein Zertifikat C∆ ⊆ V und
arbeitet wie folgt:
1. Prüfe, ob |C∆ | ≤ k
2. Prüfe alle Knotentripel {a, b, c} ⊆ V , ob sie ein Dreieck bilden (also ob {a, b}, {b, c} und
{a, c} ∈ E zutrifft) und ob a, b oder c ∈ C∆
3. Ablehnen, falls ein Dreieck den test nicht besteht, sonst akzeptieren
Die Schritte 1 und 3 laufen in O(1) und Schritt zwei läuft in O(|V |3 ), das ergibt eine poly-
nomielle Laufzeit. Damit ist ∆-Cover ∈ NP.
Teil 2: ∆-Cover ist NP-schwer
Jetzt brauchen wir eine Reduktion von VertexCover auf ∆-Cover, um zu zeigen, dass
∆-Cover NP-schwer ist.
Konstruktion: Sei dafür ein VertexCover gegeben mit einem Graphen G = (V, E) und
einer Zahl k. Aus G wird G = (V , E ), wobei für jede Kante e = {u, v} ∈ E ein neuer Kno-
ten we ∈ V hinzugefügt wird und mit beiden Knoten u, v verbunden wird, sodass die Kanten
{v, we } und {u, we } zu E dazu kommen. Das k = k wird übernommen. So werden aus allen
Kanten Dreiecke.
Beweis VertexCover nach ∆-Cover
• Sei C ein VertexCover für G mit |C| ≤ k
• Zu zeigen sei, dass C auch ein ∆-Cover für G mit |C| ≤ k ist
• Da C ein VertexCover ist, gilt u ∈ C oder v ∈ C
• Jedes Dreieck in G hat die Form {u, v, we } für eine Kante e = {u, v} ∈ E
• Somit hat jedes Dreieck mindestens einen Knoten in C
• Also ist C ein ∆-Cover für G
Beweis ∆-Cover nach VertexCover
• Sei C∆ ein ∆-Cover für G mit |C∆ | ≤ k
• Jede Kante e = {u, v} ∈ E bildet durch {u, v, we } ein Dreieck in G
• Also gilt u, v oder we ∈ C∆ für alle Kanten in G
• Falls we ∈ C∆ , dann kann man we durch u oder v tauschen ohne die Eigenschaft von
∆-Cover zu verletzen, sodass u oder v ∈ C∆ für alle Kanten in G gilt
• Da sich die Knoten aus C∆ nur vertauschen gilt weiter |C| = |C∆ | ≤ k
• Weiter sind in C∆ nur noch die Knoten aus V , somit gilt u ∈ C oder v ∈ C für alle Kanten
E
• Also ist C ein VertexCover für G
Da ∆-Cover ∈ NP und NP-schwer ist, folgt dass ∆-Cover NP-vollständig ist. □
2
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Algorithmen und Komplexität
Prof. Dr. K. Jansen, B. Schumacher, C. Wambsganz
30.06.2025
Hausaufgaben zur Vorlesung »Analyse von Algorithmen und
Komplexität«
Blatt 12
Hausaufgabe 12.1 (Lower Bound: V ERTEX C OVER) (5 Punkte)
Betrachten Sie die Reduktion aus der Musterlösung zu Präsenzserie 10 von C LIQUE auf V ER -
TEX C OVER .
1. Geben Sie die Anzahl der Knoten, die Anzahl der Kanten und den Wert k für die re-
sultierende V ERTEX C OVER Instanz in Abhängigkeit von der originalen C LIQUE Instanz
an.
2. Zeigen Sie Lower Bounds für V ERTEX C OVER bezüglich Anzahl der Knoten, Anzahl
der Kanten und k basierend auf der ETH und der Reduktion aus der Musterlösung zu
Präsenzserie 10.
Lösung. 1. Sei I = (G = (V, E), k) eine Instanz von C LIQUE und I = (G = (V , E ), k ) die
aus der Reduktion resultierende Instanz von V ERTEX C OVER. Es gilt |V | = |V |, |E | =
1 2
2 |V |(|V | 1) |E| ≤ |V | und k = |V | k ≤ |V |.
2. • Angenommen es gäbe einen Algorithmus, der V ERTEX C OVER in 2o(|V |) · |I|O(1)
löst. Durch die Kombination der Reduktion von C LIQUE auf V ERTEX C OVER und
diesem Algorithmus, existiert dann auch ein 2o(|V |) ·|I|O(1) Algorithmus für C LIQUE,
da |V | = |V | nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt
somit, dass die ETH falsch ist.
Damit kann es so einen Algorithmus für V ERTEX C OVER nur geben, wenn die ETH
falsch ist.
• Angenommen es gäbe einen Algorithmus, der V ERTEX C OVER in 2o( |E |) · |I|O(1)
löst. Durch die Kombination der Reduktion von C LIQUE auf V ERTEX C OVER und
diesem Algorithmus, existiert dann auch ein 2o(|V |) ·|I|O(1) Algorithmus für C LIQUE,
da |E | ≤ |V |2 nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt
somit, dass die ETH falsch ist.
Damit kann es so einen Algorithmus für V ERTEX C OVER nur geben, wenn die ETH
falsch ist.
• Angenommen es gäbe einen Algorithmus, der V ERTEX C OVER in 2o(k ) · |I|O(1) löst.
Durch die Kombination der Reduktion von C LIQUE auf V ERTEX C OVER und die-
sem Algorithmus, existiert dann auch ein 2o(|V |) · |I|O(1) Algorithmus für C LIQUE,
da k ≤ |V | nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt
somit, dass die ETH falsch ist.
Damit kann es so einen Algorithmus für V ERTEX C OVER nur geben, wenn die ETH
falsch ist.
Bewertung 1 Punkt für den ersten Teil und 1.5 + 1.5 + 1 für den zweiten.
Definition 1 (H ITTING S ET). Bei diesem Problem ist ein Universum U, Teilmengen des Uni-
versums F1 , . . . , Fr ⊆ U und eine Zahl k ∈ N≥0 gegeben. Gibt es eine Menge S ⊆ U mit |U| ≤ k
und S ∩ Fi ̸= 0/ für alle i ∈ [r]?
Anschaulicher wird bei diesem Problem nach maximal k Elementen aus dem Universum ge-
fragt, sodass diese Elemente alle gegebenen Mengen Fi „treffen“.
Hausaufgabe 12.2 (Lower Bound: H ITTING S ET) (5 Punkte)
Betrachten Sie folgende Reduktion von 3-SAT auf H ITTING S ET.
Für eine gegebene 3-SAT Instanz I mit n Variablen x1 , . . . , xn und m Klauseln C1 , . . . ,Cm : Als
Universum wählen wir U = { x1 , x̄1 , . . . , xn , x̄n }. Für jede Variable xi fügen wir die Menge Fi :=
{ xi , x̄i } hinzu. Für jede Klausel C j fügen wir die Menge Fn+ j := C j hinzu. Wir setzen k := n
und erhalten damit eine H ITTING S ET Instanz I.
1. Geben Sie die Größe des Universums, die Anzahl der Mengen und die Zahl k aus der
resultierenden H ITTING S ET Instanz in Abhängigkeit von der Anzahl der Variablen n und
der Anzahl der Klauseln m aus der originalen 3-SAT Instanz an.
2. Beweisen Sie Lower Bounds für H ITTING S ET bezüglich Universumsgröße, Anzahl der
Mengen und der Zahl k basierend auf der obigen Reduktion und der ETH.
Lösung. 1. Für die Universumsgröße gilt |U| = 2n, für die Anzahl der Mengen gilt r =
n + m und es gilt k = n.
2. • Angenommen es gäbe einen Algorithmus, der H ITTING S ET in 2o(|U|) · |I|O(1) löst.
Durch die Kombination der Reduktion von 3-SAT auf H ITTING S ET und diesem
Algorithmus, existiert dann auch ein 2o(n) · |I|O(1) Algorithmus für 3-SAT, da |U| =
2n nach Aufgabenteil 1. Damit ist die ETH falsch.
Damit kann es so einen Algorithmus für H ITTING S ET nur geben, wenn die ETH
falsch ist.
• Angenommen es gäbe einen Algorithmus, der H ITTING S ET in 2o(r) · |I|O(1) löst.
Durch die Kombination der Reduktion von 3-SAT auf H ITTING S ET und diesem
Algorithmus, existiert dann auch ein 2o(m) · |I|O(1) Algorithmus für 3-SAT, da r =
n + m nach Aufgabenteil 1 und n ≤ 3m für 3-SAT gilt. Aus dem Sparsification
Lemma folgt damit, dass die ETH falsch ist.
Damit kann es so einen Algorithmus für H ITTING S ET nur geben, wenn die ETH
falsch ist.
• Angenommen es gäbe einen Algorithmus, der H ITTING S ET in 2o(k) · |I|O(1) löst.
Durch die Kombination der Reduktion von 3-SAT auf H ITTING S ET und diesem
Algorithmus, existiert dann auch ein 2o(n) · |I|O(1) Algorithmus für 3-SAT, da k = n
nach Aufgabenteil 1. Damit ist die ETH falsch.
Damit kann es so einen Algorithmus für H ITTING S ET nur geben, wenn die ETH
falsch ist.
Bewertung 1 Punkt für den ersten Teil und 1.5 + 1.5 + 1 für den zweiten.
Abgabe: 07.07.2025, 10:00 in Moodle bitte beachten Sie die Informationen zum Abgabefor-
mat im Moodlekurs.
Hausaufgabe 12
Marek Lenczewski
Matrikelnummer: 1025252
6. Juli 2025
Hausaufgabe 12.1.1
Die Knotenzahl bleibt gleich: |V | = |V | = n
Die Kantenzahl entspricht den nicht vorhandenen Kanten: |E | = |E|
k entspricht allen Knoten, die vorher nicht in der Clique waren: k = n k
Hausaufgabe 12.1.2
Wir wissen, dass 3-SAT laut ETH mindestens 2Ω(n) braucht, wobei n für die Anzahl der Varia-
blen steht.
In der Vorlesung wurde eine Reduktion von 3-SAT auf Clique gezeigt. In der Präsenzaufgabe
10.2 wurde eine Reduktion von Clique auf VertexCover gezeigt. Also gibt es eine Reduktion von
3-SAT zu VertexCover. Somit kann VertexCover nicht schneller lösbar sein als 3-SAT, weil sonst
3-SAT schneller werden würde, was nach ETH nicht geht.
So ergeben sich die folgenden Lower Bounds:
• Bezüglich Anzahl der Knoten: 2Ω(n) , wobei n = |V |. Die Knotenzahl verändert sich
nicht bei den Reduktionen.
• Bezüglich Anzahl der Kanten: 2Ω( m) , wobei m = |E |. Die Kanten können bei den
Reduktionen zu einem quadratischen Wachstum der Kanten führen.
• Bezüglich k : 2Ω(k ) . Bei der Reduktion gilt k = n k, wobei k linear von n abhängt.
1
Hausaufgabe 12.2.1
• Größe des Universums: |U | = 2n. Für jede der n Variablen gibt es zwei Elemente (xi
und xi )
• Anzahl der Mengen: n + m. n sind die Variablenmengen und m die Klauselmengen. (Fi
und Fn+j )
• Parameter: k = n. Wird in der Reduktion so übernommen.
Hausaufgabe 12.2.2
Wir wissen, dass 3-SAT laut ETH mindestens 2Ω(n) braucht, wobei n für die Anzahl der Varia-
blen steht. Somit kann HittingSet nicht schneller sein.
Es ergeben sich die folgenden Lower Bounds für HittingSet:
• Bezüglich Größe des Universums: 2Ω(|U |/2) , da für jede Variable zwei Elemente ins
Universum aufgenommen werden
• Bezüglich Anzahl der Mengen: 2Ω(n) , wobei die Anzahl der Variablen- und Klausel-
mengen (m + n) mindestens n ist
• Bezüglich Zahl k: 2Ω(k) , da in der Reduktion k = n gilt.
2
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Algorithmen und Komplexität
Prof. Dr. K. Jansen, B. Schumacher, C. Wambsganz
07.07.2025
Hausaufgaben zur Vorlesung »Analyse von Algorithmen und
Komplexität«
Blatt 13
Definition 1 (M AX -3-S AT). Bei dem Problem M AX -3-S AT ist eine Formel φ in konjunktiver
Normalform gegeben, wobei jede Klausel 3 Literale enthält. Gesucht ist eine Belegung β der
Variablen, die die Anzahl v(β ) der erfüllten Klauseln maximiert.
Hausaufgabe 13.1 (M AX -3-S AT) (10 Punkte)
Betrachten Sie folgenden Algorithmus A:
• Sei β0 die Belegung, die alle Variablen auf false setzt.
• Sei β1 die Belegung, die alle Variablen auf true setzt.
• Falls v(β0 ) ≥ v(β1 ), gib β0 zurück.
• Sonst gib β1 zurück.
(a) (6 Punkte) Zeigen Sie, dass obiger Algorithmus Güte 2 hat, d.h. v(A(φ )) ≥ 12 v(OPT (φ ))
gilt für alle Eingaben φ .
(b) (4 Punkte) Geben Sie eine Formel an, bei der der Algorithmus eine Belegung ausgibt, die
genau die Hälfte der maximal erfüllbaren Klauseln erfüllt. Begründen Sie kurz, warum
Ihre Formel geeignet ist.
Hinweis: Sie brauchen nur höchstens zwei Klauseln und vier Variablen.
Lösung. (a) Für jede Klausel C gilt, dass sie von mindestens einer der Belegungen β0 und
β1 erfüllt wird. Wir zeigen nun per Widerspruch, dass der obige Algorithmus eine Güte
von 2 hat:
Angenommen, es gilt v(A(φ )) < 12 v(OPT (φ )) für eine Formel φ . Sei m die Anzahl an
Klauseln in φ . Dann gilt v(OPT (φ )) ≤ m. Da v(A(φ )) < 12 v(OPT (φ )) ≤ 12 m, gilt v(β0 ) <
1 1
2 m und v(β1 ) < 2 m. Da jede Klausel C allerdings von mindestens einer der Belegungen
β0 und β1 erfüllt wird, gilt v(β0 ) ≥ 12 m oder v(β1 ) ≥ 12 m. Dies ist ein Widerspruch.
Also gilt v(A(φ )) ≥ 21 v(OPT (φ )) für alle Eingaben φ und obiger Algorithmus hat Güte
2.
(b) Betrachte folgende Formel: φ = (x1 x2 x3 )∧(¬x0 ¬x2 ¬x3 ) Mit β = {x0 → f alse, x1 →
true, x2 → true, x3 → true} gilt v(β ) = 2. Da φ nur zwei Klauseln hat, gilt somit v(OPT (φ )) =
2. Es gilt allerdings v(β0 ) = 1, da hier nur die zweite Klausel erfüllt ist, und v(β1 ) = 1,
da hier nur die erste Klausel erfüllt ist. Somit gilt v(A(φ )) = 1 = 12 · 2 = 21 v(OPT (φ )).
Bewertung (a) 2 Punkte korrekte Beweisführung im Allgemeinen, 2 Punkte Abschätzung
Algorithmus, 2 Punkte Abschätzung Optimum; (b) 2 Punkte für Angabe einer korrekten Formel,
1 Punkt Ausgabe Algorithmus, 1 Punkt Optimum
Abgabe: 14.07.2025, 10:00 in Moodle bitte beachten Sie die Informationen zum Abgabefor-
mat im Moodlekurs.
Hausaufgabe 13
Marek Lenczewski
Matrikelnummer: 1025252
13. Juli 2025
Hausaufgabe 13.1.a
Zu zeigen ist, dass der Algorithmus die Güte 2 hat, also die Lösung vom Algorithmus mindestens
halb so gut ist wie die optimale Lösung. Also ν(A(ϕ)) ≥ 21 ν(OP T (ϕ)) für alle Eingaben ϕ.
Sei ϕ eine beliebige 3-SAT-Formel mit m Klauseln C1 , C2 , . . . , Cm , wobei jede Klausel genau
3 Literale enthält.
Jede Klausel Ci ist wahr, wenn β0 wahr ist oder wenn β1 wahr ist oder beides. Da die Varia-
blen in Ci nur positiv oder negativ sein können, muss dabei mindestens β0 oder β1 wahr werden.
Der Algorithmus wählt die Belegung β0 oder β1 aus, die die meisten Klauseln Ci erfüllt.
Somit ist die Anzahl der ausgewählten Klauseln Ci mindestens m2 , da eine bei jeder Klausel
mindestens eine Belegung wahr werden muss und somit hat mindestens eine Belegung mindes-
tens m
2 wahre Klauseln.
Sei ν0 = Anzahl der von β0 erfüllten Klauseln und ν1 = Anzahl der von β1 erfüllten Klauseln.
So ergibt sich ν(A(ϕ)) = max{ν0 , ν1 } ≥ ν0 +ν
2
1
≥m
2.
Da die optimale Lösung höchstens alle m Klauseln erfüllen kann, gilt ν(OP T (ϕ)) ≤ m.
ν(OP T (ϕ))
Daraus folgt: ν(A(ϕ)) ≥ m
2 ≥ 2 .
Somit hat der Algorithmus eine Güte von 2.
1
Hausaufgabe 13.1.b
Der Algorithmus erfüllt genau die Hälfte der maximal erfüllbaren Klauseln, wenn jede Klausel
nur aus positiven oder negativen Variablen besteht und sich diese genau gleich aufteilen.
Formel: ϕ = (x1 x2 x3 ) ∧ (¬x1 ¬x2 ¬x3 )
Unter β0 (alle false):
• C1 = (x1 x2 x3 ) = (false false false) = false
• C2 = (¬x1 ¬x2 ¬x3 ) = (true true true) = true
ν(β0 ) = 1
Unter β1 (alle true):
• C1 = (x1 x2 x3 ) = (true true true) = true
• C2 = (¬x1 ¬x2 ¬x3 ) = (false false false) = false
ν(β1 ) = 1
Der Algorithmus wählt ν(A(ϕ)) = max{ν(β0 ), ν(β1 )} = max{1, 1} = 1.
Eine optimale Lösung wäre zum Beispiel x1 = true, x2 = false, x3 = false.
• C1 = (true false false) = true
• C2 = (false true true) = true
Daraus ergibt sich ν(OP T (ϕ)) = 2, also ν(A(ϕ)) = ν(OP2T (ϕ)) . Somit hat es die Güte 2.
2