This commit is contained in:
team3
2026-07-08 23:46:35 +02:00
parent f9d77a113b
commit 2178c6faf4
15 changed files with 557 additions and 379 deletions

View File

@@ -378,7 +378,11 @@ _PDF_CAPS_SPLIT = re.compile(r"(?<![A-Za-zÄÖÜäöüß])([A-ZÄÖÜ]) ([A-ZÄ
# Regel B: Einzelbuchstaben-PAAR („N P") — nur mergen, wenn das Ergebnis im selben Dokument # Regel B: Einzelbuchstaben-PAAR („N P") — nur mergen, wenn das Ergebnis im selben Dokument
# mehrfach ungespalten vorkommt (Frequenz-Beleg statt Domänenliste: „NP" ja, „C Y" nein). # mehrfach ungespalten vorkommt (Frequenz-Beleg statt Domänenliste: „NP" ja, „C Y" nein).
_PDF_LETTER_PAIR = re.compile(r"(?<![A-Za-zÄÖÜäöüß])([A-ZÄÖÜ]) ([A-ZÄÖÜ])(?![A-Za-zÄÖÜäöüß-])") _PDF_LETTER_PAIR = re.compile(r"(?<![A-Za-zÄÖÜäöüß])([A-ZÄÖÜ]) ([A-ZÄÖÜ])(?![A-Za-zÄÖÜäöüß-])")
_PDF_NORM_VERSION = 1 # bump → nächster Lauf re-konvertiert alle PDFs (Marker .pdf-txt-norm) # Regel C: GROSSLAUF + Leerzeichen VOR einem Bindestrich-Kompositum („NP -vollständig",
# Makro-Spacing) → Leerzeichen weg. Einseitig: „X - y" (echter Gedankenstrich, beidseitig
# Leerzeichen) bleibt unberührt.
_PDF_HYPHEN_SPACE = re.compile(r"([A-ZÄÖÜ]{2,}) (-[a-zäöüß])")
_PDF_NORM_VERSION = 2 # bump → nächster Lauf re-konvertiert alle PDFs (Marker .pdf-txt-norm)
def _entzerre_pdf_woerter(text: str) -> str: def _entzerre_pdf_woerter(text: str) -> str:
@@ -395,7 +399,8 @@ def _entzerre_pdf_woerter(text: str) -> str:
n = len(re.findall(rf"(?<![A-Za-zÄÖÜäöüß]){merged}(?![A-Za-zÄÖÜäöüß])", text)) n = len(re.findall(rf"(?<![A-Za-zÄÖÜäöüß]){merged}(?![A-Za-zÄÖÜäöüß])", text))
return merged if n >= 3 else m.group(0) return merged if n >= 3 else m.group(0)
return _PDF_LETTER_PAIR.sub(_belegt, text) text = _PDF_LETTER_PAIR.sub(_belegt, text)
return _PDF_HYPHEN_SPACE.sub(r"\1\2", text)
def _convert_pdfs(project: Path) -> None: def _convert_pdfs(project: Path) -> None:
@@ -963,6 +968,10 @@ def _reference_strip(title: str) -> str:
t = t[m.end():].strip() t = t[m.end():].strip()
if (w := _WHOLE_PAREN_RE.match(t)): # leading label left a lone '(Christofides)' if (w := _WHOLE_PAREN_RE.match(t)): # leading label left a lone '(Christofides)'
t = w.group(1).strip() t = w.group(1).strip()
else:
# 'Satz 7.12 (Lawler 1976): Konzept' — die Zuschreibungs-Klammer vor dem ':'
# gehört zum Katalog-Gerüst. Nur MIT ':' peelen — '(a1=1)-SubsetSum' bleibt.
t = re.sub(r'^[\(\[][^()\[\]]{2,40}[\)\]]\s*:\s*(?=\S)', '', t).strip() or t
return t return t

View File

@@ -1272,6 +1272,71 @@ async def _proc_dedup(ctx: GenContext, flow: Flow, cards):
flow.wake.set() flow.wake.set()
async def _attach_nachzuegler(ctx: GenContext, flow: Flow, rows: list[dict]) -> set[str]:
"""Nachzügler-Atome (Supplement-/Lücken-Welle) zuerst an BESTEHENDE fertige Blöcke
anschließen: das Atom wird Sub des Blocks (Bottom-up-Persistenz) statt Zwergblock
mit einem Sub; die Board-2-Karte des Blocks geht zurück auf generate (Re-Anreicherung,
Resume-Hash ändert sich mit der Sub-Menge). Erstwelle hat keine done_block-Blöcke →
no-op. Ohne Zuordnung bleibt das Atom standalone (echtes neues Konzept).
→ card_ids der angeschlossenen rows."""
topic = flow.topic
done = [c for c in await db.kanban_cards(topic, board=BOARD, kind="block", stage="done_block")
if c["payload"].get("mirrored_norm")]
if not done or not rows:
return set()
work_dir = flow.work_dir
h = _h(*[r["card_id"] for r in rows], "attach")
path = work_dir / f"gruppierung-attach-{h}.json"
ids = set(range(1, len(rows) + 1))
add = _completion_schema(_json_file(path), len(done), ids)
if add is None:
anchors = "\n".join(
f"UMBRELLA {k}: {c['payload'].get('title', '')}{(c['payload'].get('description') or '')[:160]}"
for k, c in enumerate(done))
rest = "\n".join(f"{i}. {_t_text(r)}" for i, r in enumerate(rows, 1))
status, add = await run_single_slot(
ctx, "Gruppierung Anschluss", key=f"blocks-{topic}-gruppierung-attach-{h}",
prompt=_prompt("Blocks-Gruppierung-Completion", topic=topic, umbrellas=anchors,
rest=rest, out_path=path),
role="judge", capabilities="files",
payload=lambda result, p=path: _completion_schema(_json_file(p), len(done), ids),
timeout=_timeout("research_mapping", len(rows)))
if status != OK or add is None:
return set()
attached: set[str] = set()
moves = []
for k, members in (add or []):
c = done[k]
bnorm = c["payload"]["mirrored_norm"]
btitle = c["payload"].get("title", "")
traf = False
for m in members:
if not (1 <= m <= len(rows)) or rows[m - 1]["card_id"] in attached:
continue
r = rows[m - 1]
sn = _norm_title(r["title"])
if not sn:
continue
await db.put_subblock(topic, bnorm, sn, btitle, r["title"], status="consensus")
r["payload"].update(reason="attach", merged_into=btitle)
await db.kanban_set_payload(topic, BOARD, r["card_id"], r["payload"])
moves.append((r["card_id"], "grouped"))
attached.add(r["card_id"])
ch = c["payload"].setdefault("children", [])
if r["title"] not in ch:
ch.append(r["title"])
traf = True
if traf:
await db.kanban_set_payload(topic, BOARD, c["card_id"], c["payload"])
b2 = await db.kanban_get_card(topic, "artefacts", bnorm)
if b2 and b2["stage"] != "generate": # neuen Sub anreichern lassen
await db.kanban_advance(topic, "artefacts", bnorm, "generate")
if moves:
await db.kanban_advance_many(topic, BOARD, moves)
_log(topic, f"Gruppierung: {len(moves)} Nachzügler an bestehende Blöcke angeschlossen")
return attached
def _themen_zielband(n: int) -> tuple[int, int]: def _themen_zielband(n: int) -> tuple[int, int]:
"""Weiches Prompt-Band der Themenzahl: k = GROUP_THEMES_PER_SQRT·√n, ±30 %, min 2. """Weiches Prompt-Band der Themenzahl: k = GROUP_THEMES_PER_SQRT·√n, ±30 %, min 2.
n ist die Item-Zahl der GROUPING-WELLE — die Supplement-Welle bekommt bewusst ein n ist die Item-Zahl der GROUPING-WELLE — die Supplement-Welle bekommt bewusst ein
@@ -1291,6 +1356,13 @@ async def _proc_grouping(ctx: GenContext, flow: Flow, cards):
"title": c["payload"].get("title", ""), "title": c["payload"].get("title", ""),
"description": c["payload"].get("description") or "", "description": c["payload"].get("description") or "",
"title_norm": _norm_title(c["payload"].get("title", ""))} for c in cards] "title_norm": _norm_title(c["payload"].get("title", ""))} for c in cards]
# Nachzügler-Wellen: erst an bestehende fertige Blöcke anschließen (Sub statt Zwergblock)
attached = await _attach_nachzuegler(ctx, flow, rows)
if attached:
rows = [r for r in rows if r["card_id"] not in attached]
if not rows:
flow.wake.set()
return
n = len(rows) n = len(rows)
if not (BLOCKS_GRUPPIERUNG_AKTIV and await _emb_ok(flow)) or n < 3: if not (BLOCKS_GRUPPIERUNG_AKTIV and await _emb_ok(flow)) or n < 3:
await db.kanban_advance_many(topic, BOARD, [(r["card_id"], "gap_check") for r in rows]) await db.kanban_advance_many(topic, BOARD, [(r["card_id"], "gap_check") for r in rows])

View File

@@ -129,8 +129,8 @@ class Welt:
return j({"title": t.group(1).strip() if t else "", "description": beschr}) return j({"title": t.group(1).strip() if t else "", "description": beschr})
if "-filter-" in key: # auch filter-recheck if "-filter-" in key: # auch filter-recheck
return j({"fragments": {}, "drop": []}) return j({"fragments": {}, "drop": []})
if "-gruppierung-completion-" in key: if "-gruppierung-completion-" in key or "-gruppierung-attach-" in key:
return j({"additions": []}) return j({"additions": []}) # Anschluss-Judge: Fake-Nachzügler bleiben standalone
if "-gruppierung-" in key: if "-gruppierung-" in key:
# jedes Atom seinem Cluster zuordnen (nur die FULL ITEM LIST, 1..n eindeutig) # jedes Atom seinem Cluster zuordnen (nur die FULL ITEM LIST, 1..n eindeutig)
seg = prompt.split("FULL ITEM LIST", 1)[-1] seg = prompt.split("FULL ITEM LIST", 1)[-1]

View File

@@ -209,11 +209,18 @@ def _stem(t: str) -> str:
def _named_results(corpus: dict[str, str]) -> dict[str, set[str]]: def _named_results(corpus: dict[str, str]) -> dict[str, set[str]]:
"""Named/attributed corpus results → {concept name: distinctive stems}. A bare 'Satz 7.18' """Named/attributed corpus results → {concept name: distinctive stems}. A bare 'Satz 7.18'
(number, no name) yields nothing to match. Same catalogue vocabulary as the title strip.""" (number, no name) yields nothing to match. Same catalogue vocabulary as the title strip.
Umbruch-Schutz (generisch): endet ein Doppelpunkt-Fang am Zeilenumbruch und läuft die
nächste Zeile klein weiter, ist es ein UMBROCHENER SATZ, kein Name — solche Fragmente
(„Satz 6.16: Wenn ein … in P⏎liegt …") kann kein Block je ankern (Phantom-Lücke)."""
out: dict[str, set[str]] = {} out: dict[str, set[str]] = {}
for text in corpus.values(): for text in corpus.values():
for m in _NAMED_RESULT_RE.finditer(text): for m in _NAMED_RESULT_RE.finditer(text):
name = (m.group(1) or m.group(2) or "").strip() name = (m.group(1) or m.group(2) or "").strip()
if m.group(2) and m.end() > 0 and text[m.end() - 1] == "\n":
rest = text[m.end():].lstrip(" \t")
if rest[:1].islower():
continue # Satzfragment: Fortsetzung klein auf der nächsten Zeile
toks = _distinctive(name) toks = _distinctive(name)
if len(name) >= 3 and toks: if len(name) >= 3 and toks:
out.setdefault(name, set()).update(_stem(t) for t in toks) out.setdefault(name, set()).update(_stem(t) for t in toks)

View File

@@ -621,6 +621,10 @@ def test_reference_strip_and_is_reference():
== "N P via nicht-deterministische Turingmaschine" == "N P via nicht-deterministische Turingmaschine"
assert strip("Bemerkung 7.22") == "" assert strip("Bemerkung 7.22") == ""
assert strip("Vertex Cover") == "Vertex Cover" # kein Katalog-Gerüst → unverändert assert strip("Vertex Cover") == "Vertex Cover" # kein Katalog-Gerüst → unverändert
# Zuschreibungs-Klammer vor ':' gehört zum Katalog-Gerüst (aak: "(Lawler 1976): …" überlebte)
assert strip("Satz 7.12 (Lawler 1976): Minimum-Weight Perfect Matching") \
== "Minimum-Weight Perfect Matching"
assert strip("(a1=1)-SubsetSum Problem") == "(a1=1)-SubsetSum Problem" # Mathe-Klammer bleibt
assert isref("Bemerkung 7.22") and isref("Satz 7.18") and isref("Korollar 6.18") assert isref("Bemerkung 7.22") and isref("Satz 7.18") and isref("Korollar 6.18")
assert isref("Bedingung (**)") assert isref("Bedingung (**)")
assert not isref("Satz 7.13 (Christofides)") # hat Konzept → keine Referenz assert not isref("Satz 7.13 (Christofides)") # hat Konzept → keine Referenz
@@ -1577,3 +1581,62 @@ def test_gruppierung_prompt_rendert_zielband(tmp_path):
p = _prompt("Blocks-Gruppierung", topic="t", candidates="x", list="1. a", p = _prompt("Blocks-Gruppierung", topic="t", candidates="x", list="1. a",
out_path=tmp_path / "g.json", theme_lo=4, theme_hi=8, n_items=9) out_path=tmp_path / "g.json", theme_lo=4, theme_hi=8, n_items=9)
assert "~48 themes" in p and "(9 items)" in p assert "~48 themes" in p and "(9 items)" in p
async def test_attach_nachzuegler_wird_sub_statt_zwergblock(testdb, tmp_path, monkeypatch):
"""Nachzügler-Atom (Supplement-/Lücken-Welle) mit passendem fertigen Block →
wird dessen Sub (Bottom-up), Karte → grouped/attach, Board-2-Karte → generate.
Ohne Zuordnung bleibt das Atom standalone (Erstwelle: keine done_blocks → no-op)."""
db = testdb
ctx = GenContext(topic=TOPIC, provider="claude", is_cancelled=lambda: False)
flow = _mk_flow(tmp_path)
# fertiger Block mit Board-2-Karte
await db.kanban_upsert_card(TOPIC, B, "b1", "block", "done_block",
{"title": "Turingmaschinen", "description": "Modelle und Akzeptanz",
"mirrored_norm": "turingmaschinen", "children": ["Palindrom-TM"]})
await db.kanban_upsert_card(TOPIC, "artefacts", "turingmaschinen", "ablock", "done_artefact",
{"title": "Turingmaschinen"})
rows = [{"card_id": "n1", "payload": {"title": "Halteproblem", "description": "hält die TM?"},
"title": "Halteproblem", "description": "hält die TM?", "title_norm": "halteproblem"}]
await db.kanban_upsert_card(TOPIC, B, "n1", "block", "grouping", rows[0]["payload"])
async def fake_slot(ctx2, label, *, key, prompt, role, capabilities, payload, timeout):
assert "-gruppierung-attach-" in key and "Turingmaschinen" in prompt
m = re.search(r"(/\S+\.json)", prompt) # files-Agent: out_path aus dem Prompt schreiben
from pathlib import Path
Path(m.group(1)).write_text('{"additions": [{"umbrella": 0, "members": [1]}]}', encoding="utf-8")
return bi.OK, payload((0, "", ""))
monkeypatch.setattr(bi, "run_single_slot", fake_slot)
attached = await bi._attach_nachzuegler(ctx, flow, rows)
assert attached == {"n1"}
subs = {r["sub_norm"] for r in await db.list_subblocks(TOPIC, "turingmaschinen")}
assert "halteproblem" in subs
card = await db.kanban_get_card(TOPIC, B, "n1")
assert card["stage"] == "grouped" and card["payload"]["reason"] == "attach"
assert card["payload"]["merged_into"] == "Turingmaschinen"
b2 = await db.kanban_get_card(TOPIC, "artefacts", "turingmaschinen")
assert b2["stage"] == "generate" # Re-Anreicherung des neuen Subs
block = await db.kanban_get_card(TOPIC, B, "b1")
assert "Halteproblem" in block["payload"]["children"]
async def test_attach_nachzuegler_ohne_zuordnung_bleibt_standalone(testdb, tmp_path, monkeypatch):
db = testdb
ctx = GenContext(topic=TOPIC, provider="claude", is_cancelled=lambda: False)
flow = _mk_flow(tmp_path)
await db.kanban_upsert_card(TOPIC, B, "b1", "block", "done_block",
{"title": "Turingmaschinen", "mirrored_norm": "turingmaschinen"})
rows = [{"card_id": "n2", "payload": {"title": "Ganz neues Konzept"},
"title": "Ganz neues Konzept", "description": "", "title_norm": "ganz neues konzept"}]
await db.kanban_upsert_card(TOPIC, B, "n2", "block", "grouping", rows[0]["payload"])
async def fake_slot(ctx2, label, **kw):
m = re.search(r"(/\S+\.json)", kw["prompt"])
from pathlib import Path
Path(m.group(1)).write_text('{"additions": []}', encoding="utf-8")
return bi.OK, kw["payload"]((0, "", ""))
monkeypatch.setattr(bi, "run_single_slot", fake_slot)
assert await bi._attach_nachzuegler(ctx, flow, rows) == set()
assert (await db.kanban_get_card(TOPIC, B, "n2"))["stage"] == "grouping"

View File

@@ -103,3 +103,13 @@ def test_fidelity_guard_prefers_faithful_plaintext():
assert blx._pick_conversion(None, plain)[1] == "pdftotext" assert blx._pick_conversion(None, plain)[1] == "pdftotext"
assert blx._pick_conversion(md_ok, None)[1] == "pymupdf4llm" assert blx._pick_conversion(md_ok, None)[1] == "pymupdf4llm"
assert blx._pick_conversion(None, None) is None assert blx._pick_conversion(None, None) is None
def test_entzerre_hyphen_space():
"""Regel C: GROSSLAUF + Leerzeichen vor Bindestrich-Kompositum („NP -vollständig",
Makro-Spacing) wird gemerged; echter Gedankenstrich („X - y") bleibt."""
assert blx._entzerre_pdf_woerter("die NP -vollständigkeit gilt") == "die NP-vollständigkeit gilt"
assert blx._entzerre_pdf_woerter("Begriffe der NP -schwere und NP -vollständigkeit") == \
"Begriffe der NP-schwere und NP-vollständigkeit"
assert blx._entzerre_pdf_woerter("Term X - y bleibt") == "Term X - y bleibt"
assert blx._entzerre_pdf_woerter("Liste:\n-punkt eins") == "Liste:\n-punkt eins"

View File

@@ -333,3 +333,15 @@ def test_offene_luecken_filtert_freispruch_und_nein():
"konzept_luecken": ["Satz von Foo"]} "konzept_luecken": ["Satz von Foo"]}
lk, kl = qa.offene_luecken(rep) lk, kl = qa.offene_luecken(rep)
assert [x["vorschau"] for x in lk] == ["a"] and kl == ["Satz von Foo"] assert [x["vorschau"] for x in lk] == ["a"] and kl == ["Satz von Foo"]
def test_named_results_ueberspringt_umbrochene_saetze():
"""Doppelpunkt-Fang, der am Zeilenumbruch endet und klein weiterläuft, ist ein
umbrochener SATZ, kein Konzeptname — solche Phantom-Lücken kann kein Block ankern.
Echte Namen (auch \\n-terminiert mit großer Folgezeile) bleiben."""
text = ("Konsequenz von Satz 6.16: Wenn ein NP-vollständiges Entscheidungsproblem in P\n"
"liegt, dann sind alle NP Entscheidungsprobleme in P.\n\n"
"Satz 7.13 (Christofides). Beweis folgt.\n"
"Satz 6.24: Cook-Levin.\n"
"Satz 9.1: Vier-Farben-Satz\nDer Beweis nutzt Computer.\n")
assert sorted(qa._named_results({"f": text})) == ["Christofides", "Cook-Levin", "Vier-Farben-Satz"]

View File

@@ -10,6 +10,8 @@ FULL ITEM LIST (you may pull in ANY numbers below that share the theme):
## How to form a theme ## How to form a theme
- **One coherent subject.** The members belong together because a learner would study them as one block — the parts/facets/instances of one model, system, setup, tool family, or category. Examples of the *kind* of grouping (not domain rules): many individual settings/variables/flags of one configuration → one „…-Konfiguration" theme; the parts of one setup → one „…-Setup" theme; a base concept plus its variants/instances → one theme. - **One coherent subject.** The members belong together because a learner would study them as one block — the parts/facets/instances of one model, system, setup, tool family, or category. Examples of the *kind* of grouping (not domain rules): many individual settings/variables/flags of one configuration → one „…-Konfiguration" theme; the parts of one setup → one „…-Setup" theme; a base concept plus its variants/instances → one theme.
- **Most specific home wins.** An item tied to ONE concrete object (an algorithm/theorem/counterexample FOR object X, a setting OF component X) belongs in X's theme — not in a technique/property family that also fits. A learner meets „the algorithm for X" while studying X, not in a generic „algorithms" chapter.
- **The title must be true of EVERY member.** Never assert a property or class in the theme title (a complexity claim, „deprecated …", „…-vollständige …") unless every single member has that property — otherwise pick a neutral title for the shared subject.
- **Lexical dissimilarity is NORMAL.** Facets of one theme often read very differently — that is not a reason to split them. - **Lexical dissimilarity is NORMAL.** Facets of one theme often read very differently — that is not a reason to split them.
- **Title:** name the theme after the shared subject. A real self-contained heading; must NOT contain „ — " (reserved separator) — use „(…)" or „:". - **Title:** name the theme after the shared subject. A real self-contained heading; must NOT contain „ — " (reserved separator) — use „(…)" or „:".
- **Description:** name EVERY member explicitly (the next step recovers them as sub-points). E.g. „Environment-Konfiguration: APP_ENV, APP_SECRET, DATABASE_URL, MAILER_DSN, …". - **Description:** name EVERY member explicitly (the next step recovers them as sub-points). E.g. „Environment-Konfiguration: APP_ENV, APP_SECRET, DATABASE_URL, MAILER_DSN, …".

View File

@@ -12,6 +12,7 @@ PAIRS:
- a distinct **variant** is its own entity: „GA" ≠ „ModifiedGreedy (MGA)"; „SAT" ≠ „3-SAT"; „Knapsack" ≠ „Multiple-Choice-Knapsack"; - a distinct **variant** is its own entity: „GA" ≠ „ModifiedGreedy (MGA)"; „SAT" ≠ „3-SAT"; „Knapsack" ≠ „Multiple-Choice-Knapsack";
- a **reduction between two problems** is its own entity: „Clique" ≠ „3-SAT ≤ Clique"; - a **reduction between two problems** is its own entity: „Clique" ≠ „3-SAT ≤ Clique";
- two reductions/relations that share ONE side but differ on the OTHER (or run in the opposite direction) are DIFFERENT results → **nein**: „SAT ≤ Clique" ≠ „SAT ≤ 3-Dim-Matching", „VertexCover ≤ FVS" ≠ „VertexCover ≤ Δ-Cover". A restriction/special case („3-SAT ≤ X") is NARROWER than the general („SAT ≤ X"), never the same. - two reductions/relations that share ONE side but differ on the OTHER (or run in the opposite direction) are DIFFERENT results → **nein**: „SAT ≤ Clique" ≠ „SAT ≤ 3-Dim-Matching", „VertexCover ≤ FVS" ≠ „VertexCover ≤ Δ-Cover". A restriction/special case („3-SAT ≤ X") is NARROWER than the general („SAT ≤ X"), never the same.
- a **statement that RELATES several standalone objects** (an implication, a shared bound, a joint consequence — „Hypothese H ⇒ keine schnelle Lösung für X und Y") is its own entity, like a reduction. It is NEVER a duplicate of ONE of the objects it mentions — merging „X" into such a statement silently deletes X's own definition/properties from the inventory.
- **SAME canonical entity → ja**, even when A and B emphasize DIFFERENT FACETS of it. Facets of one and the same object include: its **formal definition**, a **mechanism/step** (how it works), a **property** (approximation ratio, a bound, complexity, ∈ NP), a **characterization**, a **naming variant**. Two entries describing different facets of the SAME entity are duplicates. - **SAME canonical entity → ja**, even when A and B emphasize DIFFERENT FACETS of it. Facets of one and the same object include: its **formal definition**, a **mechanism/step** (how it works), a **property** (approximation ratio, a bound, complexity, ∈ NP), a **characterization**, a **naming variant**. Two entries describing different facets of the SAME entity are duplicates.
**STEP 3 — „When in doubt → nein" applies ONLY when STEP 1 is ambiguous** (you genuinely cannot tell whether the two names denote the same object). It does NOT fire merely because the two descriptions differ — differing descriptions of the SAME entity are **ja**. **STEP 3 — „When in doubt → nein" applies ONLY when STEP 1 is ambiguous** (you genuinely cannot tell whether the two names denote the same object). It does NOT fire merely because the two descriptions differ — differing descriptions of the SAME entity are **ja**.
@@ -27,6 +28,7 @@ NOT A DUPLICATE (nein) — different entity:
- A: „Greedy-Algorithmus GA" B: „ModifiedGreedy (MGA)" → two different algorithms → **nein** - A: „Greedy-Algorithmus GA" B: „ModifiedGreedy (MGA)" → two different algorithms → **nein**
- A: „Lower Bound Clique bzgl. Knoten" B: „Lower Bound Clique bzgl. Kanten" → different parameter → **nein** - A: „Lower Bound Clique bzgl. Knoten" B: „Lower Bound Clique bzgl. Kanten" → different parameter → **nein**
- A: „Clique" B: „3-SAT ≤ Clique" → a problem vs. a reduction (its own block) → **nein** - A: „Clique" B: „3-SAT ≤ Clique" → a problem vs. a reduction (its own block) → **nein**
- A: „Partition" B: „Satz: ETH ⇒ kein 2^o(n) für Partition, SubSet Sum" → a problem vs. a joint bound over TWO problems → **nein**
- A: „VertexCover ≤ FVS" B: „VertexCover ≤ Δ-Cover" → same source, different target → different reductions → **nein** - A: „VertexCover ≤ FVS" B: „VertexCover ≤ Δ-Cover" → same source, different target → different reductions → **nein**
- A: „Cliquenproblem" B: „Vertex-Cover-Problem" → different problems → **nein** - A: „Cliquenproblem" B: „Vertex-Cover-Problem" → different problems → **nein**

1
uni/aak/.pdf-txt-norm Normal file
View File

@@ -0,0 +1 @@
2

View File

@@ -6,9 +6,9 @@ man schnell den Mut verliert, eine exakte Lösung in Polynomialzeit zu berechnen
Probleme scheinen schwerer zu sein als andere. Was ist die Schwere eines Problems? Die Probleme scheinen schwerer zu sein als andere. Was ist die Schwere eines Problems? Die
Komplexitätstheorie befasst sich noch weitergehend mit der Frage nach der Komplexität Komplexitätstheorie befasst sich noch weitergehend mit der Frage nach der Komplexität
von Problemen, dh. man versucht zu klassifizieren wie schwer Probleme sind. von Problemen, dh. man versucht zu klassifizieren wie schwer Probleme sind.
In diesem Kapitel werden wir die Komplexitätsklassen P und N P einführen und wol- In diesem Kapitel werden wir die Komplexitätsklassen P und NP einführen und wol-
len dann die Begriffe der N P -schwere und N P -vollständigkeit verstehen. Im Anschluss len dann die Begriffe der NP-schwere und NP-vollständigkeit verstehen. Im Anschluss
werden wir einige Beispiele N P -vollständiger Probleme studieren. werden wir einige Beispiele NP-vollständiger Probleme studieren.
6.1 Einleitung: Cliquenproblem 6.1 Einleitung: Cliquenproblem
@@ -97,14 +97,14 @@ über dem Alphabet Σ = {0, 1}.
Bemerkung 6.6. u ist ein Wort der Länge O(|V |2 ), v ist ein Wort der Länge O(log |V |). Bemerkung 6.6. u ist ein Wort der Länge O(|V |2 ), v ist ein Wort der Länge O(log |V |).
6.2 Komplexitätsklassen P, N P 6.2 Komplexitätsklassen P, NP
Definition 6.7. Die Menge aller polynomiell entscheidbaren Sprachen bzw. Entschei- Definition 6.7. Die Menge aller polynomiell entscheidbaren Sprachen bzw. Entschei-
dungsproblemen wird mit P bezeichnet: dungsproblemen wird mit P bezeichnet:
P = {L ⊆ Σ∗ | es existiert ein Algorithmus A, der L in Laufzeit P = {L ⊆ Σ∗ | es existiert ein Algorithmus A, der L in Laufzeit
TA (n) = O(nd ) mit d = O(1) entscheidet}. TA (n) = O(nd ) mit d = O(1) entscheidet}.
Neben P gibt es unter anderem auch die Klasse N P . Diese wird häufig über nicht- Neben P gibt es unter anderem auch die Klasse NP . Diese wird häufig über nicht-
deterministische Algorithmen eingeführt (bei denen es zu jeder Eingabe eine endliche deterministische Algorithmen eingeführt (bei denen es zu jeder Eingabe eine endliche
Menge von Rechenwegen gibt). Menge von Rechenwegen gibt).
@@ -118,9 +118,9 @@ Definition 6.8. Ein nicht-deterministischer Algorithmus entscheidet eine Sprache
Die Anzahl der Rechenwege kann dabei exponentiell von der Eingabe abhängen. Die Anzahl der Rechenwege kann dabei exponentiell von der Eingabe abhängen.
Die Klasse N P ist nun genau die Menge aller Sprachen, die durch einen nicht-deterministischen Die Klasse NP ist nun genau die Menge aller Sprachen, die durch einen nicht-deterministischen
Algorithmus in Polynomialzeit entschieden werden können. Wir bedienen uns hier aller- Algorithmus in Polynomialzeit entschieden werden können. Wir bedienen uns hier aller-
dings einer alternativen Definition der Klasse N P über polynomielle Verifizier. Die so dings einer alternativen Definition der Klasse NP über polynomielle Verifizier. Die so
definierte Klassen von Problemen sind aber gleich. definierte Klassen von Problemen sind aber gleich.
Definition 6.9. Es sei L ⊆ Σ∗ . Ein (deterministischer) Algorithmus, der auf Σ∗ × Σ∗ Definition 6.9. Es sei L ⊆ Σ∗ . Ein (deterministischer) Algorithmus, der auf Σ∗ × Σ∗
@@ -135,27 +135,27 @@ Definition 6.10. Ein Algorithmus A ist ein polynomieller Verifizierer für eine
L, wenn eine Konstante d existiert, so dass es für jedes x ∈ L ein Zertifikat c gibt mit L, wenn eine Konstante d existiert, so dass es für jedes x ∈ L ein Zertifikat c gibt mit
TA (x, c) = O(|x|d ). TA (x, c) = O(|x|d ).
Definition 6.11. Die Klasse aller polynomiell verifizierbaren Sprachen wird mit N P Definition 6.11. Die Klasse aller polynomiell verifizierbaren Sprachen wird mit NP
bezeichnet; d.h. bezeichnet; d.h.
N P = {L ⊆ Σ∗ | es existiert ein polynomieller Verifizierer für L}. NP = {L ⊆ Σ∗ | es existiert ein polynomieller Verifizierer für L}.
202 202
6.2 Komplexitätsklassen P, N P 6.2 Komplexitätsklassen P, NP
Satz 6.12. Es gilt P ⊆ N P . Satz 6.12. Es gilt P ⊆ NP .
Beweis. Zu einem Entscheidungsproblem L aus P gibt es einen Algorithmus A, der Beweis. Zu einem Entscheidungsproblem L aus P gibt es einen Algorithmus A, der
L entscheidet. Diesen Algorithmus kann man als Verifizierer auffassen, der die zweite L entscheidet. Diesen Algorithmus kann man als Verifizierer auffassen, der die zweite
Eingabe c einfach ignoriert. Damit ist L auch in N P . Eingabe c einfach ignoriert. Damit ist L auch in NP .
Nun können wir auf das Cliquenproblem zurückkommen und die folgende Aussage Nun können wir auf das Cliquenproblem zurückkommen und die folgende Aussage
beweisen. beweisen.
Lemma 6.13. Das Entscheidungsproblem k-Clique ist in N P . Lemma 6.13. Das Entscheidungsproblem k-Clique ist in NP .
Beweis. Durch Angabe eines polynomiellen Verifizieres für k-Clique. Der Algorithmus Beweis. Durch Angabe eines polynomiellen Verifizieres für k-Clique. Der Algorithmus
bekommt neben der Eingabe (einen Graph G = (V, E) und eine Zahl k) ein Zertifikat bekommt neben der Eingabe (einen Graph G = (V, E) und eine Zahl k) ein Zertifikat
@@ -171,7 +171,7 @@ bekommt neben der Eingabe (einen Graph G = (V, E) und eine Zahl k) ein Zertifika
O(|C|) = O(|V |) Zeit. Da die Eingabelänge Ω(|V | + |E|) ist, ist die Laufzeit des Algo- O(|C|) = O(|V |) Zeit. Da die Eingabelänge Ω(|V | + |E|) ist, ist die Laufzeit des Algo-
rithmus polynomiell. rithmus polynomiell.
Nachdem wir nun gesehen haben, wie die Klassen P und N P definiert haben, können Nachdem wir nun gesehen haben, wie die Klassen P und NP definiert haben, können
wir den Begriff der Schwere genauer beleuchten. Dafür ist es notwendig zu verstehen, wir den Begriff der Schwere genauer beleuchten. Dafür ist es notwendig zu verstehen,
wann ein Problem auf ein anderes Problem reduziert werden kann. Wir benötigen die wann ein Problem auf ein anderes Problem reduziert werden kann. Wir benötigen die
folgende Definition. folgende Definition.
@@ -190,11 +190,11 @@ Definition 6.14. Es seien L1 ⊆ Σ1 , L2 ⊆ Σ2 zwei Sprachen.
Dann heißt L1 polynomiell reduzierbar auf L2 . Als Notation verwenden wir L1 ≤ L2 . Dann heißt L1 polynomiell reduzierbar auf L2 . Als Notation verwenden wir L1 ≤ L2 .
Endlich können wir den Begriff der N P -Schwere bzw. N P -Vollständigkeit formal fassen: Endlich können wir den Begriff der NP -Schwere bzw. NP -Vollständigkeit formal fassen:
Definition 6.15. (i) Eine Sprache L0 heißt N P -schwer, g.d.w. ∀L ∈ N P : L ≤ L0 . Definition 6.15. (i) Eine Sprache L0 heißt NP-schwer, g.d.w. ∀L ∈ NP : L ≤ L0 .
(ii) Eine Sprache L0 heißt N P -vollständig, g.d.w. L0 ∈ N P und ∀L ∈ N P gilt: L ≤ L0 . (ii) Eine Sprache L0 heißt NP-vollständig, g.d.w. L0 ∈ NP und ∀L ∈ NP gilt: L ≤ L0 .
@@ -202,17 +202,17 @@ Definition 6.15. (i) Eine Sprache L0 heißt N P -schwer, g.d.w. ∀L ∈ N P
6 Einführung in die Komplexitätstheorie 6 Einführung in die Komplexitätstheorie
Eine fundamentale Eigenschaft der N P -vollständigkeit ist die folgende: Eine fundamentale Eigenschaft der NP-vollständigkeit ist die folgende:
Satz 6.16. Es sei L0 N P -vollständig. Dann gilt P = N P , g.d.w. L0 ∈ P . Satz 6.16. Es sei L0 NP-vollständig. Dann gilt P = NP , g.d.w. L0 ∈ P .
Beweis. ⇒: Es sei P = N P . Zeige dann, dass L0 ∈ P . Beweis. ⇒: Es sei P = NP . Zeige dann, dass L0 ∈ P .
L0 ist NP-vollständig. Dann gilt insbesondere L0 ∈ N P . Wegen P = N P gilt dann L0 ist NP-vollständig. Dann gilt insbesondere L0 ∈ NP . Wegen P = NP gilt dann
L0 ∈ P . L0 ∈ P .
⇐: Es sei L0 ∈ P . Zeige hier, dass P = N P . ⇐: Es sei L0 ∈ P . Zeige hier, dass P = NP .
Da L0 ∈ P ist, gibt es einen Algorithmus A0 , der L0 in Polynomzeit T0 entscheidet. Da L0 ∈ P ist, gibt es einen Algorithmus A0 , der L0 in Polynomzeit T0 entscheidet.
Es sei nun L ∈ N P beliebig gewählt. Zeige: L ∈ P . Es sei nun L ∈ NP beliebig gewählt. Zeige: L ∈ P .
Da L0 N P -vollständig ist und L ∈ N P , gilt L ≤ L0 . Sei also Af ein Algorithmus, Da L0 NP-vollständig ist und L ∈ NP , gilt L ≤ L0 . Sei also Af ein Algorithmus,
der die polynomielle Transformation f von L auf L0 in Polynomzeit Tf berechnet mit der die polynomielle Transformation f von L auf L0 in Polynomzeit Tf berechnet mit
u ∈ L ⇔ f (u) ∈ L0 . u ∈ L ⇔ f (u) ∈ L0 .
Wir konstruieren A aus A0 und Af durch Hintereinanderschalten; siehe folgendes Bild: Wir konstruieren A aus A0 und Af durch Hintereinanderschalten; siehe folgendes Bild:
@@ -229,12 +229,12 @@ zu f (u) ∈ L0 bzw. u ∈ L. D.h. Algorithmus A entscheidet L mit Gesamtlaufzei
Tf (|u|)+T0 (|f (u)|) ≤ T (|u|) für ein Polynom T . Hierbei verwende, dass |f (u)| ≤ poly(|u|) Tf (|u|)+T0 (|f (u)|) ≤ T (|u|) für ein Polynom T . Hierbei verwende, dass |f (u)| ≤ poly(|u|)
und dass die Komposition von Polynomen wieder ein Polynom ergibt. und dass die Komposition von Polynomen wieder ein Polynom ergibt.
Konsequenz von Satz 6.16: Wenn ein N P -vollständiges Entscheidungsproblem in P Konsequenz von Satz 6.16: Wenn ein NP-vollständiges Entscheidungsproblem in P
liegt, dann sind alle N P Entscheidungsprobleme in P . liegt, dann sind alle NP Entscheidungsprobleme in P .
Die gleiche Aussage gilt auch für ein N P -schweres Problem. Die gleiche Aussage gilt auch für ein NP-schweres Problem.
Offenes Problem der Komplexitätstheorie: Offenes Problem der Komplexitätstheorie:
Gilt P = N P oder P 6= N P ? Gilt P = NP oder P 6= NP ?
Dies ist eines der wichtigsten offenen Probleme der Informatik. Es wurde vom Clay Dies ist eines der wichtigsten offenen Probleme der Informatik. Es wurde vom Clay
Mathematics Institute in die Liste der Millennium-Probleme aufgenommen; mit einem Mathematics Institute in die Liste der Millennium-Probleme aufgenommen; mit einem
@@ -244,29 +244,29 @@ Bemerkung 6.17. Wenn L1 ≤ L2 und L2 ≤ L3 , dann gilt auch L1 ≤ L3 .
Beweis. siehe Übung. Beweis. siehe Übung.
Korollar 6.18. Ist L0 N P -vollständig, L0 ≤ L1 und L1 ∈ N P , so ist auch L1 N P - Korollar 6.18. Ist L0 NP-vollständig, L0 ≤ L1 und L1 ∈ NP , so ist auch L1 NP -
vollständig. vollständig.
204 204
6.3 Definition von P und N P per Turingmaschine 6.3 Definition von P und NP per Turingmaschine
Beweis. Zeige die folgende Behauptung: ∀L ∈ N P gilt L ≤ L1 . Beweis. Zeige die folgende Behauptung: ∀L ∈ NP gilt L ≤ L1 .
Sei dazu L ∈ N P beliebig gewählt. Zeige dann die Aussage L ≤ L1 . Wegen der N P - Sei dazu L ∈ NP beliebig gewählt. Zeige dann die Aussage L ≤ L1 . Wegen der NP -
vollständigkeit von L0 und da L ∈ N P ist, gilt L ≤ L0 . Nach Voraussetzung gilt vollständigkeit von L0 und da L ∈ NP ist, gilt L ≤ L0 . Nach Voraussetzung gilt
zusätzlich L0 ≤ L1 . Da die Relation ≤ transitiv ist (siehe Bemerkung 6.17), gilt dann: zusätzlich L0 ≤ L1 . Da die Relation ≤ transitiv ist (siehe Bemerkung 6.17), gilt dann:
L ≤ L1 . L ≤ L1 .
Da L1 ∈ N P wegen der Voraussetzung, ist daher L1 auch N P -vollständig. Da L1 ∈ NP wegen der Voraussetzung, ist daher L1 auch NP-vollständig.
Das obige Ergebnis in Korollar 6.18 ermöglicht uns, N P -vollständige Probleme aus Das obige Ergebnis in Korollar 6.18 ermöglicht uns, NP-vollständige Probleme aus
bekannten N P -vollständigen Problemen zu konstruieren (bzw. deren N P -vollständigkeit bekannten NP-vollständigen Problemen zu konstruieren (bzw. deren NP-vollständigkeit
zu beweisen). Für diese Entscheidungsprobleme gibt es keine polynomiellen Algorithmen, zu beweisen). Für diese Entscheidungsprobleme gibt es keine polynomiellen Algorithmen,
außer P = N P . außer P = NP .
6.3 Definition von P und N P per Turingmaschine 6.3 Definition von P und NP per Turingmaschine
Eine nicht-deterministische Turingmaschine (NDTM) hat die Form: Eine nicht-deterministische Turingmaschine (NDTM) hat die Form:
M = (Q, Γ, q0 , δ, F ). M = (Q, Γ, q0 , δ, F ).
@@ -344,11 +344,11 @@ w in L liegt.
Definition 6.20. L ⊂ Σ∗ ∈ P ⇐⇒ ∃ eine DTM M über Alphabet Γ ⊃ Σ und ein Poly- Definition 6.20. L ⊂ Σ∗ ∈ P ⇐⇒ ∃ eine DTM M über Alphabet Γ ⊃ Σ und ein Poly-
nom T , so dass M die Sprache L in Zeit T entscheidet. nom T , so dass M die Sprache L in Zeit T entscheidet.
Nun bleibt zu zeigen, dass beide gezeigten Definitionen der Komplexitätsklasse N P Nun bleibt zu zeigen, dass beide gezeigten Definitionen der Komplexitätsklasse NP
äquivalent sind, sie also die gleiche Klasse beschreiben. äquivalent sind, sie also die gleiche Klasse beschreiben.
Satz 6.21. Die Klassen der Sprachen bezüglich Verifizierer und NDTM sind äquivalent Satz 6.21. Die Klassen der Sprachen bezüglich Verifizierer und NDTM sind äquivalent
und beschreiben beide die gleiche Klasse N P . und beschreiben beide die gleiche Klasse NP .
Beweis. ” ⊃ ” : Sei N eine NDTM, die eine Sprache L in Zeit nc für eine Konstante Beweis. ” ⊃ ” : Sei N eine NDTM, die eine Sprache L in Zeit nc für eine Konstante
c entscheidet. Für jedes x ∈ L gibt es eine Folge nicht-deterministischer Übergänge, c entscheidet. Für jedes x ∈ L gibt es eine Folge nicht-deterministischer Übergänge,
@@ -377,8 +377,8 @@ entscheidet, da M diese Eingabe in Polynomzeit verifizieren kann.
6.4 Satisfiability Problem (SAT) 6.4 Satisfiability Problem (SAT)
Der Kanadier Stephen A. Cook begründete 1971 die Klasse der N P -vollständigen Proble- Der Kanadier Stephen A. Cook begründete 1971 die Klasse der NP-vollständigen Proble-
me in N P , indem er zeigte, dass ein N P -vollständiges Problem existiert. Dieses Problem me in NP , indem er zeigte, dass ein NP-vollständiges Problem existiert. Dieses Problem
ist das sogenannte Satisfiability Problem (SAT). Leonid Levin hatte einen vergleichbaren ist das sogenannte Satisfiability Problem (SAT). Leonid Levin hatte einen vergleichbaren
Satz 1973 veröffentlicht. Satz 1973 veröffentlicht.
@@ -417,7 +417,7 @@ Wahrheitstabelle:
Die Belegung ψ(x1) = ψ(x10) = true ist eine erfüllende Belegung. Die Belegung ψ(x1) = ψ(x10) = true ist eine erfüllende Belegung.
Satz 6.24. (Cook, 1971/Levin, 1973): SAT ist N P -vollständig. Satz 6.24. (Cook, 1971/Levin, 1973): SAT ist NP-vollständig.
Beweis. SAT ∈ NP Wir skizzieren dies für eine entsprechende nichtdeterministische Tu- Beweis. SAT ∈ NP Wir skizzieren dies für eine entsprechende nichtdeterministische Tu-
ringmaschine mit den Zwischenergebnissen auf dem Turingband in Abb. 6.1. Salopp ringmaschine mit den Zwischenergebnissen auf dem Turingband in Abb. 6.1. Salopp
@@ -576,8 +576,8 @@ Hierbei ist 0 ≤ t, i ≤ T (|u|), 0 ≤ k ≤ S, 1 ≤ l ≤ %, 0 ≤ j ≤ m.
wahr geschieht der Übergang Ct → Ct+1 gemäß Zeile zl(t) . Insgesamt wahr geschieht der Übergang Ct → Ct+1 gemäß Zeile zl(t) . Insgesamt
erhalten wir eine akzeptierende Berechnung von M auf u. erhalten wir eine akzeptierende Berechnung von M auf u.
Im Folgenden werden wir nun einige N P -vollständige Probleme betrachten und ihre Im Folgenden werden wir nun einige NP-vollständige Probleme betrachten und ihre
Schwere insbesondere beweisen. Es zeigt sich etwa, dass SAT sogar dann N P -vollständig Schwere insbesondere beweisen. Es zeigt sich etwa, dass SAT sogar dann NP-vollständig
bleibt, wenn man pro Klausel nur maximal 3 Literale erlaubt. Dieses Problem nennen bleibt, wenn man pro Klausel nur maximal 3 Literale erlaubt. Dieses Problem nennen
wir 3-SAT. wir 3-SAT.
@@ -585,7 +585,7 @@ wir 3-SAT.
6.5 SAT mit kleinen Klauseln (3-SAT) 6.5 SAT mit kleinen Klauseln (3-SAT)
3-SAT = {α | α Boolescher Ausdruck in KNF mit ≤ 3 Literalen pro Klausel, α erfüllbar}. 3-SAT = {α | α Boolescher Ausdruck in KNF mit ≤ 3 Literalen pro Klausel, α erfüllbar}.
Satz 6.25. 3-SAT ist N P -vollständig. Satz 6.25. 3-SAT ist NP-vollständig.
Beweis. Es reicht zu zeigen: SAT ≤ 3-SAT. Gesucht ist eine polynomzeit-berechenbare Beweis. Es reicht zu zeigen: SAT ≤ 3-SAT. Gesucht ist eine polynomzeit-berechenbare
Transformation φ : α → ᾱ mit Transformation φ : α → ᾱ mit
@@ -629,9 +629,9 @@ Gegeben: Ein ungerichteter Graph G = (V, E) und eine Zahl k ≥ 1.
Entscheide: Hat der gegebene Graph G eine Clique C ⊆ V mit mindestens k Knoten Entscheide: Hat der gegebene Graph G eine Clique C ⊆ V mit mindestens k Knoten
(d.h. mit |C| ≥ k)? (d.h. mit |C| ≥ k)?
Satz 6.26. Das Problem k-Clique ist N P -vollständig. Satz 6.26. Das Problem k-Clique ist NP-vollständig.
Beweis. (a) k-Clique ∈ N P : siehe Lemma 6.13 (b) Zeige: SAT ≤ k-Clique. Beweis. (a) k-Clique ∈ NP : siehe Lemma 6.13 (b) Zeige: SAT ≤ k-Clique.
Es sei F ein Boolscher Ausdruck in KNF, wobei F = F1 ∧. . .∧Fm und Fi = (yi1 . . .yi`i ) Es sei F ein Boolscher Ausdruck in KNF, wobei F = F1 ∧. . .∧Fm und Fi = (yi1 . . .yi`i )
eine Klausel mit `i Literalen ist. Konstruktion von G = (V, E) (dies geht in poly. Zeit): eine Klausel mit `i Literalen ist. Konstruktion von G = (V, E) (dies geht in poly. Zeit):
@@ -691,10 +691,10 @@ Gegeben: Ein ungerichteter Graph G = (V, E) und eine Zahl k ≥ 1.
Entscheide: Hat der gegebene Graph G eine k-Färbung? Entscheide: Hat der gegebene Graph G eine k-Färbung?
Satz 6.28. Das Färbungsproblem k-Color ist N P -vollständig. Satz 6.28. Das Färbungsproblem k-Color ist NP-vollständig.
Beweis. (a) k-Color ∈ N P : Wähle als Zertifikat eine Abbildung f : V → {1, . . . , k} und Beweis. (a) k-Color ∈ NP : Wähle als Zertifikat eine Abbildung f : V → {1, . . . , k} und
teste, ob f eine k-Färbung ist. Der Testschritt geht in Zeit O(|V | + |E|). teste, ob f eine k-Färbung ist. Der Testschritt geht in Zeit O(|V | + |E|).
(b) zeige: 3-SAT ≤ k-Color. Es sei F Boolescher Ausdruck in KNF mit F = F1 ∧. . .∧Fm (b) zeige: 3-SAT ≤ k-Color. Es sei F Boolescher Ausdruck in KNF mit F = F1 ∧. . .∧Fm
und Fi Klausel der Länge ≤ 3 und ohne Paare xj ¬xj in einer Klausel (diese Klauseln und Fi Klausel der Länge ≤ 3 und ohne Paare xj ¬xj in einer Klausel (diese Klauseln
@@ -786,8 +786,8 @@ Gegeben: Mengen U, V, W mit |U | = |V | = |W | und Teilmenge T ⊆ V × W × U .
Entscheide: Gibt es eine Teilmenge M ⊆ T mit |M | = |U | mit der Eigenschaft: Für jede Entscheide: Gibt es eine Teilmenge M ⊆ T mit |M | = |U | mit der Eigenschaft: Für jede
zwei unterschiedliche (v, w, u), (v 0 , w0 , u0 ) ∈ M gilt: u 6= u0 , v 6= v 0 und w 6= w0 ? zwei unterschiedliche (v, w, u), (v 0 , w0 , u0 ) ∈ M gilt: u 6= u0 , v 6= v 0 und w 6= w0 ?
Satz 6.30. Das 3-dimensionale Matchingproblem (3-dim. Matching) ist N P -vollständig. Satz 6.30. Das 3-dimensionale Matchingproblem (3-dim. Matching) ist NP-vollständig.
Beweis. (a) 3-dim. Matching ist in N P . Wähle als Zertifikat eine entsprechende Teil- Beweis. (a) 3-dim. Matching ist in NP . Wähle als Zertifikat eine entsprechende Teil-
menge M ⊆ T und teste die obigen Bedingungen. menge M ⊆ T und teste die obigen Bedingungen.
(b) SAT ≤ 3-dim. Matching. Es sei F ein Boolescher Ausdruck mit Variablen x1 , . . . , xn (b) SAT ≤ 3-dim. Matching. Es sei F ein Boolescher Ausdruck mit Variablen x1 , . . . , xn
und Klauseln C1 , . . . , Cm . Konstruiere Instanz (V, W, U, T ) mit: und Klauseln C1 , . . . , Cm . Konstruiere Instanz (V, W, U, T ) mit:
@@ -895,7 +895,7 @@ Entscheide:
j=1,...,m Sij = j=1,...,m Sij =
S. S.
Satz 6.31. Das Problem 3-Exact Cover ist N P -vollständig. Satz 6.31. Das Problem 3-Exact Cover ist NP-vollständig.
Beweis. Dies folgt, da jede Instanz von 3-dim Matching als eine Instanz von 3-Exact Beweis. Dies folgt, da jede Instanz von 3-dim Matching als eine Instanz von 3-Exact
Cover aufgefasst werden kann. Cover aufgefasst werden kann.
@@ -909,9 +909,9 @@ Entscheide: Gibt es eine Teilmenge S ⊆ {1, . . . , n} mit
j∈S cj = K? j∈S cj = K?
Satz 6.32. Das Problem SubSet Sum ist N P -vollständig. Satz 6.32. Das Problem SubSet Sum ist NP-vollständig.
Beweis. (a) SubSet Sum ∈ N P : Wähle als Zertifikat eine Teilmenge und teste ob Summe Beweis. (a) SubSet Sum ∈ NP : Wähle als Zertifikat eine Teilmenge und teste ob Summe
gleich K ist. gleich K ist.
(b) 3-Exact Cover ≤ SubSet Sum. Gegeben sei eine Familie von n Mengen der Kardi- (b) 3-Exact Cover ≤ SubSet Sum. Gegeben sei eine Familie von n Mengen der Kardi-
nalität 3 und Grundmenge U = {u1 , . . . , u3m }. Konstruiere Zahlen c1 , . . . , cn . nalität 3 und Grundmenge U = {u1 , . . . , u3m }. Konstruiere Zahlen c1 , . . . , cn .
@@ -955,8 +955,8 @@ Entscheide: Gibt es eine Teilmenge S ⊆ {1, . . . , n} mit
P Pn P Pn
j∈S cj = 1/2 j∈S cj = 1/2
Satz 6.33. Das Problem Partition ist N P -vollständig. Satz 6.33. Das Problem Partition ist NP-vollständig.
Beweis. (a) Partition ∈ N P (klar). Beweis. (a) Partition ∈ NP (klar).
(b) SubSet Sum ≤ Partition. Gegeben seien Zahlen c1 , . . . , cn , K. Setze N = nj=1 cj + (b) SubSet Sum ≤ Partition. Gegeben seien Zahlen c1 , . . . , cn , K. Setze N = nj=1 cj +
P P
1 und konstruiere die folgende Menge von (n + 2) Gegenständen: {1, . . . , P n} {b, c} 1 und konstruiere die folgende Menge von (n + 2) Gegenständen: {1, . . . , P n} {b, c}
@@ -1000,7 +1000,7 @@ Entscheide: Gibt es eine Teilmenge S ⊆
j∈S cj ≤ K und Gesamtprofit j∈S pj ≥ P ? j∈S cj ≤ K und Gesamtprofit j∈S pj ≥ P ?
P P
Satz 6.34. Das Rucksackproblem ist N P -vollständig. Satz 6.34. Das Rucksackproblem ist NP-vollständig.
Beweis. Spezialfall mit cj = pj für alle Gegenstände und P = K entspricht dem SubSet Beweis. Spezialfall mit cj = pj für alle Gegenstände und P = K entspricht dem SubSet
Sum Problem. Sum Problem.
@@ -1327,7 +1327,7 @@ einen Hamiltonkreis besitzt.
Übung 6.45. Die Eingabe des Problems SAT3 ist ein boolscher Ausdruck in KNF, für Übung 6.45. Die Eingabe des Problems SAT3 ist ein boolscher Ausdruck in KNF, für
den entschieden werden soll, ob es mindestens 3 erfüllende Belegungen für diese Formel den entschieden werden soll, ob es mindestens 3 erfüllende Belegungen für diese Formel
gibt. gibt.
Zeigen Sie, dass SAT3 N P -vollständig ist. Zeigen Sie, dass SAT3 NP-vollständig ist.
Übung 6.46. Eine NAE-k-SAT (Not-All-Equal) Formel hat folgende Form m i i Übung 6.46. Eine NAE-k-SAT (Not-All-Equal) Formel hat folgende Form m i i
V V
i=1 (z1 , . . . , zk ), i=1 (z1 , . . . , zk ),
@@ -1342,25 +1342,25 @@ Übung 6.47. Ein Independent Set in einem Graphen G = (V, E) ist eine Menge von
Knoten I, so dass für je zwei Knoten i, j ∈ I gilt, dass {i, j} 6∈ E. Für das Problem Knoten I, so dass für je zwei Knoten i, j ∈ I gilt, dass {i, j} 6∈ E. Für das Problem
Independent Set ist ein Graph G = (V, E) sowie eine Zahl k ∈ N gegeben und es soll Independent Set ist ein Graph G = (V, E) sowie eine Zahl k ∈ N gegeben und es soll
entschieden werden, ob es in G ein Independent Set mit k Knoten gibt. entschieden werden, ob es in G ein Independent Set mit k Knoten gibt.
Zeigen Sie, dass das Problem Independent Set N P -vollständig ist. Zeigen Sie, dass das Problem Independent Set NP-vollständig ist.
Übung 6.48. Ein Vertex Cover in einem Graphen G = (V, E) ist eine Menge von Übung 6.48. Ein Vertex Cover in einem Graphen G = (V, E) ist eine Menge von
Knoten C ⊆ V so dass für jede Kante {v, w} ∈ E gilt das v ∈ C oder w ∈ C. Für das Knoten C ⊆ V so dass für jede Kante {v, w} ∈ E gilt das v ∈ C oder w ∈ C. Für das
Problem Vertex Cover ist ein Graph G = (V, E) sowie eine Zahl k ∈ N gegeben und Problem Vertex Cover ist ein Graph G = (V, E) sowie eine Zahl k ∈ N gegeben und
es soll entschieden werden, ob es in G ein Vertex Cover mit k Knoten gibt. es soll entschieden werden, ob es in G ein Vertex Cover mit k Knoten gibt.
Zeigen Sie, dass das Problem Vertex Cover N P -vollständig ist. Zeigen Sie, dass das Problem Vertex Cover NP-vollständig ist.
Übung 6.49. In dem Problem Clique-Member ist ein Graph G = (V, E), ein Knoten Übung 6.49. In dem Problem Clique-Member ist ein Graph G = (V, E), ein Knoten
v ∈ V sowie eine Zahl k ∈ N gegeben und es soll entschieden werden, ob es eine Clique v ∈ V sowie eine Zahl k ∈ N gegeben und es soll entschieden werden, ob es eine Clique
mit k Knoten gibt, die den Knoten v enthält. mit k Knoten gibt, die den Knoten v enthält.
Zeigen Sie, dass Clique-Member N P -vollständig ist. Zeigen Sie, dass Clique-Member NP-vollständig ist.
Übung 6.50. In dem Problem Clique-Nomember ist ein Graph G = (V, E), ein Übung 6.50. In dem Problem Clique-Nomember ist ein Graph G = (V, E), ein
Knoten v ∈ V sowie eine Zahl k ∈ N gegeben und es soll entschieden werden, ob es eine Knoten v ∈ V sowie eine Zahl k ∈ N gegeben und es soll entschieden werden, ob es eine
Clique mit k Knoten gibt, die den Knoten v nicht enthält. Clique mit k Knoten gibt, die den Knoten v nicht enthält.
Zeigen Sie, dass Clique-Nomember N P -vollständig ist, indem Sie eine Reduktion Zeigen Sie, dass Clique-Nomember NP-vollständig ist, indem Sie eine Reduktion
von Clique auf Clique-Nomember angeben. von Clique auf Clique-Nomember angeben.
Übung 6.51. In dem Problem Z-Clique ist ein zusammenhängender Graph G = Übung 6.51. In dem Problem Z-Clique ist ein zusammenhängender Graph G =
(V, E) und eine Zahl k ∈ N gegeben und es soll entschieden werden, ob G eine Clique (V, E) und eine Zahl k ∈ N gegeben und es soll entschieden werden, ob G eine Clique
mit k Knoten enthält. mit k Knoten enthält.
Zeigen Sie, dass Z-Clique N P -vollständig ist. Zeigen Sie, dass Z-Clique NP-vollständig ist.
Übung 6.52. Zeigen Sie, dass das Partition Problem ebenfalls NP-schwer ist, wenn Übung 6.52. Zeigen Sie, dass das Partition Problem ebenfalls NP-schwer ist, wenn
eine Teilmenge A00 ⊆ A gesucht ist mit eine Teilmenge A00 ⊆ A gesucht ist mit
X X X X
@@ -1378,7 +1378,7 @@ Übung 6.53. Für das Problem Subset Sum Cardinality seien n ganze Zahlen
c1 , . . . , cn ∈ N>0 (wobei n gerade sei) sowie eine Zahl K ∈ N gegeben. Es c1 , . . . , cn ∈ N>0 (wobei n gerade sei) sowie eine Zahl K ∈ N gegeben. Es
P soll entschieden P soll entschieden
werden, ob es eine Teilmenge S ⊂ {1, . . . , n} gibt mit |S| = n/2 und i∈S ci = K. werden, ob es eine Teilmenge S ⊂ {1, . . . , n} gibt mit |S| = n/2 und i∈S ci = K.
Zeigen Sie, dass das Problem Subset Sum Cardinality N P -vollständig ist. Zeigen Sie, dass das Problem Subset Sum Cardinality NP-vollständig ist.
Übung 6.54. Eine Eingabe des Problems Even-Knapsack ist eine Menge von Items Übung 6.54. Eine Eingabe des Problems Even-Knapsack ist eine Menge von Items
I, sowie ein Rucksack mit gerader Größe B (d.h es gibt b ∈ N mit B = 2b), sowie I, sowie ein Rucksack mit gerader Größe B (d.h es gibt b ∈ N mit B = 2b), sowie
@@ -1387,7 +1387,7 @@ Das Entscheidungsproblem ist eine Teilmenge I 0 ⊆ I zu finden mit
i∈I 0 si ≤ B und i∈I 0 si ≤ B und
i∈I 0 pi ≥ P . i∈I 0 pi ≥ P .
P P
Zeigen Sie, dass Even-Knapsack N P -vollständig ist. Zeigen Sie, dass Even-Knapsack NP-vollständig ist.
Übung 6.55. Die Probleme Multiple-Choice-Knapsack (kurz MC-Knapsack) ist wie folgt Übung 6.55. Die Probleme Multiple-Choice-Knapsack (kurz MC-Knapsack) ist wie folgt
definiert: Gegeben sind endliche Mengen C1 , . . . Ck ⊆ N × N von Items, eine Kapazität definiert: Gegeben sind endliche Mengen C1 , . . . Ck ⊆ N × N von Items, eine Kapazität
@@ -1398,7 +1398,7 @@ gewählten Items gemeinsam
P den Zielprofit erfüllen ohne die Kapazität zu überschreiten, P den Zielprofit erfüllen ohne die Kapazität zu überschreiten,
d.h. i∈[k] pi ≥ P und i∈[k] wi ≤ B. d.h. i∈[k] pi ≥ P und i∈[k] wi ≤ B.
P P
Das Problem ist in N P . Zeigen Sie: MC-Knapsack ist N P -vollständig Das Problem ist in NP . Zeigen Sie: MC-Knapsack ist NP-vollständig
@@ -1407,8 +1407,8 @@ d.h. i∈[k] pi ≥ P und i∈[k] wi ≤ B.
7 Approximative Algorithmen 7 Approximative Algorithmen
Das letzte Kapitel hat uns Einblicke in die Schwierigkeit der polynomiellen Berechen- Das letzte Kapitel hat uns Einblicke in die Schwierigkeit der polynomiellen Berechen-
barkeit gegeben. Wir wissen nun insbesondere, dass es viele Probleme gibt, deren exakte barkeit gegeben. Wir wissen nun insbesondere, dass es viele Probleme gibt, deren exakte
Lösung eine große, nicht-polynomielle Laufzeit benötigt - es sei denn, es gilt P = N P . Lösung eine große, nicht-polynomielle Laufzeit benötigt - es sei denn, es gilt P = NP .
In Ermangelung einer Eingebung zu der Frage, ob P = N P oder P 6= N P gilt, hat sich In Ermangelung einer Eingebung zu der Frage, ob P = NP oder P 6= NP gilt, hat sich
die Disziplin der Approximativen Algorithmen entwickelt; anstatt eine exakte Lösung zu die Disziplin der Approximativen Algorithmen entwickelt; anstatt eine exakte Lösung zu
verlangen, lässt man die Berechnung geringfügig schlechterer Lösungen zu, welche sich verlangen, lässt man die Berechnung geringfügig schlechterer Lösungen zu, welche sich
aber deutlich schneller berechnen lassen. Die exakte Lösung wird in diesem Sinne nur aber deutlich schneller berechnen lassen. Die exakte Lösung wird in diesem Sinne nur
@@ -1509,7 +1509,7 @@ Königsberger Brückenproblem Knoten mit ungeradem Grad besitzt und es daher k
entsprechenden Rundweg gibt. entsprechenden Rundweg gibt.
Wir betrachten nun den folgenden Algorithmus: Wir betrachten nun den folgenden Algorithmus:
Algorithmus ∆T SP1 (V = {1,...,n}, D = (d(i,j)) ) Algorithmus ∆TSP1 (V = {1,...,n}, D = (d(i,j)) )
1 Berechne einen minimalen spannenden Baum T des Graphen 1 Berechne einen minimalen spannenden Baum T des Graphen
2 Kn mit Distanzen d(i, j); 2 Kn mit Distanzen d(i, j);
3 Konstruiere einen Multigraphen G aus T durch Verdoppeln 3 Konstruiere einen Multigraphen G aus T durch Verdoppeln
@@ -1568,7 +1568,7 @@ G durch Verdopplung der Kanten mit w(G) = 12; siehe folgendes Bild:
12; und durch die Abkürzungen (d.h. Überspringen der schon vorher besuchten Knoten) 12; und durch die Abkürzungen (d.h. Überspringen der schon vorher besuchten Knoten)
erhalten wir die Rundreise R = [C, A, E, B, D, C] mit Länge d(R) = 10. erhalten wir die Rundreise R = [C, A, E, B, D, C] mit Länge d(R) = 10.
Satz 7.8. Der Algorithmus ∆T SP1 hat eine multiplikative Güte 2; d.h. d(R) ≤ 2OP T (I), Satz 7.8. Der Algorithmus ∆TSP1 hat eine multiplikative Güte 2; d.h. d(R) ≤ 2OP T (I),
wobei OP T (I) die Länge einer minimalen Rundreise zu der Eingabe I mit V = {1, . . . , n} wobei OP T (I) die Länge einer minimalen Rundreise zu der Eingabe I mit V = {1, . . . , n}
und Distanzen D = (d(i, j)) ist. und Distanzen D = (d(i, j)) ist.
@@ -1599,7 +1599,7 @@ Beweis. Die Behauptung folgt aus den folgenden Ungleichungen:
Formal zeigt man die obige Ungleichung per Induktion nach t ≥ 1. Formal zeigt man die obige Ungleichung per Induktion nach t ≥ 1.
Bemerkung 7.9. Es gibt Beispiele für Eingaben I zu dem Traveling Salesman Problem Bemerkung 7.9. Es gibt Beispiele für Eingaben I zu dem Traveling Salesman Problem
mit OP T (I) = n, bei denen der Algorithmus ∆T SP1 eine Rundreise der Länge 2n 2 mit OP T (I) = n, bei denen der Algorithmus ∆TSP1 eine Rundreise der Länge 2n 2
berechnet. berechnet.
Beweis. Zur Beweisidee geben wir hier ein Beispiel mit n = 8 Knoten. Betrachte ei- Beweis. Zur Beweisidee geben wir hier ein Beispiel mit n = 8 Knoten. Betrachte ei-
@@ -1663,7 +1663,7 @@ Grad optimaler durch Kanten augmentieren. Hier hilft uns ein Matching mit minima
Gewicht. Man beachte, dass die Anzahl der Knoten mit ungeradem Grad gerade ist; Gewicht. Man beachte, dass die Anzahl der Knoten mit ungeradem Grad gerade ist;
siehe auch Lemma 5.4. siehe auch Lemma 5.4.
Algorithmus ∆T SP2 (V = {1,...,n}, D = (d(i,j)) ) Algorithmus ∆TSP2 (V = {1,...,n}, D = (d(i,j)) )
1 Berechne einen minimalen spannenden Baum T des 1 Berechne einen minimalen spannenden Baum T des
2 Graphen Kn mit Gewichten d(i, j); 2 Graphen Kn mit Gewichten d(i, j);
3 Bestimme die Menge X der Knoten in T, 3 Bestimme die Menge X der Knoten in T,
@@ -1685,7 +1685,7 @@ Algorithmus ∆T SP2 (V = {1,...,n}, D = (d(i,j)) )
12 Bestimme eine Rundreise R aus C durch Abkürzungen; 12 Bestimme eine Rundreise R aus C durch Abkürzungen;
13 return Rundreise R. 13 return Rundreise R.
Satz 7.13. (Christofides): Der Algorithmus ∆T SP2 hat eine multiplikative Güte 1.5; Satz 7.13. (Christofides): Der Algorithmus ∆TSP2 hat eine multiplikative Güte 1.5;
d.h. d(R) ≤ 1.5OP T (I). d.h. d(R) ≤ 1.5OP T (I).
Beweis. Es gilt d(C) = w(T ) + d(K) ≤ OP T (I) + d(K). Man zeige nun, dass d(K) ≤ Beweis. Es gilt d(C) = w(T ) + d(K) ≤ OP T (I) + d(K). Man zeige nun, dass d(K) ≤
@@ -1787,13 +1787,13 @@ induzierten Graphen H rechts mit einem perfektem Matching K und Gewicht w(K) = 3
Ein Eulerkreis in G ist C = [C, B, C, A, E, D, C] und nach den Abkürzungen erhalten Ein Eulerkreis in G ist C = [C, B, C, A, E, D, C] und nach den Abkürzungen erhalten
wir R = [C, B, A, E, D, C] mit Länge d(R) = 9. wir R = [C, B, A, E, D, C] mit Länge d(R) = 9.
Lemma 7.15. Es gibt Beispiele für Eingaben I zu dem Traveling Salesman Problem mit Lemma 7.15. Es gibt Beispiele für Eingaben I zu dem Traveling Salesman Problem mit
OP T (I) = n, bei denen der Algorithmus ∆T SP2 von Christofides eine Rundreise der OP T (I) = n, bei denen der Algorithmus ∆TSP2 von Christofides eine Rundreise der
Länge (n 1) + bn/2c berechnet. Länge (n 1) + bn/2c berechnet.
Beweis. zur Übung. Beweis. zur Übung.
7.2 Rucksackproblem 7.2 Rucksackproblem
Dass das Rucksackproblem N P -vollständig ist, haben wir schon am Ende des letzten Ka- Dass das Rucksackproblem NP-vollständig ist, haben wir schon am Ende des letzten Ka-
pitels gesehen. Hier wollen wir nun einige einfache Approximationsalgorithmen studieren. pitels gesehen. Hier wollen wir nun einige einfache Approximationsalgorithmen studieren.
Gegeben: Gegeben:
@@ -1866,11 +1866,11 @@ Algorithmus MGA(I = ((w0 , p0 ), . . . , (wn1 , pn1 ), B))
7 Approximative Algorithmen 7 Approximative Algorithmen
Es sei M GA(I) der Gesamtgewinn der durch Algorithmus M GA berechneten Lösung Es sei MGA(I) der Gesamtgewinn der durch Algorithmus MGA berechneten Lösung
S ⊆ {0, . . . , n 1} und OP T (I) der Gesamtgewinn einer optimalen Lösung zur Eingabe S ⊆ {0, . . . , n 1} und OP T (I) der Gesamtgewinn einer optimalen Lösung zur Eingabe
I. I.
Satz 7.18. Die Worst-Case Güte von Algorithmus M GA ist 2 (d.h. OP T (I)/M GA(I) ≤ Satz 7.18. Die Worst-Case Güte von Algorithmus MGA ist 2 (d.h. OP T (I)/MGA(I) ≤
2 für alle Eingaben I). 2 für alle Eingaben I).
Beweis. Betrachte relaxierte Version des Rucksackproblems, bei dem Gegenstände frak- Beweis. Betrachte relaxierte Version des Rucksackproblems, bei dem Gegenstände frak-
@@ -1938,18 +1938,18 @@ ist, dass der Algorithmus GA nicht nimmt, gilt
OP Tf (I) ≤ GA(I) + pk+1 . OP Tf (I) ≤ GA(I) + pk+1 .
Der Algorithmus M GA berechnet Lösung mit Wert GA(I) oder pmax ≥ pk+1 (bzw. sogar Der Algorithmus MGA berechnet Lösung mit Wert GA(I) oder pmax ≥ pk+1 (bzw. sogar
genauer mit Wert max{GA(I), pmax }). Daher gilt genauer mit Wert max{GA(I), pmax }). Daher gilt
OP T (I) ≤ OP Tf (I) ≤ GA(I) + pk+1 OP T (I) ≤ OP Tf (I) ≤ GA(I) + pk+1
≤ GA(I) + pmax ≤ 2 max{GA(I), pmax } ≤ GA(I) + pmax ≤ 2 max{GA(I), pmax }
= 2 · M GA(I) = 2 · MGA(I)
Bemerkung 7.19. (a) Der Algorithmus M GA läuft in Zeit O(n log n). Bemerkung 7.19. (a) Der Algorithmus MGA läuft in Zeit O(n log n).
(b) Durch eine Modifikation von M GA können wir auch einen approximativen Algo- (b) Durch eine Modifikation von MGA können wir auch einen approximativen Algo-
rithmus angeben mit Worst Case Güte 2, der in O(n) Zeit läuft. rithmus angeben mit Worst Case Güte 2, der in O(n) Zeit läuft.
Beweis. Wir verwenden als Idee zur Laufzeitverbesserung (b) hierzu den Median-Algorithmus Beweis. Wir verwenden als Idee zur Laufzeitverbesserung (b) hierzu den Median-Algorithmus

View File

@@ -12,12 +12,12 @@
Definition 1 (Vertex Cover (VC)). Für einen (ungerichteten) Graphen G = (V, E) ist ein Vertex 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 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 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 Für das VERTEX COVER 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. 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 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. 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- Für das FEEDBACK VERTEX SET 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 ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens
k in G existiert. k in G existiert.
@@ -34,8 +34,8 @@ k in G existiert.
Hausaufgabe 9.1 (Nichtdeterministischer Algorithmus für VC) (5 Punkte) 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 1. Finden Sie ein minimales Vertex Cover in Abbildung 1. Für ein Vertex Cover ist die
Orientierung der Kanten nicht relevant. Orientierung der Kanten nicht relevant.
2. Zeigen Sie V ERTEX C OVER ∈ NP, indem Sie einen nichtdeterministischen Algorithmus 2. Zeigen Sie VERTEX COVER ∈ NP, indem Sie einen nichtdeterministischen Algorithmus
angeben, der V ERTEX C OVER in Polynomialzeit löst. Begründen Sie die Korrektheit und angeben, der VERTEX COVER in Polynomialzeit löst. Begründen Sie die Korrektheit und
die Laufzeit von Ihrem Algorithmus. die Laufzeit von Ihrem Algorithmus.
Lösung. 1. Ein minimales Vertex Cover ist zum Beispiel { 3, 5, 6, 7, 8 }. Lösung. 1. Ein minimales Vertex Cover ist zum Beispiel { 3, 5, 6, 7, 8 }.
@@ -55,8 +55,8 @@ die Beschreibung und jeweils 1 Punkt für Korrektheit und Laufzeit.
Hausaufgabe 9.2 (Polynomieller Verifizierer für FVS) (5 Punkte) Hausaufgabe 9.2 (Polynomieller Verifizierer für FVS) (5 Punkte)
1. Finden Sie ein minimales Feedback Vertex Set in Abbildung 1. 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 2. Zeigen Sie FEEDBACK VERTEX SET ∈ NP, indem Sie einen polynomiellen Verifizierer
für F EEDBACK V ERTEX S ET angeben. Begründen Sie die Korrektheit und die Laufzeit für FEEDBACK VERTEX SET angeben. Begründen Sie die Korrektheit und die Laufzeit
von Ihrem Verifizierer. von Ihrem Verifizierer.
Lösung. 1. Ein minimales FVS ist zum Beispiel { 5, 6 }. Lösung. 1. Ein minimales FVS ist zum Beispiel { 5, 6 }.
@@ -110,7 +110,7 @@ der Algorithmus akzeptiert. Falls es kein Vertex Cover gibt, dann lehnt der Algo
Die Auswahl der Knoten und die Prüfung der Kanten läuft in polynomieller Zeit, also ist dies 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 ein polynomieller nichtdeterministischer Algorithmus, der VERTEX COVER löst und damit ist
V ERT EXCOV ER ∈ N P . VERT EXCOV ER ∈ NP .
Hausaufgabe 9.2 Hausaufgabe 9.2
@@ -144,7 +144,7 @@ von dem Verifizierer akzeptiert und sonst abgelehnt.
Die Prüfung der übergebenen Teilmenge und die Konstruktion des Graphen laufen in polyno- 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 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 polynomiell und verifiziert die Lösung für das FEEDBACK VERTEX SET in polynomieller
Zeit. Also gilt F EEDBACKV ERT EXSET ∈ N P . Zeit. Also gilt FEEDBACKV ERT EXSET ∈ NP .
@@ -163,27 +163,27 @@ Zeit. Also gilt F EEDBACKV ERT EXSET ∈ N P .
Definition 1 (Feedback Vertex Set (FVS)). Für einen gerichteten Graphen G = (V, E) ist ein 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. 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- Für das FEEDBACK VERTEX SET 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 ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens
k in G existiert. k in G existiert.
Hausaufgabe 10.1 (F EEDBACK V ERTEX S ET ist NP-vollständig) (5 Punkte) Hausaufgabe 10.1 (FEEDBACK VERTEX SET ist NP-vollständig) (5 Punkte)
Zeigen Sie, dass F EEDBACK V ERTEX S ET NP-vollständig ist. Zeigen Sie, dass FEEDBACK VERTEX SET NP-vollständig ist.
Hinweis: Reduzieren Sie V ERTEX C OVER auf F EEDBACK V ERTEX S ET. Wenn ein Vertex Cover Hinweis: Reduzieren Sie VERTEX COVER auf FEEDBACK VERTEX SET. Wenn ein Vertex Cover
aus einem Graphen entfernt wird, hat dieser keine Kanten mehr. 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 Lösung. FEEDBACK VERTEX SET ∈ 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 wir eine Reduktion von VERTEX COVER auf FEEDBACK VERTEX SET. Betrachte die folgende
Reduktion: Reduktion:
Für eine gegebene V ERTEX C OVER Instanz (G = (V, E), k) erzeuge den Graphen G = (V, E ) Für eine gegebene VERTEX COVER 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. mit E := { (u, v), (v, u) | {u, v} ∈ E }. Gebe (G , k) als FEEDBACK VERTEX SET Instanz aus.
Korrektheit: Korrektheit:
⇒ (Falls (G, k) eine Ja-Instanz von V ERTEX C OVER ist, dann ist (G , k) eine Ja-Instanz von ⇒ (Falls (G, k) eine Ja-Instanz von VERTEX COVER ist, dann ist (G , k) eine Ja-Instanz von
F EEDBACK V ERTEX S ET.): FEEDBACK VERTEX SET.):
Sei C ⊆ V ein Vertex Cover mit Größe kleiner oder gleich k. Dann enthält G \C keine Kanten. 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. 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 ⇐ (Falls (G , k) eine Ja-Instanz von FEEDBACK VERTEX SET ist, dann ist (G, k) eine Ja-Instanz
von V ERTEX C OVER.): von VERTEX COVER.):
Sei X ⊆ V ein Feedback Vertex Set mit Größe kleiner oder gleich k. Dann ist X ein Vertex 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 ∈ Cover in G, da ansonsten eine Kante {u, v} ∈ E existiert, für die u ∈
/ X ∧v ∈ / X ∧v ∈
@@ -191,9 +191,9 @@ Cover in G, da ansonsten eine Kante {u, v} ∈ E existiert, für die u ∈
aber (u, v, u) ein Kreis in G und X somit kein Feedback Vertex Set. 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- 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. 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. Also existiert eine polynomielle Reduktion von VERTEX COVER auf FEEDBACK VERTEX SET.
Da V ERTEX C OVER nach den aktuellen Präsenzaufgaben NP-vollständig ist und Da VERTEX COVER 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. FEEDBACK VERTEX SET ∈ NP gilt, ist somit FEEDBACK VERTEX SET NP-vollständig.
Bewertung 2 Punkte für die Konstruktion, 1 Punkt für den 1. Fall, 1 Punkt für den 2. Fall, 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 0.5 Punkte für die Laufzeit, 0.5 Punkte für die Beweisführung im Ganzen
@@ -256,11 +256,11 @@ Teil 1: FeedbackVertexSet ∈ NP
• Akzeptieren, wenn die Tiefensuche nichts findet • Akzeptieren, wenn die Tiefensuche nichts findet
Die Schritte 1-4 laufen in polynomieller Zeit, somit läuft der Verifizierer in polynomieller Die Schritte 1-4 laufen in polynomieller Zeit, somit läuft der Verifizierer in polynomieller
Zeit. Damit ist F eedbackV ertexSet ∈ N P . Zeit. Damit ist F eedbackV ertexSet ∈ NP .
Teil 2: FeedbackVertexSet ist NP-schwer Teil 2: FeedbackVertexSet ist NP-schwer
Jetzt brauchen wir eine Reduktion von VertexCover auf FeedbackVertexSet, um zu zeigen, Jetzt brauchen wir eine Reduktion von VertexCover auf FeedbackVertexSet, um zu zeigen,
dass F eedbackV ertexSet N P Schwer ist. dass F eedbackV ertexSet NP Schwer ist.
Konstruktion: Sei dafür ein VertexCover gegeben mit einem Graphen G und einer Zahl k. 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 Aus G wird ein G , wobei jede ungerichtete Kante {u, v} ∈ E durch zwei gerichteten Kanten
@@ -297,7 +297,7 @@ Aus G wird ein G , wobei jede ungerichtete Kante {u, v} ∈ E durch zwei geri
• Das ist ein Widerspruch, somit ist G \ X kreisfrei und X ist ein VertexCover • 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- Da F eedbackV ertexSet ∈ NP und NP schwer ist, folgt dass F eedbackV ertexSet NP-
Vollständig ist. □ Vollständig ist. □
@@ -339,7 +339,7 @@ O(n) Schritte und das mit O(n) Durchläufen.
Blatt 11 Blatt 11
Definition 1 (Dreiecksüberdeckung eines Graphen (∆ C OVER)). Gegeben ist ein endlicher un- Definition 1 (Dreiecksüberdeckung eines Graphen (∆ COVER)). Gegeben ist ein endlicher un-
gerichteter Graph G = (V, E) und eine Zahl k ∈ N. Dieser Graph hat eine Dreiecksüberdeckung, 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- 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, eck) D = (VD , ED ) ⊆ (V, E) mit |VD | = 3 und ED = { {v1 , v2 } ∈ VD ×VD | v1 ̸= v2 } von G gilt,
@@ -348,11 +348,11 @@ v ∈ C∆ für mindestens ein v ∈ VD .
Hausaufgabe 11.1 (10 Punkte) Hausaufgabe 11.1 (10 Punkte)
(a) (1 Punkt) Markieren Sie im folgenden Graphen (Abbildung 1 (a)) ein V ERTEX C OVER (a) (1 Punkt) Markieren Sie im folgenden Graphen (Abbildung 1 (a)) ein VERTEX COVER
der Größe 5. der Größe 5.
(b) (1 Punkt) Markieren Sie im folgenden Graphen (Abbildung 1 (b)) eine Dreiecksüberde- (b) (1 Punkt) Markieren Sie im folgenden Graphen (Abbildung 1 (b)) eine Dreiecksüberde-
ckung der Größe 5. ckung der Größe 5.
(c) (8 Punkte) Zeigen Sie, dass ∆ C OVER NP-vollständig ist. (c) (8 Punkte) Zeigen Sie, dass ∆ COVER NP-vollständig ist.
@@ -368,7 +368,7 @@ Lösung.
Abbildung 2: Beispielgraph Lösung Abbildung 2: Beispielgraph Lösung
(c) Wir zeigen zunächst, ∆ C OVER ∈ NP mittels eines polynomiellen Verifizierers. (c) Wir zeigen zunächst, ∆ COVER ∈ NP mittels eines polynomiellen Verifizierers.
Der polynomielle Verifizierer erhält als Zertifikat eine Menge von Knoten C∆ ⊆ V . Zunächst 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 ü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 } für alle Teilgraphen D = (VD , ED ) ⊆ (V, E) mit |VD | = 3 und ED = { {v1 , v2 } ∈ VD ×VD | v1 ̸= v2 }
@@ -382,14 +382,14 @@ Lösung.
daher überprüft werden müssen. Die Überprüfung geht in O(|V |) Zeit. Da alle anderen Schritte 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 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. von O(|V |4 ), was einer polynomiellen Laufzeit entspricht.
Also gilt ∆ C OVER ∈ NP. Also gilt ∆ COVER ∈ NP.
Nun reduzieren wir V ERTEX C OVER auf ∆ C OVER. Betrachte folgende Reduktion: Nun reduzieren wir VERTEX COVER auf ∆ COVER. Betrachte folgende Reduktion:
Sei I = (G = (V, E), k) eine Instanz von V ERTEX C OVER. Bilde den Graphen G = (V , E ) mit Sei I = (G = (V, E), k) eine Instanz von VERTEX COVER. 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) 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. als ∆ COVER Instanz aus.
Korrektheit: Korrektheit:
⇒ (Falls (G, k) eine Ja-Instanz von V ERTEX C OVER ist, dann ist (G , k) eine Ja-Instanz von ∆ ⇒ (Falls (G, k) eine Ja-Instanz von VERTEX COVER ist, dann ist (G , k) eine Ja-Instanz von ∆
C OVER.): COVER.):
Sei C ein Vertex Cover mit Größe kleiner oder gleich k von G. Dann ist C ebenfalls eine Drei- 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 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 Cover von G ist, gilt für jede Kante {u, v} ∈ E, dass u ∈ C oder v ∈ C. Für alle Teilgraphen
@@ -399,8 +399,8 @@ Lösung.
{ ve | e ∈ E } und die entsprechenden Kanten { e, {ve , e1 }, {ve , e2 } | e = {e1 , e2 } ∈ E } entste- { 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 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. 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 - ⇐ (Falls (G , k) eine Ja-Instanz von ∆ COVER ist, dann ist (G, k) eine Ja-Instanz von VERTEX -
C OVER.): COVER.):
Sei C∆ eine Dreiecksüberdeckung von G der Größe |C∆ | ≤ k. Ohne Beschränkung der All- 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, 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- können wir e1 zu C∆ hinzufügen und ve aus C∆ löschen. Dadurch bleibt die Überdeckungseigen-
@@ -412,9 +412,9 @@ auch für die Dreiecke {ve , e1 , e2 }. Da außerdem C∆ ⊆ V gilt, gilt e1
Kanten e ∈ E. Kanten e ∈ E.
Laufzeit: Das Hinzufügen von einem neuen Knoten und zwei neuen Kanten pro Kante geht in 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. 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 - Also existiert eine polynomielle Reduktion von VERTEX COVER auf ∆ COVER. Da VERTEX -
C OVER NP-vollständig aus den Präsenzaufgaben bekannt ist und ∆ C OVER ∈ NP gilt, ist somit COVER NP-vollständig aus den Präsenzaufgaben bekannt ist und ∆ COVER ∈ NP gilt, ist somit
∆ C OVER NP-vollständig. ∆ COVER NP-vollständig.
Bewertung (a) und (b) jeweils 1 Punkt, (c) gibt 8 Punkte: 1 Punkt Angabe Verifizierer/NDTM, Bewertung (a) und (b) jeweils 1 Punkt, (c) gibt 8 Punkte: 1 Punkt Angabe Verifizierer/NDTM,
@@ -534,85 +534,85 @@ Kanten Dreiecke.
Blatt 12 Blatt 12
Hausaufgabe 12.1 (Lower Bound: V ERTEX C OVER) (5 Punkte) Hausaufgabe 12.1 (Lower Bound: VERTEX COVER) (5 Punkte)
Betrachten Sie die Reduktion aus der Musterlösung zu Präsenzserie 10 von C LIQUE auf V ER - Betrachten Sie die Reduktion aus der Musterlösung zu Präsenzserie 10 von CLIQUE auf VER -
TEX C OVER . TEX COVER .
1. Geben Sie die Anzahl der Knoten, die Anzahl der Kanten und den Wert k für die re- 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 sultierende VERTEX COVER Instanz in Abhängigkeit von der originalen CLIQUE Instanz
an. an.
2. Zeigen Sie Lower Bounds für V ERTEX C OVER bezüglich Anzahl der Knoten, Anzahl 2. Zeigen Sie Lower Bounds für VERTEX COVER bezüglich Anzahl der Knoten, Anzahl
der Kanten und k basierend auf der ETH und der Reduktion aus der Musterlösung zu der Kanten und k basierend auf der ETH und der Reduktion aus der Musterlösung zu
Präsenzserie 10. Präsenzserie 10.
Lösung. 1. Sei I = (G = (V, E), k) eine Instanz von C LIQUE und I = (G = (V , E ), k ) die Lösung. 1. Sei I = (G = (V, E), k) eine Instanz von CLIQUE und I = (G = (V , E ), k ) die
aus der Reduktion resultierende Instanz von V ERTEX C OVER. Es gilt |V | = |V |, |E | = aus der Reduktion resultierende Instanz von VERTEX COVER. Es gilt |V | = |V |, |E | =
1 2 1 2
2 |V |(|V | 1) |E| ≤ |V | und k = |V | k ≤ |V |. 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) 2. • Angenommen es gäbe einen Algorithmus, der VERTEX COVER in 2o(|V |) · |I|O(1)
löst. Durch die Kombination der Reduktion von C LIQUE auf V ERTEX C OVER und löst. Durch die Kombination der Reduktion von CLIQUE auf VERTEX COVER und
diesem Algorithmus, existiert dann auch ein 2o(|V |) ·|I|O(1) Algorithmus für C LIQUE, diesem Algorithmus, existiert dann auch ein 2o(|V |) ·|I|O(1) Algorithmus für CLIQUE,
da |V | = |V | nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt da |V | = |V | nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt
somit, dass die ETH falsch ist. somit, dass die ETH falsch ist.
Damit kann es so einen Algorithmus für V ERTEX C OVER nur geben, wenn die ETH Damit kann es so einen Algorithmus für VERTEX COVER nur geben, wenn die ETH
falsch ist. falsch ist.
• Angenommen es gäbe einen Algorithmus, der V ERTEX C OVER in 2o( |E |) · |I|O(1) • Angenommen es gäbe einen Algorithmus, der VERTEX COVER in 2o( |E |) · |I|O(1)
löst. Durch die Kombination der Reduktion von C LIQUE auf V ERTEX C OVER und löst. Durch die Kombination der Reduktion von CLIQUE auf VERTEX COVER und
diesem Algorithmus, existiert dann auch ein 2o(|V |) ·|I|O(1) Algorithmus für C LIQUE, diesem Algorithmus, existiert dann auch ein 2o(|V |) ·|I|O(1) Algorithmus für CLIQUE,
da |E | ≤ |V |2 nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt da |E | ≤ |V |2 nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt
somit, dass die ETH falsch ist. somit, dass die ETH falsch ist.
Damit kann es so einen Algorithmus für V ERTEX C OVER nur geben, wenn die ETH Damit kann es so einen Algorithmus für VERTEX COVER nur geben, wenn die ETH
falsch ist. falsch ist.
• Angenommen es gäbe einen Algorithmus, der V ERTEX C OVER in 2o(k ) · |I|O(1) löst. • Angenommen es gäbe einen Algorithmus, der VERTEX COVER in 2o(k ) · |I|O(1) löst.
Durch die Kombination der Reduktion von C LIQUE auf V ERTEX C OVER und die- Durch die Kombination der Reduktion von CLIQUE auf VERTEX COVER und die-
sem Algorithmus, existiert dann auch ein 2o(|V |) · |I|O(1) Algorithmus für C LIQUE, sem Algorithmus, existiert dann auch ein 2o(|V |) · |I|O(1) Algorithmus für CLIQUE,
da k ≤ |V | nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt da k ≤ |V | nach Aufgabenteil 1. Aus der Musterlösung der Präsenzserie 12 folgt
somit, dass die ETH falsch ist. somit, dass die ETH falsch ist.
Damit kann es so einen Algorithmus für V ERTEX C OVER nur geben, wenn die ETH Damit kann es so einen Algorithmus für VERTEX COVER nur geben, wenn die ETH
falsch ist. falsch ist.
Bewertung 1 Punkt für den ersten Teil und 1.5 + 1.5 + 1 für den zweiten. 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- Definition 1 (HITTING SET). 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 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]? und S ∩ Fi ̸= 0/ für alle i ∈ [r]?
Anschaulicher wird bei diesem Problem nach maximal k Elementen aus dem Universum ge- Anschaulicher wird bei diesem Problem nach maximal k Elementen aus dem Universum ge-
fragt, sodass diese Elemente alle gegebenen Mengen Fi „treffen“. fragt, sodass diese Elemente alle gegebenen Mengen Fi „treffen“.
Hausaufgabe 12.2 (Lower Bound: H ITTING S ET) (5 Punkte) Hausaufgabe 12.2 (Lower Bound: HITTING SET) (5 Punkte)
Betrachten Sie folgende Reduktion von 3-SAT auf H ITTING S ET. Betrachten Sie folgende Reduktion von 3-SAT auf HITTING SET.
Für eine gegebene 3-SAT Instanz I mit n Variablen x1 , . . . , xn und m Klauseln C1 , . . . ,Cm : Als 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 := 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 { 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. und erhalten damit eine HITTING SET Instanz I.
1. Geben Sie die Größe des Universums, die Anzahl der Mengen und die Zahl k aus der 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 resultierenden HITTING SET Instanz in Abhängigkeit von der Anzahl der Variablen n und
der Anzahl der Klauseln m aus der originalen 3-SAT Instanz an. 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 2. Beweisen Sie Lower Bounds für HITTING SET bezüglich Universumsgröße, Anzahl der
Mengen und der Zahl k basierend auf der obigen Reduktion und der ETH. 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 = 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. 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. 2. • Angenommen es gäbe einen Algorithmus, der HITTING SET in 2o(|U|) · |I|O(1) löst.
Durch die Kombination der Reduktion von 3-SAT auf H ITTING S ET und diesem Durch die Kombination der Reduktion von 3-SAT auf HITTING SET und diesem
Algorithmus, existiert dann auch ein 2o(n) · |I|O(1) Algorithmus für 3-SAT, da |U| = 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. 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 Damit kann es so einen Algorithmus für HITTING SET nur geben, wenn die ETH
falsch ist. falsch ist.
• Angenommen es gäbe einen Algorithmus, der H ITTING S ET in 2o(r) · |I|O(1) löst. • Angenommen es gäbe einen Algorithmus, der HITTING SET in 2o(r) · |I|O(1) löst.
Durch die Kombination der Reduktion von 3-SAT auf H ITTING S ET und diesem Durch die Kombination der Reduktion von 3-SAT auf HITTING SET und diesem
Algorithmus, existiert dann auch ein 2o(m) · |I|O(1) Algorithmus für 3-SAT, da r = 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 n + m nach Aufgabenteil 1 und n ≤ 3m für 3-SAT gilt. Aus dem Sparsification
Lemma folgt damit, dass die ETH falsch ist. 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 Damit kann es so einen Algorithmus für HITTING SET nur geben, wenn die ETH
falsch ist. falsch ist.
• Angenommen es gäbe einen Algorithmus, der H ITTING S ET in 2o(k) · |I|O(1) löst. • Angenommen es gäbe einen Algorithmus, der HITTING SET in 2o(k) · |I|O(1) löst.
Durch die Kombination der Reduktion von 3-SAT auf H ITTING S ET und diesem Durch die Kombination der Reduktion von 3-SAT auf HITTING SET und diesem
Algorithmus, existiert dann auch ein 2o(n) · |I|O(1) Algorithmus für 3-SAT, da k = n 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. 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 Damit kann es so einen Algorithmus für HITTING SET nur geben, wenn die ETH
falsch ist. falsch ist.
@@ -695,11 +695,11 @@ blen steht. Somit kann HittingSet nicht schneller sein.
Blatt 13 Blatt 13
Definition 1 (M AX -3-S AT). Bei dem Problem M AX -3-S AT ist eine Formel φ in konjunktiver Definition 1 (MAX -3-SAT). Bei dem Problem MAX -3-SAT ist eine Formel φ in konjunktiver
Normalform gegeben, wobei jede Klausel 3 Literale enthält. Gesucht ist eine Belegung β der Normalform gegeben, wobei jede Klausel 3 Literale enthält. Gesucht ist eine Belegung β der
Variablen, die die Anzahl v(β ) der erfüllten Klauseln maximiert. Variablen, die die Anzahl v(β ) der erfüllten Klauseln maximiert.
Hausaufgabe 13.1 (M AX -3-S AT) (10 Punkte) Hausaufgabe 13.1 (MAX -3-SAT) (10 Punkte)
Betrachten Sie folgenden Algorithmus A: Betrachten Sie folgenden Algorithmus A:
• Sei β0 die Belegung, die alle Variablen auf false setzt. • Sei β0 die Belegung, die alle Variablen auf false setzt.
• Sei β1 die Belegung, die alle Variablen auf true setzt. • Sei β1 die Belegung, die alle Variablen auf true setzt.

View File

@@ -25,7 +25,7 @@
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 1 von 12 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 1 von 12
Aufgabe 1 KOMPLEXITÄT: A NWENDUNG LPT (4+2+2+2 Punkte) Aufgabe 1 KOMPLEXITÄT: ANWENDUNG LPT (4+2+2+2 Punkte)
Gegeben ist folgende Scheduling Instanz: Gegeben ist folgende Scheduling Instanz:
Jj J1 J2 J3 J4 J5 J6 J7 Jj J1 J2 J3 J4 J5 J6 J7
m=3 m=3
@@ -68,7 +68,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 3 von 12 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 3 von 12
Aufgabe 2 KOMPLEXITÄT: B EWEIS : K -C LIQUE (10 Punkte) Aufgabe 2 KOMPLEXITÄT: BEWEIS : K -CLIQUE (10 Punkte)
Beweisen Sie folgende Aussage aus der Vorlesung: Beweisen Sie folgende Aussage aus der Vorlesung:
SAT ≤ k-Clique. SAT ≤ k-Clique.
Hinweis: NICHT 3-SAT, sondern allgemeines SAT! Hinweis: NICHT 3-SAT, sondern allgemeines SAT!
@@ -103,9 +103,9 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 6 von 12 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 6 von 12
Aufgabe 4 KOMPLEXITÄT: A PPROXIMATIVE A LGORITHMEN (3+7 Punkte) Aufgabe 4 KOMPLEXITÄT: APPROXIMATIVE ALGORITHMEN (3+7 Punkte)
Wir betrachten folgendes Problem: Wir betrachten folgendes Problem:
Problem: A PPROXIMATE S UBSET S UM Problem: APPROXIMATE SUBSET SUM
Eingabe: n ganze Zahlen a1 , . . . an und ein Zielwert T . Es gilt ai ≤ T ∀i ∈ [n] sowie ∑i∈[n] ai > Eingabe: n ganze Zahlen a1 , . . . an und ein Zielwert T . Es gilt ai ≤ T ∀i ∈ [n] sowie ∑i∈[n] ai >
T. T.
Ziel: Wähle Zahlenmenge S ⊆ {1, . . . n} mit ∑ j∈S a j ≤ T und maximiere ∑ j∈S a j . Ziel: Wähle Zahlenmenge S ⊆ {1, . . . n} mit ∑ j∈S a j ≤ T und maximiere ∑ j∈S a j .
@@ -214,7 +214,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 10 von 12 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 10 von 12
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 11 von 12 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 11 von 12
Aufgabe 6 B ONUSAUFGABE (10 Punkte) Aufgabe 6 BONUSAUFGABE (10 Punkte)
Beweisen oder widerlegen Sie folgende Aussage: Beweisen oder widerlegen Sie folgende Aussage:
Wenn die ETH fehlschlägt gilt P = NP. Wenn die ETH fehlschlägt gilt P = NP.
@@ -251,7 +251,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 1 von 16 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 1 von 16
Aufgabe 1 ∆T SP1 (6+2+2 Punkte) Aufgabe 1 ∆TSP1 (6+2+2 Punkte)
Gegeben sei folgender Graph G = (V, E), bei dem die Kantengewichte jeweils an der nach außen Gegeben sei folgender Graph G = (V, E), bei dem die Kantengewichte jeweils an der nach außen
gerichteten Seite der Kante stehen: gerichteten Seite der Kante stehen:
@@ -268,20 +268,20 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
d c d c
2 2
a) Wenden Sie den Algorithmus ∆T SP1 auf den Graphen G beginnend bei a an. Geben Sie dabei a) Wenden Sie den Algorithmus ∆TSP1 auf den Graphen G beginnend bei a an. Geben Sie dabei
die Ergebnisse jedes Zwischenschrittes des Algorithmus an. die Ergebnisse jedes Zwischenschrittes des Algorithmus an.
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 2 von 16 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 2 von 16
b) Beschreiben Sie, was der Algorithmus ∆T SP1 berechnet und geben Sie die Bedingungen an, b) Beschreiben Sie, was der Algorithmus ∆TSP1 berechnet und geben Sie die Bedingungen an,
die an den Graphen gestellt sind, damit der Algorithmus eine korrekte Lösung berechnet. die an den Graphen gestellt sind, damit der Algorithmus eine korrekte Lösung berechnet.
c) Begründen Sie, warum der Algorithmus ∆T SP1 eine approximative Güte von 2 besitzt. c) Begründen Sie, warum der Algorithmus ∆TSP1 eine approximative Güte von 2 besitzt.
@@ -326,11 +326,11 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 7 von 16 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 7 von 16
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 8 von 16 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 8 von 16
Aufgabe 4 KOMPLEXITÄT: A PPROXIMATIVE A LGORITHMEN (10+(10) Punkte) Aufgabe 4 KOMPLEXITÄT: APPROXIMATIVE ALGORITHMEN (10+(10) Punkte)
Wir betrachten das aus der Vorlesung bekannte Makespan Scheduling Problem P||Cmax . Dazu ist Wir betrachten das aus der Vorlesung bekannte Makespan Scheduling Problem P||Cmax . Dazu ist
folgender Algorithmus gegeben: folgender Algorithmus gegeben:
Algorithmus ROUND ROBIN S CHEDULING(I=(J,m)) Algorithmus ROUND ROBIN SCHEDULING(I=(J,m))
1 sortiere die Jobs in J so, dass p1 ≥ p2 ≥ · · · ≥ pn gilt; 1 sortiere die Jobs in J so, dass p1 ≥ p2 ≥ · · · ≥ pn gilt;
2 setze B1 = · · · = Bm = 0; 2 setze B1 = · · · = Bm = 0;
@@ -509,27 +509,27 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 3 von 11 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 3 von 11
Aufgabe 2 L ONGEST PATH (3+3+4 Punkte) Aufgabe 2 LONGEST PATH (3+3+4 Punkte)
Betrachten Sie das folgende Problem: Betrachten Sie das folgende Problem:
Problem: L ONGEST PATH Problem: LONGEST PATH
Eingabe: Eine ungerichteter Graph G = (V, E) und eine Zahl k. Eingabe: Eine ungerichteter Graph G = (V, E) und eine Zahl k.
Entscheide: Gibt es einen Pfad in G, der mindestens Länge k hat? Entscheide: Gibt es einen Pfad in G, der mindestens Länge k hat?
Zeigen Sie auf verschiedene Weisen, dass das Problem in NP liegt: Zeigen Sie auf verschiedene Weisen, dass das Problem in NP liegt:
a) Geben Sie ein Zertifikat für L ONGEST PATH an. a) Geben Sie ein Zertifikat für LONGEST PATH an.
b) Beschreiben Sie einen Verifizierer für L ONGEST PATH und geben Sie dessen Laufzeit konkret b) Beschreiben Sie einen Verifizierer für LONGEST PATH und geben Sie dessen Laufzeit konkret
an. an.
c) Beschreiben Sie eine nicht-deterministische Turing-Maschine (in Worten), die L ONGEST PATH c) Beschreiben Sie eine nicht-deterministische Turing-Maschine (in Worten), die LONGEST PATH
löst. Geben Sie auch hier die Laufzeit konkret an. löst. Geben Sie auch hier die Laufzeit konkret an.
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 4 von 11 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 4 von 11
Aufgabe 3 A PPROXIMATIVE A LGORITHMEN (6+4 Punkte) Aufgabe 3 APPROXIMATIVE ALGORITHMEN (6+4 Punkte)
Das Problem M AX -3-S AT sei folgendermaßen definiert: Das Problem MAX -3-SAT sei folgendermaßen definiert:
Problem: M AX -3-S AT Problem: MAX -3-SAT
Eingabe: Eine Formel φ in konjunktiver Normalform, wobei jede Klausel drei Literale enthält. Eingabe: Eine Formel φ in konjunktiver Normalform, wobei jede Klausel drei Literale enthält.
Ausgabe: Eine Belegung β der Variablen, die die Anzahl v(β ) der erfüllten Klauseln maximiert. Ausgabe: Eine Belegung β der Variablen, die die Anzahl v(β ) der erfüllten Klauseln maximiert.
@@ -550,16 +550,16 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 5 von 11 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 5 von 11
Aufgabe 4 B EWEIS ZUR VORLESUNG (10 Punkte) Aufgabe 4 BEWEIS ZUR VORLESUNG (10 Punkte)
Betrachten Sie folgendes Problem aus der Vorlesung: Betrachten Sie folgendes Problem aus der Vorlesung:
Problem: k-C LIQUE Problem: k-CLIQUE
Eingabe: Ein ungerichteter Graph G = (V, E) und eine Zahl k ≥ 1. Eine Clique ist eine Teil- Eingabe: Ein ungerichteter Graph G = (V, E) und eine Zahl k ≥ 1. Eine Clique ist eine Teil-
menge C ⊆ V mit {u, v} ∈ E für alle u, v ∈ C mit u ̸= v. menge C ⊆ V mit {u, v} ∈ E für alle u, v ∈ C mit u ̸= v.
Entscheide: Hat der gegebene Graph G eine Clique C ⊆ V mit mindestens k Knoten (d.h. mit Entscheide: Hat der gegebene Graph G eine Clique C ⊆ V mit mindestens k Knoten (d.h. mit
|C| ≥ k)? |C| ≥ k)?
Beweisen Sie: Das Problem k-C LIQUE ist NP-vollständig. Beweisen Sie: Das Problem k-CLIQUE ist NP-vollständig.
@@ -568,9 +568,9 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Aufgabe 5 NP UND NP-VOLLSTÄNDIGKEIT (4+4+7 Punkte) Aufgabe 5 NP UND NP-VOLLSTÄNDIGKEIT (4+4+7 Punkte)
a) Beweisen Sie die NP-Vollständigkeit von S UBSET S UM, bei der jede Itemgröße jeweils durch a) Beweisen Sie die NP-Vollständigkeit von SUBSET SUM, bei der jede Itemgröße jeweils durch
3 oder durch 7 teilbar ist. 3 oder durch 7 teilbar ist.
b) Beweisen Sie die NP-Vollständigkeit von 3-C OLOR, wobei jeder Knoten im Graph mindes- b) Beweisen Sie die NP-Vollständigkeit von 3-COLOR, wobei jeder Knoten im Graph mindes-
tens Grad 3 hat. tens Grad 3 hat.
c) Zeigen Sie: Für kein α > 1 gibt es einen approximativen Algorithmus mit Güte α (d.h. mit c) Zeigen Sie: Für kein α > 1 gibt es einen approximativen Algorithmus mit Güte α (d.h. mit
Zielfunktionswert ≤ α · OPT) für TSP, außer P = NP (Denken Sie an Wiliam Rowan Hamil- Zielfunktionswert ≤ α · OPT) für TSP, außer P = NP (Denken Sie an Wiliam Rowan Hamil-
@@ -581,23 +581,23 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 7 von 11 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 7 von 11
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 8 von 11 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 8 von 11
Aufgabe 6 U NTERE S CHRANKEN UND ETH (7+8 Punkte) Aufgabe 6 UNTERE SCHRANKEN UND ETH (7+8 Punkte)
Betrachten Sie folgende Reduktionen: Betrachten Sie folgende Reduktionen:
Problem: H ITTING S ET Problem: HITTING SET
Eingabe: Eine Menge U sowie r Teilmengen F1 , . . . , Fr ⊆ U und eine Zahl k. Eingabe: Eine Menge U sowie r Teilmengen F1 , . . . , Fr ⊆ U und eine Zahl k.
Entscheide: Gibt es eine Menge S ⊆ U mit |S| ≤ k und S ∩ Fi ̸= 0/ für alle i ∈ [r]? Entscheide: Gibt es eine Menge S ⊆ U mit |S| ≤ k und S ∩ Fi ̸= 0/ für alle i ∈ [r]?
a) 3-SAT ⪯ H ITTING S ET: Seien v1 , . . . , vn die Variablen der Formel und C1 , . . . ,Cm die Klau- a) 3-SAT ⪯ HITTING SET: Seien v1 , . . . , vn die Variablen der Formel und C1 , . . . ,Cm die Klau-
seln. Setze U = { v1 , v1 , . . . , vn , vn } und k = n. Für jede Variable vi definiere eine Menge seln. Setze U = { v1 , v1 , . . . , vn , vn } und k = n. Für jede Variable vi definiere eine Menge
Fi = {vi , vi } und für jede Klausel C j definiere eine Menge Fn+ j = C j Fi = {vi , vi } und für jede Klausel C j definiere eine Menge Fn+ j = C j
Welche unteren Schranken ergeben sich durch obige Reduktion für die Laufzeit von Algorith- Welche unteren Schranken ergeben sich durch obige Reduktion für die Laufzeit von Algorith-
men für H ITTING S ET unter Annahme der ETH in Abhängigkeit von men für HITTING SET unter Annahme der ETH in Abhängigkeit von
(i) r? (i) r?
(ii) |U|? (ii) |U|?
Beweisen Sie die entsprechenden unteren Schranken! Beweisen Sie die entsprechenden unteren Schranken!
Hinweis: Sie dürfen wie in den Hausaufgaben zur ETH Faktoren, die polynomiell in der Hinweis: Sie dürfen wie in den Hausaufgaben zur ETH Faktoren, die polynomiell in der
Eingabekodierung sind, vernachlässigen. Eingabekodierung sind, vernachlässigen.
b) 3-S AT ⪯ S UBSET S UM: Seien v1 , . . . , vn die Variablen der Formel und C1 , . . . ,Cm die Klauseln. b) 3-SAT ⪯ SUBSET SUM: Seien v1 , . . . , vn die Variablen der Formel und C1 , . . . ,Cm die Klauseln.
Für jede Variable vi erzeuge zwei Items ai und bi , mit den Größen Für jede Variable vi erzeuge zwei Items ai und bi , mit den Größen
s(ai ) = 10i1 + ∑ 10n+ j1 und s(bi ) = 10i1 + ∑ 10n+ j1 . s(ai ) = 10i1 + ∑ 10n+ j1 und s(bi ) = 10i1 + ∑ 10n+ j1 .
@@ -614,7 +614,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
j∈[m] i∈[n] j∈[m] i∈[n]
Welche unteren Schranken ergeben sich durch obige Reduktion für die Laufzeit von Algorith- Welche unteren Schranken ergeben sich durch obige Reduktion für die Laufzeit von Algorith-
men für S UBSET S UM unter Annahme der ETH in Abhängigkeit von men für SUBSET SUM unter Annahme der ETH in Abhängigkeit von
(i) der Anzahl der unterschiedlichen Itemgrößen d? (i) der Anzahl der unterschiedlichen Itemgrößen d?
(ii) der binären Kodierungslänge L der größten Itemgröße ∆ (d.h. L = log(∆))? (ii) der binären Kodierungslänge L der größten Itemgröße ∆ (d.h. L = log(∆))?
Beweisen Sie die entsprechenden unteren Schranken! Beweisen Sie die entsprechenden unteren Schranken!
@@ -654,7 +654,7 @@ Hinweise:
• Einsichtnahme: 2.11.23, 13:30-14:30 Uhr. • Einsichtnahme: 2.11.23, 13:30-14:30 Uhr.
• Die Klausur hat 6 Aufgaben auf 13 Seiten überprüfen Sie bitte vor der Bearbeitung, dass Ihre Klausur • Die Klausur hat 6 Aufgaben auf 13 Seiten überprüfen Sie bitte vor der Bearbeitung, dass Ihre Klausur
vollständig ist. vollständig ist.
Aufgabe 1 C HRISTOFIDES A LGORITHMUS (3+7 Punkte) Aufgabe 1 CHRISTOFIDES ALGORITHMUS (3+7 Punkte)
Gegeben sei folgender Graph G = (V, E) : Gegeben sei folgender Graph G = (V, E) :
d d
@@ -688,29 +688,29 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 2 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 2 von 19
Aufgabe 2 D OMINATING S ET (3+3+4 Punkte) Aufgabe 2 DOMINATING SET (3+3+4 Punkte)
Betrachten Sie das folgende Problem: Betrachten Sie das folgende Problem:
Problem: D OMINATING S ET Problem: DOMINATING SET
Eingabe: Ein ungerichteter Graph G = (V, E) (wobei V = {1, . . . , n} für eine Zahl n ∈ N≥1 ) Eingabe: Ein ungerichteter Graph G = (V, E) (wobei V = {1, . . . , n} für eine Zahl n ∈ N≥1 )
und eine Zahl k ∈ N0 . und eine Zahl k ∈ N0 .
Entscheide: Gibt es eine Teilmenge D ⊆ V der Knoten mit |D| ≤ k, sodass jeder Knoten v ∈ V Entscheide: Gibt es eine Teilmenge D ⊆ V der Knoten mit |D| ≤ k, sodass jeder Knoten v ∈ V
in D enthalten ist oder benachbart zu mindestens einem der Knoten in D ist? in D enthalten ist oder benachbart zu mindestens einem der Knoten in D ist?
Zeigen Sie auf verschiedene Weisen, dass das Problem in NP liegt: Zeigen Sie auf verschiedene Weisen, dass das Problem in NP liegt:
a) Geben Sie ein Zertifikat für D OMINATING S ET an. a) Geben Sie ein Zertifikat für DOMINATING SET an.
b) Beschreiben Sie einen polynomiellen Verifizierer für D OMINATING S ET und schätzen Sie die b) Beschreiben Sie einen polynomiellen Verifizierer für DOMINATING SET und schätzen Sie die
Laufzeit in O-Notation konkret ab. Laufzeit in O-Notation konkret ab.
c) Beschreiben Sie (in Worten) eine polynomielle, nicht-deterministische Turing-Maschine, die c) Beschreiben Sie (in Worten) eine polynomielle, nicht-deterministische Turing-Maschine, die
D OMINATING S ET löst. Schätzen Sie auch hier die Laufzeit in O-Notation konkret ab. DOMINATING SET löst. Schätzen Sie auch hier die Laufzeit in O-Notation konkret ab.
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 3 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 3 von 19
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 4 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 4 von 19
Aufgabe 3 A PPROXIMATIVE A LGORITHMEN (6+4 Punkte) Aufgabe 3 APPROXIMATIVE ALGORITHMEN (6+4 Punkte)
Das Problem M IN -E DGE -C OVER sei folgendermaßen definiert: Das Problem MIN -EDGE -COVER sei folgendermaßen definiert:
Problem: M IN -E DGE -C OVER Problem: MIN -EDGE -COVER
Eingabe: Ein zusammenhängender, ungerichteter Graph G = (V, E). Eingabe: Ein zusammenhängender, ungerichteter Graph G = (V, E).
Ausgabe: Eine Teilmenge der Kanten C ⊆ E mit minimaler Kardinalität, sodass jeder Knoten Ausgabe: Eine Teilmenge der Kanten C ⊆ E mit minimaler Kardinalität, sodass jeder Knoten
v ∈ V zu mindestens einer Kante aus C inzident ist. v ∈ V zu mindestens einer Kante aus C inzident ist.
@@ -731,7 +731,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 5 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 5 von 19
b) Sei n ∈ N≥4 gerade. Betrachten Sie den Graphen Gn , der genau n Knoten und n Kanten hat und b) Sei n ∈ N≥4 gerade. Betrachten Sie den Graphen Gn , der genau n Knoten und n Kanten hat und
einen Kreis beschreibt. D.h. Gn = ({1, . . . , n}, {{i, i+1} | i ∈ {1, . . . , n1}}{{n, 1}}). Wie viele einen Kreis beschreibt. D.h. Gn = ({1, . . . , n}, {{i, i+1} | i ∈ {1, . . . , n1}}{{n, 1}}). Wie viele
Kanten hat ein M IN -E DGE -C OVER des Graphen Gn ? Wie schlecht ist die Approximationsrate Kanten hat ein MIN -EDGE -COVER des Graphen Gn ? Wie schlecht ist die Approximationsrate
des Algorithmus A für Gn im schlimmsten Fall? Geben Sie eine Reihenfolge der Knoten (für des Algorithmus A für Gn im schlimmsten Fall? Geben Sie eine Reihenfolge der Knoten (für
Schritt 1) und eine Auswahl der Kanten (für Schritt 2) an, die zu einer möglichst schlechten Schritt 1) und eine Auswahl der Kanten (für Schritt 2) an, die zu einer möglichst schlechten
Approximationsrate führen. Approximationsrate führen.
@@ -740,7 +740,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 6 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 6 von 19
Aufgabe 4 B EWEIS S CHEDULING AUF IDENTISCHEN M ASCHINEN (10 Punkte) Aufgabe 4 BEWEIS SCHEDULING AUF IDENTISCHEN MASCHINEN (10 Punkte)
Betrachten Sie das Scheduling-Problem P||Cmax : Betrachten Sie das Scheduling-Problem P||Cmax :
Problem: P||Cmax Problem: P||Cmax
Eingabe: Eine Liste L = (J1 , . . . , Jn ) von n Jobs mit Ausführungszeiten p1 , . . . , pn ∈ N, und m Eingabe: Eine Liste L = (J1 , . . . , Jn ) von n Jobs mit Ausführungszeiten p1 , . . . , pn ∈ N, und m
@@ -755,7 +755,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
LS(I) die Last Cmax eines Schedules des Algorithmus, und OPT(I) die Last Cmax eines optimalen LS(I) die Last Cmax eines Schedules des Algorithmus, und OPT(I) die Last Cmax eines optimalen
Schedules zur Eingabe I. Zeigen Sie: Für alle Eingaben I = (L, m) gilt LS(I)/OPT(I) ≤ 2 1/m. Schedules zur Eingabe I. Zeigen Sie: Für alle Eingaben I = (L, m) gilt LS(I)/OPT(I) ≤ 2 1/m.
Algorithmus L IST S CHEDULING(L = (J1 , . . . , Jn ), m) Algorithmus LIST SCHEDULING(L = (J1 , . . . , Jn ), m)
1 for i = 1 to m do 1 for i = 1 to m do
2 Ei = 0; Bi = 0/ ; 2 Ei = 0; Bi = 0/ ;
@@ -774,19 +774,19 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 8 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 8 von 19
Aufgabe 5 NP UND NP-VOLLSTÄNDIGKEIT (4+5+6 Punkte) Aufgabe 5 NP UND NP-VOLLSTÄNDIGKEIT (4+5+6 Punkte)
Problem: H AMILTONIAN PATH Problem: HAMILTONIAN PATH
Eingabe: Ein ungerichteter Graph G = (V, E) Eingabe: Ein ungerichteter Graph G = (V, E)
Entscheide: Existiert ein Pfad in G, der jeden Knoten genau einmal besucht? Entscheide: Existiert ein Pfad in G, der jeden Knoten genau einmal besucht?
Problem: H AMILTONIAN C YCLE Problem: HAMILTONIAN CYCLE
Eingabe: Ein ungerichteter Graph G = (V, E) Eingabe: Ein ungerichteter Graph G = (V, E)
Entscheide: Existiert ein Kreis in G, der jeden Knoten genau einmal besucht? Entscheide: Existiert ein Kreis in G, der jeden Knoten genau einmal besucht?
(a) Sei L ⊆ S UBSET S UM die Menge der (positiven) SubsetSum-Instanzen, bei denen keine der (a) Sei L ⊆ SUBSET SUM die Menge der (positiven) SubsetSum-Instanzen, bei denen keine der
Itemgrößen eine Zweierpotenz ist. Zeigen Sie, dass L NP-vollständig ist. Itemgrößen eine Zweierpotenz ist. Zeigen Sie, dass L NP-vollständig ist.
(b) Geben Sie eine polynomielle Reduktion von H AMILTONIAN PATH auf H AMILTONIAN C Y- (b) Geben Sie eine polynomielle Reduktion von HAMILTONIAN PATH auf HAMILTONIAN C Y-
CLE an. CLE an.
(c) Geben Sie eine polynomielle Reduktion von H AMILTONIAN C YCLE auf H AMILTONIAN - (c) Geben Sie eine polynomielle Reduktion von HAMILTONIAN CYCLE auf HAMILTONIAN -
PATH an. PATH an.
@@ -795,14 +795,14 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 9 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 9 von 19
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 10 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 10 von 19
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 11 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 11 von 19
Aufgabe 6 U NTERE S CHRANKEN UND ETH (5+5 Punkte) Aufgabe 6 UNTERE SCHRANKEN UND ETH (5+5 Punkte)
Im Folgenden bezeichne ⟨I⟩ die Kodierungslänge der Instanz. Im Folgenden bezeichne ⟨I⟩ die Kodierungslänge der Instanz.
(a) Wir betrachten folgendes Problem: (a) Wir betrachten folgendes Problem:
Problem: H ITTING S ET Problem: HITTING SET
Eingabe: Eine Menge U sowie r Teilmengen F1 , . . . , Fr ⊆ U und eine Zahl k . Eingabe: Eine Menge U sowie r Teilmengen F1 , . . . , Fr ⊆ U und eine Zahl k .
Entscheide: Gibt es eine Menge S ⊆ U mit |S | ≤ k und S ∩ Fi ̸= 0/ für alle i ∈ {1, . . . , r }? Entscheide: Gibt es eine Menge S ⊆ U mit |S | ≤ k und S ∩ Fi ̸= 0/ für alle i ∈ {1, . . . , r }?
Sie dürfen nutzen, dass sich H ITTING S ET unter Annahme der ETH nicht in Zeit 2o(r ) ⟨I⟩O(1) Sie dürfen nutzen, dass sich HITTING SET unter Annahme der ETH nicht in Zeit 2o(r ) ⟨I⟩O(1)
@@ -810,7 +810,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Problem: S ET C OVER Problem: SET COVER
Eingabe: Eine Menge U sowie r Teilmengen F1 , . . . , Fr ⊆ U und eine Zahl k. Eingabe: Eine Menge U sowie r Teilmengen F1 , . . . , Fr ⊆ U und eine Zahl k.
Entscheide: Gibt es eine Menge S ⊆ {1, . . . , r} mit |S| ≤ k und i∈S Fi = U? Entscheide: Gibt es eine Menge S ⊆ {1, . . . , r} mit |S| ≤ k und i∈S Fi = U?
S S
@@ -819,9 +819,9 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Welche unteren Schranken ergeben sich Welche unteren Schranken ergeben sich
(i) in Hinblick auf |U| sowie (i) in Hinblick auf |U| sowie
(ii) in Hinblick auf r (ii) in Hinblick auf r
für S ET C OVER unter Annahme der ETH aus den unteren Schranken für H ITTING S ET, wenn für SET COVER unter Annahme der ETH aus den unteren Schranken für HITTING SET, wenn
man folgende Reduktion von SetCover auf HittingSet verwendet? man folgende Reduktion von SetCover auf HittingSet verwendet?
Sei (F ,U, k) eine S ET C OVER-Instanz. Setze V1 := U und V2 := {1, . . . , r}. Sei V := V1 V˙ 2. Sei (F ,U, k) eine SET COVER-Instanz. Setze V1 := U und V2 := {1, . . . , r}. Sei V := V1 V˙ 2.
Weiter sei E = { {v, w} | v ∈ V1 , w ∈ V2 , v ∈ Fw }. Damit ist G = (V, E) ein bipartiter Graph Weiter sei E = { {v, w} | v ∈ V1 , w ∈ V2 , v ∈ Fw }. Damit ist G = (V, E) ein bipartiter Graph
mit Partitionen V1 ,V2 . Setze U := {1, . . . , r}. Erzeuge nun eine Menge Fw für jeden Knoten mit Partitionen V1 ,V2 . Setze U := {1, . . . , r}. Erzeuge nun eine Menge Fw für jeden Knoten
w ∈ V1 , indem Fw := { v ∈ V2 | {v, w} ∈ E } gesetzt wird. Sei F := { Fw | w ∈ V1 }. Mit k = k w ∈ V1 , indem Fw := { v ∈ V2 | {v, w} ∈ E } gesetzt wird. Sei F := { Fw | w ∈ V1 }. Mit k = k
@@ -833,14 +833,14 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 12 von 19 Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)« Seite 12 von 19
(b) Wir wollen uns mit einem Problem beschäftigen, das ein mächtiges Werkzeug im Bereich (b) Wir wollen uns mit einem Problem beschäftigen, das ein mächtiges Werkzeug im Bereich
der Optimierung ist: Integrale Lineare Programme (ILPs). der Optimierung ist: Integrale Lineare Programme (ILPs).
Problem: ILP-F EASIBILITY Problem: ILP-FEASIBILITY
Eingabe: Eine Matrix A ∈ ZM×N , eine rechte Seite b ∈ ZM . Eingabe: Eine Matrix A ∈ ZM×N , eine rechte Seite b ∈ ZM .
Entscheide: Gibt es einen Vektor x ∈ ZN≥0 mit Ax ≤ b, d.h. Ai xi ≤ bi für alle i ∈ {1, . . . , M}? Entscheide: Gibt es einen Vektor x ∈ ZN≥0 mit Ax ≤ b, d.h. Ai xi ≤ bi für alle i ∈ {1, . . . , M}?
Welche unteren Schranken ergeben sich Welche unteren Schranken ergeben sich
(i) in Hinblick auf M sowie (i) in Hinblick auf M sowie
(ii) im Hinblick auf N (ii) im Hinblick auf N
für ILP-F EASIBILITY unter Annahme der ETH, wenn man folgende Reduktion von 3-SAT für ILP-FEASIBILITY unter Annahme der ETH, wenn man folgende Reduktion von 3-SAT
auf ILP-F EASIBILITY verwendet? auf ILP-FEASIBILITY verwendet?
Sei φ eine 3-SAT Instanz mit m Klauseln (Ci )i∈m und n Variablen. Analog zu linearen Glei- Sei φ eine 3-SAT Instanz mit m Klauseln (Ci )i∈m und n Variablen. Analog zu linearen Glei-
chungssystemen (Ax = b), die aus M Gleichungen bestehen, haben wir bei Ax ≤ b einen chungssystemen (Ax = b), die aus M Gleichungen bestehen, haben wir bei Ax ≤ b einen
Satz von M linearen Ungleichungen. Wir konstruieren diese wie folgt: Wir nutzen N := 2n Satz von M linearen Ungleichungen. Wir konstruieren diese wie folgt: Wir nutzen N := 2n
@@ -850,7 +850,7 @@ Klausur »Analyse von Algorithmen und Komplexität (Komplexitätsteil)«
chung ∈Ci x1. Weiter erzeugen wir für jede SAT-Variable v zwei Ungleichungen: chung ∈Ci x1. Weiter erzeugen wir für jede SAT-Variable v zwei Ungleichungen:
xv +xv̄ ≤ 1 und xv xv̄ ≤ 1. Durch das Eintragen der entsprechenden Koeffizienten in eine xv +xv̄ ≤ 1 und xv xv̄ ≤ 1. Durch das Eintragen der entsprechenden Koeffizienten in eine
erweiterte Koeffizientenmatrix (bestehend aus Matrix A und rechter Seite b) erhalten wir die erweiterte Koeffizientenmatrix (bestehend aus Matrix A und rechter Seite b) erhalten wir die
ILP-F EASIBILITY Instanz. ILP-FEASIBILITY Instanz.

View File

@@ -11,7 +11,7 @@
Definition 1 (Knapsack (Entscheidungsvariante)). Gegeben ist eine Menge mit n Gegenständen Definition 1 (Knapsack (Entscheidungsvariante)). Gegeben ist eine Menge mit n Gegenständen
mit Gewichten w1 , . . . , wn ∈ N≥0 und Profiten p1 , . . . , pn ∈ N≥0 . Weiter sind eine Kapazität mit Gewichten w1 , . . . , wn ∈ N≥0 und Profiten p1 , . . . , pn ∈ N≥0 . Weiter sind eine Kapazität
K ∈ N≥0 und ein Zielprofit P ∈ N≥0 gegeben. Bei dem K NAPSACK Problem muss entschieden K ∈ N≥0 und ein Zielprofit P ∈ N≥0 gegeben. Bei dem KNAPSACK Problem muss entschieden
werden, ob eine Teilmenge S ⊆ [n] existiert, sodass werden, ob eine Teilmenge S ⊆ [n] existiert, sodass
∑ wi ≤ K und ∑ pi ≥ P ∑ wi ≤ K und ∑ pi ≥ P
@@ -19,8 +19,8 @@ werden, ob eine Teilmenge S ⊆ [n] existiert, sodass
gilt. gilt.
Präsenzaufgabe 9.1 (K NAPSACK in NP) Präsenzaufgabe 9.1 (KNAPSACK in NP)
Zeigen Sie K NAPSACK ∈ NP auf zwei verschiedene Wege. Zeigen Sie KNAPSACK ∈ NP auf zwei verschiedene Wege.
1. Geben Sie einen nicht deterministischen Algorithmus an, der das Problem in polynomi- 1. Geben Sie einen nicht deterministischen Algorithmus an, der das Problem in polynomi-
eller Zeit löst. eller Zeit löst.
2. Geben Sie einen polynomiellen Verifizierer für das Problem an. 2. Geben Sie einen polynomiellen Verifizierer für das Problem an.
@@ -34,7 +34,7 @@ Lösung. 1. Der Algorithmus arbeitet wie folgt: Für jeden Gegenstand entsche
auch vom Algorithmus akzeptiert. auch vom Algorithmus akzeptiert.
Der Algorithmus macht polynomiell viele nichtdeterministische Entscheidungen und die Der Algorithmus macht polynomiell viele nichtdeterministische Entscheidungen und die
Überprüfung der Eigenschaften ist ebenfalls in Polynomialzeit möglich, also ist dies ein Überprüfung der Eigenschaften ist ebenfalls in Polynomialzeit möglich, also ist dies ein
polynomieller, nichtdeterministischer Algorithmus, der K NAPSACK löst. polynomieller, nichtdeterministischer Algorithmus, der KNAPSACK löst.
2. Unser Zertifikat ist eine Teilmenge S ⊆ [n], die die Auswahl für den Rucksack darstellen 2. Unser Zertifikat ist eine Teilmenge S ⊆ [n], die die Auswahl für den Rucksack darstellen
soll. Dies kann zum Beispiel über ein Bit pro Gegenstand realisiert werden. Um dieses soll. Dies kann zum Beispiel über ein Bit pro Gegenstand realisiert werden. Um dieses
Zertifikat zu verifizieren, berechnen wir ∑i∈S wi und ∑i∈S pi und vergleichen die Werte Zertifikat zu verifizieren, berechnen wir ∑i∈S wi und ∑i∈S pi und vergleichen die Werte
@@ -88,7 +88,7 @@ Lösung. (i) Die Aussage gilt nur, wenn P = NP. Dann liegen alle Probleme in NP
Falls P ̸= NP, dann nein, weil sonst folgender Widerspruch auftritt: ein Problem in NP \ P Falls P ̸= NP, dann nein, weil sonst folgender Widerspruch auftritt: ein Problem in NP \ P
ist von einer NDTM, nicht aber von einer DTM in polynomieller Zeit lösbar. Könnte eine ist von einer NDTM, nicht aber von einer DTM in polynomieller Zeit lösbar. Könnte eine
DTM die NDTM in polynomieller Zeit simulieren, wäre das Problem auch in P. DTM die NDTM in polynomieller Zeit simulieren, wäre das Problem auch in P.
(ii) Falsch. Es gibt NP-schwere Probleme, die nicht in NP liegen, z.B. das H ALTE-Problem. (ii) Falsch. Es gibt NP-schwere Probleme, die nicht in NP liegen, z.B. das HALTE-Problem.
Diese liegen folglich auch definitiv nicht in P. NP-schwer ist eine untere Schranke, ∈ NP Diese liegen folglich auch definitiv nicht in P. NP-schwer ist eine untere Schranke, ∈ NP
eine obere, und wenn beide erfüllt sind, ist ein Problem NP-vollständig. eine obere, und wenn beide erfüllt sind, ist ein Problem NP-vollständig.
@@ -97,27 +97,27 @@ Lösung. (i) Die Aussage gilt nur, wenn P = NP. Dann liegen alle Probleme in NP
Definition 1 (Vertex Cover (VC)). Für einen (ungerichteten) Graphen G = (V, E) ist ein Vertex 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 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 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 Für das VERTEX COVER 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. es wird gefragt, ob ein Vertex Cover mit Größe (Anzahl der Knoten) höchstens k in G existiert.
Präsenzaufgabe 10.2 (V ERTEX C OVER ist NP-vollständig) Präsenzaufgabe 10.2 (VERTEX COVER ist NP-vollständig)
Zeigen Sie, dass V ERTEX C OVER NP-vollständig ist. Zeigen Sie, dass VERTEX COVER NP-vollständig ist.
Hinweis: Reduzieren Sie C LIQUE auf V ERTEX C OVER. Hinweis: Reduzieren Sie CLIQUE auf VERTEX COVER.
Lösung. V ERTEX C OVER ∈ NP ist bekannt aus der letzten Hausaufgabe. Lösung. VERTEX COVER ∈ NP ist bekannt aus der letzten Hausaufgabe.
Vorüberlegung zur Reduktion von C LIQUE auf V ERTEX C OVER: Sei eine Instanz mit G = Vorüberlegung zur Reduktion von CLIQUE auf VERTEX COVER: Sei eine Instanz mit G =
(V, E) und k ∈ N≥0 von C LIQUE gegeben. Wir invertieren zunächst den Graphen G und erhal- (V, E) und k ∈ N≥0 von CLIQUE gegeben. Wir invertieren zunächst den Graphen G und erhal-
ten damit G . Nun enthält G genau dann eine unabhängige Menge der Größe , wenn G eine ten damit G . Nun enthält G genau dann eine unabhängige Menge der Größe , wenn G eine
Clique der Größe enthält. Wenn ein Graph mit n Knoten eine unabhängige Menge mit min- Clique der Größe enthält. Wenn ein Graph mit n Knoten eine unabhängige Menge mit min-
destens k Knoten hat, dann hat der Graph auch ein Vertex Cover mit maximal n k Knoten destens k Knoten hat, dann hat der Graph auch ein Vertex Cover mit maximal n k Knoten
(das Komplement zur unabhängigen Menge). Unsere Instanz für V ERTEX C OVER ist also G (das Komplement zur unabhängigen Menge). Unsere Instanz für VERTEX COVER ist also G
und n k. (k ≤ n können wir annehmen) und n k. (k ≤ n können wir annehmen)
Betrachte nun folgende Reduktion: Betrachte nun folgende Reduktion:
Sei eine Instanz mit G = (V, E) und k ∈ N≥0 von C LIQUE gegeben. Invertiere den Graphen G Sei eine Instanz mit G = (V, E) und k ∈ N≥0 von CLIQUE gegeben. Invertiere den Graphen G
und erhalte damit G . Gebe nun G und n k als Instanz von V ERTEX C OVER zurück. und erhalte damit G . Gebe nun G und n k als Instanz von VERTEX COVER zurück.
Korrektheit: Korrektheit:
⇒ (Falls (G, k) eine Ja-Instanz von C LIQUE ist, dann ist (G , n k) eine Ja-Instanz von V ER - ⇒ (Falls (G, k) eine Ja-Instanz von CLIQUE ist, dann ist (G , n k) eine Ja-Instanz von VER -
TEX C OVER .): TEX COVER .):
G enthalte eine Clique C der Größe ≥ k. Dann ist V := V \C ein Vertex Cover von G der Größe G enthalte eine Clique C der Größe ≥ k. Dann ist V := V \C ein Vertex Cover von G der Größe
≤ n k. Da |C| ≥ k, gilt |V | ≤ n k. Da C eine Clique ist, also alle Knoten aus C mit allen ≤ n k. Da |C| ≥ k, gilt |V | ≤ n k. Da C eine Clique ist, also alle Knoten aus C mit allen
@@ -125,8 +125,8 @@ anderen Knoten aus C verbunden sind, gibt es im invertierten Graphen G keine
Knoten aus C. Also gilt für jede Kante {u, v} ∈ E , dass u ∈ / C und somit u ∈ V oder Knoten aus C. Also gilt für jede Kante {u, v} ∈ E , dass u ∈ / C und somit u ∈ V oder
/ C oder v ∈ / C oder v ∈
v ∈ V . v ∈ V .
⇐ (Falls (G , n k) eine Ja-Instanz von V ERTEX C OVER ist, dann ist (G, k) eine Ja-Instanz von ⇐ (Falls (G , n k) eine Ja-Instanz von VERTEX COVER ist, dann ist (G, k) eine Ja-Instanz von
C LIQUE.): CLIQUE.):
G enthalte ein Vertex Cover V der Größe ≤ nk. Dann ist C := V \V eine Clique der Größe ≥ G enthalte ein Vertex Cover V der Größe ≤ nk. Dann ist C := V \V eine Clique der Größe ≥
k in G. Da |V | ≤ n k, gilt |C| ≥ k. Für jede Menge {u, v} ⊆ C gilt, dass {u, v} ∈ k in G. Da |V | ≤ n k, gilt |C| ≥ k. Für jede Menge {u, v} ⊆ C gilt, dass {u, v} ∈
/ E . Ansonsten / E . Ansonsten
@@ -134,8 +134,8 @@ wäre V kein korrektes Vertex Cover. Da G der invertierte Graph von G ist
für jede Menge {u, v} ⊆ C. für jede Menge {u, v} ⊆ C.
Laufzeit: Das Invertieren des Graphen kann naiv in O(|V |2 · |E|) Zeit, also in polynomieller Laufzeit: Das Invertieren des Graphen kann naiv in O(|V |2 · |E|) Zeit, also in polynomieller
Zeit, erledigt werden. Zeit, erledigt werden.
Also existiert eine polynomielle Reduktion von C LIQUE auf V ERTEX C OVER. Da C LIQUE Also existiert eine polynomielle Reduktion von CLIQUE auf VERTEX COVER. Da CLIQUE
NP-vollständig ist und V ERTEX C OVER ∈ NP gilt, ist somit V ERTEX C OVER NP-vollständig. NP-vollständig ist und VERTEX COVER ∈ NP gilt, ist somit VERTEX COVER NP-vollständig.
Präsenzaufgabe 10.3 (Turingmaschinen) Präsenzaufgabe 10.3 (Turingmaschinen)
@@ -187,7 +187,7 @@ Diskutieren Sie nachfolgende Aussagen. Sind diese wahr oder falsch?
(a) Für L ∈ NP gilt, aus L ⪯ 3-SAT folgt, dass L NP-vollständig ist. (a) Für L ∈ NP gilt, aus L ⪯ 3-SAT folgt, dass L NP-vollständig ist.
(b) Gilt für eine Sprache L, dass sowohl L ⪯ 3-SAT als auch 3-SAT ⪯ L, dann ist L NP-vollständig. (b) Gilt für eine Sprache L, dass sowohl L ⪯ 3-SAT als auch 3-SAT ⪯ L, dann ist L NP-vollständig.
(c) Sei L NP-vollständig. Dann gilt L ∈ P genau dann, wenn P = NP. (c) Sei L NP-vollständig. Dann gilt L ∈ P genau dann, wenn P = NP.
(d) Es ist möglich, dass 3-SAT ∈ P und C LIQUE ∈ (d) Es ist möglich, dass 3-SAT ∈ P und CLIQUE ∈
/ P. / P.
Lösung. Lösung.
@@ -197,59 +197,59 @@ Lösung.
(b) Das ist die Definition von NP-vollständig. (b) Das ist die Definition von NP-vollständig.
(c) Korrekt, da sich jedes Problem auf L reduzieren lässt nach Def. NP-vollständig (und offen- (c) Korrekt, da sich jedes Problem auf L reduzieren lässt nach Def. NP-vollständig (und offen-
sichtlich P ⊆ NP). sichtlich P ⊆ NP).
(d) Nein, weil 3-SAT NP-vollständig ist, lässt sich C LIQUE (liegt bekannterweise in NP, ist (d) Nein, weil 3-SAT NP-vollständig ist, lässt sich CLIQUE (liegt bekannterweise in NP, ist
sogar NP-vollständig) auf 3-SAT reduzieren. sogar NP-vollständig) auf 3-SAT reduzieren.
Präsenzaufgabe 11.2 (NP-Vollständigkeit) Präsenzaufgabe 11.2 (NP-Vollständigkeit)
In dem Problem C LIQUE -N OMEMBER ist ein Graph G = (V, E), ein Knoten v ∈ V sowie eine In dem Problem CLIQUE -NOMEMBER ist ein Graph G = (V, E), ein Knoten v ∈ V sowie eine
Zahl k ∈ N gegeben und es soll entschieden werden, ob es eine Clique mit k Knoten gibt, die Zahl k ∈ N gegeben und es soll entschieden werden, ob es eine Clique mit k Knoten gibt, die
den Knoten v nicht enthält. den Knoten v nicht enthält.
Zeigen Sie, dass C LIQUE -N OMEMBER NP-vollständig ist, indem Sie eine Reduktion von C LI - Zeigen Sie, dass CLIQUE -NOMEMBER NP-vollständig ist, indem Sie eine Reduktion von CLI -
QUE auf C LIQUE -N OMEMBER angeben. Sie können davon ausgehen, dass C LIQUE -N OMEMBER ∈ QUE auf CLIQUE -NOMEMBER angeben. Sie können davon ausgehen, dass CLIQUE -NOMEMBER ∈
NP ist. NP ist.
Lösung. Clique-Nomember ist NP-schwer: Lösung. Clique-Nomember ist NP-schwer:
Sei (G = (V, E), k) eine Eingabe für das Clique Problem. Sei (G = (V, E), k) eine Eingabe für das Clique Problem.
Idee: Füge einen neuen isolierten Knoten v zu G hinzu. Idee: Füge einen neuen isolierten Knoten v zu G hinzu.
Wir geben zuerst die Abbildung an: Sei v ̸∈ V . Wir definieren die Eingabe für das Problem Wir geben zuerst die Abbildung an: Sei v ̸∈ V . Wir definieren die Eingabe für das Problem
C LIQUE -N OMEMBER als den Graphen G := (V {v}, E), den Knoten v als Knoten, der nicht CLIQUE -NOMEMBER als den Graphen G := (V {v}, E), den Knoten v als Knoten, der nicht
benutzt werden darf, und k als gesuchte Cliquengröße. (G , v, k) ist eine gültige Eingabe für benutzt werden darf, und k als gesuchte Cliquengröße. (G , v, k) ist eine gültige Eingabe für
C LIQUE -N OMEMBER und in polynomieller Zeit berechenbar. CLIQUE -NOMEMBER und in polynomieller Zeit berechenbar.
Wir zeigen nun: G hat eine k-Clique genau dann, wenn G eine k-Clique ohne v beinhaltet. Wir zeigen nun: G hat eine k-Clique genau dann, wenn G eine k-Clique ohne v beinhaltet.
⇒: ⇒:
Sei (G, k) eine Ja-Instanz des C LIQUE Problems. Dann enthält G eine k-Clique C. Dann ist C Sei (G, k) eine Ja-Instanz des CLIQUE Problems. Dann enthält G eine k-Clique C. Dann ist C
auch eine k-Clique in G , da bei der Abbildung keine Kanten entfernt wurden. Da v ̸∈ V , enthält auch eine k-Clique in G , da bei der Abbildung keine Kanten entfernt wurden. Da v ̸∈ V , enthält
C den Knoten v nicht. Damit ist C eine k-Clique in G ohne den Knoten v. (G , v, k) ist also eine C den Knoten v nicht. Damit ist C eine k-Clique in G ohne den Knoten v. (G , v, k) ist also eine
Ja-Instanz des C LIQUE -N OMEMBER Problems. Ja-Instanz des CLIQUE -NOMEMBER Problems.
⇐: ⇐:
Sei (G , v, k) eine Ja-Instanz des C LIQUE -N OMEMBER Problems. Dann enthält G eine k-Clique Sei (G , v, k) eine Ja-Instanz des CLIQUE -NOMEMBER Problems. Dann enthält G eine k-Clique
C mit v ̸∈ C. Da bei der Abbildung an dem Graphen nichts geändert wurde, außer der Knoten v C mit v ̸∈ C. Da bei der Abbildung an dem Graphen nichts geändert wurde, außer der Knoten v
hinzugefügt, muss C auch eine k-Clique in G sein. Damit ist (G, k) eine Ja-Instanz des C LIQUE hinzugefügt, muss C auch eine k-Clique in G sein. Damit ist (G, k) eine Ja-Instanz des CLIQUE
Problems. Problems.
Also existiert eine polynomielle Reduktion von C LIQUE auf C LIQUE -N OMEMBER. Da C LI - Also existiert eine polynomielle Reduktion von CLIQUE auf CLIQUE -NOMEMBER. Da CLI -
QUE NP-vollständig ist und C LIQUE -N OMEMBER ∈ NP nach Aufgabenstellung gilt, ist somit QUE NP-vollständig ist und CLIQUE -NOMEMBER ∈ NP nach Aufgabenstellung gilt, ist somit
C LIQUE -N OMEMBER NP-vollständig. CLIQUE -NOMEMBER NP-vollständig.
Präsenzaufgabe 11.3 (NP-Vollständigkeit) Präsenzaufgabe 11.3 (NP-Vollständigkeit)
Für das Problem S UBSET S UM C ARDINALITY seien n ganze Zahlen c1 , . . . , cn ∈ N>0 (wobei n Für das Problem SUBSET SUM CARDINALITY seien n ganze Zahlen c1 , . . . , cn ∈ N>0 (wobei n
gerade sei) sowie eine Zahl K ∈ N gegeben. Es soll entschieden werden, ob es eine Teilmenge gerade sei) sowie eine Zahl K ∈ N gegeben. Es soll entschieden werden, ob es eine Teilmenge
S ⊂ {1, . . . , n} gibt mit |S| = n/2 und ∑i∈S ci = K. S ⊂ {1, . . . , n} gibt mit |S| = n/2 und ∑i∈S ci = K.
Zeigen Sie, dass das Problem S UBSET S UM C ARDINALITY NP-vollständig ist. Sie können Zeigen Sie, dass das Problem SUBSET SUM CARDINALITY NP-vollständig ist. Sie können
davon ausgehen, dass S UBSET S UM C ARDINALITY ∈ NP ist. davon ausgehen, dass SUBSET SUM CARDINALITY ∈ NP ist.
Lösung. Subset Sum Cardinality ist NP-schwer: Lösung. Subset Sum Cardinality ist NP-schwer:
S UBSET S UM Problem: Gegeben: n ganze Zahlen c1 , . . . , cn ∈ N>0 und Zahl K ∈ N. Frage: Gibt SUBSET SUM Problem: Gegeben: n ganze Zahlen c1 , . . . , cn ∈ N>0 und Zahl K ∈ N. Frage: Gibt
es eine Teilmenge S ⊆ {0, . . . , n} mit ∑i∈S ci = K? es eine Teilmenge S ⊆ {0, . . . , n} mit ∑i∈S ci = K?
Reduktion: Sei I = (c1 , . . . , cn , K) eine Eingabe für das S UBSET S UM Problem. Definiere ci := Reduktion: Sei I = (c1 , . . . , cn , K) eine Eingabe für das SUBSET SUM Problem. Definiere ci :=
ci + 1 für i ≤ n und ci := 1 für i ∈ {n + 1, . . . , 2n}. Wir definieren die Eingabe für das Problem ci + 1 für i ≤ n und ci := 1 für i ∈ {n + 1, . . . , 2n}. Wir definieren die Eingabe für das Problem
S UBSET S UM C ARDINALITY als I = (c1 , . . . , c2n , K + n). SUBSET SUM CARDINALITY als I = (c1 , . . . , c2n , K + n).
Wir zeigen nun: Es gibt eine Lösung für I genau dann, wenn es eine Lösung für I gibt. Wir zeigen nun: Es gibt eine Lösung für I genau dann, wenn es eine Lösung für I gibt.
⇒: ⇒:
Sei I eine Ja-Instanz des S UBSET S UM Problems. Dann gibt es eine Menge S ⊆ {1, . . . , n} mit Sei I eine Ja-Instanz des SUBSET SUM Problems. Dann gibt es eine Menge S ⊆ {1, . . . , n} mit
∑i∈S ci = K. Es gilt also ∑i∈S ci = ∑i∈S (ci + 1) = K + |S|. Sei nun S = {n + 1, . . . , 2n |S|}. Es ∑i∈S ci = K. Es gilt also ∑i∈S ci = ∑i∈S (ci + 1) = K + |S|. Sei nun S = {n + 1, . . . , 2n |S|}. Es
gilt |S S | = n und ∑i∈SS ci = ∑i∈S ci + ∑i∈S ci = ∑i∈S (ci + 1) + ∑i∈S 1 = K + |S| + (n |S|) = gilt |S S | = n und ∑i∈SS ci = ∑i∈S ci + ∑i∈S ci = ∑i∈S (ci + 1) + ∑i∈S 1 = K + |S| + (n |S|) =
K + n. S S ist also eine Lösung für I und I damit eine Ja-Instanz. K + n. S S ist also eine Lösung für I und I damit eine Ja-Instanz.
@@ -261,9 +261,9 @@ K + n (n |S|) = K + |S|, woraus folgt, dass ∑i∈S ci = K. Damit ist S
somit I eine Ja-Instanz. somit I eine Ja-Instanz.
Laufzeit: Die Reduktion kann naiv in einer Zeit von O(n) implementiert werden. Das ist eine Laufzeit: Die Reduktion kann naiv in einer Zeit von O(n) implementiert werden. Das ist eine
polynomielle Laufzeit. polynomielle Laufzeit.
Also existiert eine polynomielle Reduktion von S UBSET S UM auf S UBSET S UM C ARDINALI - Also existiert eine polynomielle Reduktion von SUBSET SUM auf SUBSET SUM CARDINALI -
TY . Da nach Skript S UBSET S UM NP-vollständig ist und S UBSET S UM C ARDINALITY ∈ NP TY . Da nach Skript SUBSET SUM NP-vollständig ist und SUBSET SUM CARDINALITY ∈ NP
nach Aufgabenstellung gilt, ist somit S UBSET S UM C ARDINALITY NP-vollständig. nach Aufgabenstellung gilt, ist somit SUBSET SUM CARDINALITY NP-vollständig.
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Algorithmen und Komplexität Institut für Informatik, Arbeitsgruppe Algorithmen und Komplexität
Prof. Dr. K. Jansen, B. Schumacher, C. Wambsganz Prof. Dr. K. Jansen, B. Schumacher, C. Wambsganz
@@ -287,12 +287,12 @@ Vorlesung bekannten) Reduktionen (Laufzeitfaktoren, die polynomiell in der Einga
sind, dürfen vernachlässigt werden)? sind, dürfen vernachlässigt werden)?
Schätzen Sie dazu zunächst die verschiedenen Parameter der resultierenden Instanz mithilfe der Schätzen Sie dazu zunächst die verschiedenen Parameter der resultierenden Instanz mithilfe der
Parameter der eingegebenen Instanz geeignet ab. Parameter der eingegebenen Instanz geeignet ab.
1. 3-SAT ⪯ k-C LIQUE 1. 3-SAT ⪯ k-CLIQUE
2. k-C LIQUE ⪯ k-I NDEPENDENT S ET (Problemdefinition für die Antwort nicht relevant; in 2. k-CLIQUE ⪯ k-INDEPENDENT SET (Problemdefinition für die Antwort nicht relevant; in
der Reduktion wird der Graph G = (V, E) auf den Komplementgraph (V, E) abgebildet) der Reduktion wird der Graph G = (V, E) auf den Komplementgraph (V, E) abgebildet)
3. SAT ⪯ 3-D IMENSIONAL M ATCHING (Hinweis: 3-SAT ⊆ SAT) 3. SAT ⪯ 3-DIMENSIONAL MATCHING (Hinweis: 3-SAT ⊆ SAT)
4. 3-D IMENSIONAL M ATCHING ⪯ 3-E XACT C OVER 4. 3-DIMENSIONAL MATCHING ⪯ 3-EXACT COVER
5. 3-E XACT C OVER ⪯ S UBSET S UM 5. 3-EXACT COVER ⪯ SUBSET SUM
Lösung. Angenommen ETH gilt. Das Sparsification Lemma impliziert, dass man 3-SAT nicht Lösung. Angenommen ETH gilt. Das Sparsification Lemma impliziert, dass man 3-SAT nicht
in 2o(m) · |I|O(1) lösen kann. in 2o(m) · |I|O(1) lösen kann.
@@ -388,7 +388,7 @@ Gegeben ist der folgende approximative Algorithmus mit Güte 2 für VertexCover:
Idee: Wähle eine beliebige Kante. Wenn einer der beiden Endknoten bereits in C ist, verwirf Idee: Wähle eine beliebige Kante. Wenn einer der beiden Endknoten bereits in C ist, verwirf
diese Kante. Sonst, füge beide Endknoten zur Menge C hinzu. Mache dies für jede Kante. diese Kante. Sonst, füge beide Endknoten zur Menge C hinzu. Mache dies für jede Kante.
Algorithmus 2A PPROX CV(G = (V, E)) Algorithmus 2APPROX CV(G = (V, E))
1 C = {} 1 C = {}
2 foreach {u, v} ∈ E do 2 foreach {u, v} ∈ E do
@@ -411,8 +411,8 @@ aus A. Da keine zwei Kanten aus A vom gleichen Knoten aus C überdeckt werden
so groß wie die optimale Lösung C . Damit berechnet der Algorithmus eine 2-Approximation. so groß wie die optimale Lösung C . Damit berechnet der Algorithmus eine 2-Approximation.
Präsenzaufgabe 13.2 (TSP) Präsenzaufgabe 13.2 (TSP)
In der Vorlesung haben Sie zwei approximative Algorithmen für das TSP-Problem kennen ge- In der Vorlesung haben Sie zwei approximative Algorithmen für das TSP-Problem kennen ge-
lernt. Der erste Algorithmus ∆T SP1 hat eine Approximationsrate von 2, während der zweite lernt. Der erste Algorithmus ∆TSP1 hat eine Approximationsrate von 2, während der zweite
Algorithmus ∆T SP2 von Christofides eine Approximationsrate von 3/2 besitzt. In dieser Übung Algorithmus ∆TSP2 von Christofides eine Approximationsrate von 3/2 besitzt. In dieser Übung
soll gezeigt werden, dass die zweite Rate scharf ist. D.h., dass es eine Folge von Instanzen gibt, soll gezeigt werden, dass die zweite Rate scharf ist. D.h., dass es eine Folge von Instanzen gibt,
auf denen der Algorithmus immer näher an diese Rate heran kommt. auf denen der Algorithmus immer näher an diese Rate heran kommt.
Wir betrachten den vollständigen Graphen Kn = (V, E) für ein n ∈ N≥6 mit n mod 4 = 2 und Wir betrachten den vollständigen Graphen Kn = (V, E) für ein n ∈ N≥6 mit n mod 4 = 2 und
@@ -472,7 +472,7 @@ Knoten 3 gehen, dann zu Knoten 5 und so weiter, bis Knoten n 1 erreicht wurd
folgen Knoten n, n 2, n 4 und so weiter. Diese Tour hat offensichtlich Kosten n, da wir n folgen Knoten n, n 2, n 4 und so weiter. Diese Tour hat offensichtlich Kosten n, da wir n
Kanten mit Gewicht 1 nutzen. Somit gilt OPT((Kn , d2 )) = n und wir haben eine Rate von Kanten mit Gewicht 1 nutzen. Somit gilt OPT((Kn , d2 )) = n und wir haben eine Rate von
∆T SP2 ((Kn , d2 )) n 1 + n/2 1 ∆TSP2 ((Kn , d2 )) n 1 + n/2 1
= = 3/2 ≤ 3/2. = = 3/2 ≤ 3/2.
OPT((Kn , d2 )) n n OPT((Kn , d2 )) n n

View File

@@ -12,12 +12,12 @@
Definition 1 (Vertex Cover (VC)). Für einen (ungerichteten) Graphen G = (V, E) ist ein Vertex 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 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 alle Kanten mindestens ein Endpunkt in C.
Für das V ERTEX C OVER Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gegeben und Für das VERTEX COVER Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gegeben und
es wird gefragt, ob ein Vertex Cover mit Größe (Anzahl der Knoten) höchstens k in G existiert. 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 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. 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 ∈ Z≥0 gege- Für das FEEDBACK VERTEX SET Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gege-
ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens
k in G existiert. k in G existiert.
@@ -33,13 +33,13 @@ k in G existiert.
Hausaufgabe 9.1 (Nichtdeterministischer Algorithmus für VC) (5 Punkte) 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 1. Finden Sie ein minimales Vertex Cover in Abbildung 1. Für ein Vertex Cover ist die
Orientierung der Kanten nicht relevant. Orientierung der Kanten nicht relevant.
2. Zeigen Sie V ERTEX C OVER ∈ NP, indem Sie einen nichtdeterministischen Algorithmus 2. Zeigen Sie VERTEX COVER ∈ NP, indem Sie einen nichtdeterministischen Algorithmus
angeben, der V ERTEX C OVER in Polynomialzeit löst. Begründen Sie die Korrektheit und angeben, der VERTEX COVER in Polynomialzeit löst. Begründen Sie die Korrektheit und
die Laufzeit von Ihrem Algorithmus. die Laufzeit von Ihrem Algorithmus.
Hausaufgabe 9.2 (Polynomieller Verifizierer für FVS) (5 Punkte) Hausaufgabe 9.2 (Polynomieller Verifizierer für FVS) (5 Punkte)
1. Finden Sie ein minimales Feedback Vertex Set in Abbildung 1. 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 2. Zeigen Sie FEEDBACK VERTEX SET ∈ NP, indem Sie einen polynomiellen Verifizierer
für F EEDBACK V ERTEX S ET angeben. Begründen Sie die Korrektheit und die Laufzeit für FEEDBACK VERTEX SET angeben. Begründen Sie die Korrektheit und die Laufzeit
von Ihrem Verifizierer. von Ihrem Verifizierer.
Abgabe: 15.06.2026, 10:00 Uhr in Moodle. Abgabe: 15.06.2026, 10:00 Uhr in Moodle.
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
@@ -55,23 +55,23 @@ Abgabe: 15.06.2026, 10:00 Uhr in Moodle.
Definition 1 (Feedback Vertex Set (FVS)). Für einen gerichteten Graphen G = (V, E) ist ein 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. 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 ∈ Z≥0 gege- Für das FEEDBACK VERTEX SET Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gege-
ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens ben und es wird gefragt, ob ein Feedback Vertex Set mit Größe (Anzahl der Knoten) höchstens
k in G existiert. k in G existiert.
Hausaufgabe 10.1 (F EEDBACK V ERTEX S ET ist NP-vollständig) (5 Punkte) Hausaufgabe 10.1 (FEEDBACK VERTEX SET ist NP-vollständig) (5 Punkte)
Zeigen Sie, dass F EEDBACK V ERTEX S ET NP-vollständig ist. Zeigen Sie, dass FEEDBACK VERTEX SET NP-vollständig ist.
Hinweis: Reduzieren Sie V ERTEX C OVER auf F EEDBACK V ERTEX S ET. Wenn ein Vertex Cover Hinweis: Reduzieren Sie VERTEX COVER auf FEEDBACK VERTEX SET. Wenn ein Vertex Cover
aus einem Graphen entfernt wird, hat dieser keine Kanten mehr. aus einem Graphen entfernt wird, hat dieser keine Kanten mehr.
Hausaufgabe 10.2 (k-C LIQUE mit universellem Knoten) (5 Punkte) Hausaufgabe 10.2 (k-CLIQUE mit universellem Knoten) (5 Punkte)
Die folgende Aufgabe ist eine klassische Klausuraufgabe (da sie ein Problem, dessen NP- Die folgende Aufgabe ist eine klassische Klausuraufgabe (da sie ein Problem, dessen NP-
Vollständigkeit bereits bekannt ist, mit einer Zusatzeigenschaft versieht - und erneut nach NP- Vollständigkeit bereits bekannt ist, mit einer Zusatzeigenschaft versieht - und erneut nach NP-
Vollständigkeit fragt). Vollständigkeit fragt).
Wir definieren das Problem k-C LIQUE U NIVERSAL wie folgt: Wir definieren das Problem k-CLIQUE UNIVERSAL wie folgt:
Gegeben: Ein ungerichteter Graph G = (V, E) sowie eine Zahl k ∈ Z≥1 , wobei ein u ∈ V so Gegeben: Ein ungerichteter Graph G = (V, E) sowie eine Zahl k ∈ Z≥1 , wobei ein u ∈ V so
existiert, dass u mit allen anderen Knoten verbunden ist, i.e. { {u, v} | v ∈ V \ {u} } ⊆ E existiert, dass u mit allen anderen Knoten verbunden ist, i.e. { {u, v} | v ∈ V \ {u} } ⊆ E
Entscheide: Existiert eine Clique C ⊆ V von G mit |C| ≥ k? Entscheide: Existiert eine Clique C ⊆ V von G mit |C| ≥ k?
Zeigen Sie, dass k-C LIQUE U NIVERSAL NP-vollständig ist. Zeigen Sie, dass k-CLIQUE UNIVERSAL NP-vollständig ist.
@@ -88,7 +88,7 @@ Abgabe: 22.06.2026, 10:00 Uhr in Moodle.
Blatt 11 Blatt 11
Definition 1 (Dreiecksüberdeckung eines Graphen (∆ C OVER)). Definition 1 (Dreiecksüberdeckung eines Graphen (∆ COVER)).
Gegeben Ein ungerichteter Graph G = (V, E) und eine Zahl k ∈ Z≥0 . Gegeben Ein ungerichteter Graph G = (V, E) und eine Zahl k ∈ Z≥0 .
Entscheide Besitzt G eine Dreiecksüberdeckung C∆ ⊆ V mit |C∆ | ≤ k, Entscheide Besitzt G eine Dreiecksüberdeckung C∆ ⊆ V mit |C∆ | ≤ k,
@@ -102,7 +102,7 @@ Entscheide Besitzt G eine Dreiecksüberdeckung C∆ ⊆ V mit |C∆ | ≤ k,
Abbildung 1: Zwei Beispielgraphen Abbildung 1: Zwei Beispielgraphen
Hausaufgabe 11.1 (5 Punkte) Hausaufgabe 11.1 (5 Punkte)
Zeigen Sie: ∆ C OVER ist NP-vollständig. Zeigen Sie: ∆ COVER ist NP-vollständig.
Definition 2 (Halteproblem auf DTMs). Eine DTM M hält auf dem Wort w, wenn die Be- Definition 2 (Halteproblem auf DTMs). Eine DTM M hält auf dem Wort w, wenn die Be-
rechnung von M auf w eine Stopkonfiguration erreicht. Für eine geeignete Kodierung ⟨•, •⟩ rechnung von M auf w eine Stopkonfiguration erreicht. Für eine geeignete Kodierung ⟨•, •⟩
@@ -125,11 +125,11 @@ Abgabe: 30.06.2026, 10:00 Uhr in Moodle.
Blatt 12 Blatt 12
Definition 1 (M AX -3-S AT). Bei dem Problem M AX -3-S AT ist eine Formel φ in konjunktiver Definition 1 (MAX -3-SAT). Bei dem Problem MAX -3-SAT ist eine Formel φ in konjunktiver
Normalform gegeben, wobei jede Klausel 3 Literale enthält. Gesucht ist eine Belegung β der Normalform gegeben, wobei jede Klausel 3 Literale enthält. Gesucht ist eine Belegung β der
Variablen, die die Anzahl v(β ) der erfüllten Klauseln maximiert. Variablen, die die Anzahl v(β ) der erfüllten Klauseln maximiert.
Hausaufgabe 12.1 (M AX -3-S AT, K LAUSURAUFGABE AUS S O S E 23, PZ1) (10 Punkte) Hausaufgabe 12.1 (MAX -3-SAT, KLAUSURAUFGABE AUS S O S E 23, PZ1) (10 Punkte)
Betrachten Sie folgenden Algorithmus A: Betrachten Sie folgenden Algorithmus A:
• Sei β0 die Belegung, die alle Variablen auf false setzt. • Sei β0 die Belegung, die alle Variablen auf false setzt.
• Sei β1 die Belegung, die alle Variablen auf true setzt. • Sei β1 die Belegung, die alle Variablen auf true setzt.
@@ -158,33 +158,33 @@ Abgabe: 06.07.2026, 10:00 Uhr in Moodle.
Blatt 13 Blatt 13
Hausaufgabe 13.1 (Lower Bound: V ERTEX C OVER) (5 Punkte) Hausaufgabe 13.1 (Lower Bound: VERTEX COVER) (5 Punkte)
Betrachten Sie die Reduktion aus der Musterlösung zu Präsenzserie 10 von C LIQUE auf V ER - Betrachten Sie die Reduktion aus der Musterlösung zu Präsenzserie 10 von CLIQUE auf VER -
TEX C OVER . TEX COVER .
1. Geben Sie die Anzahl der Knoten, die Anzahl der Kanten und den Wert k für die re- 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 sultierende VERTEX COVER Instanz in Abhängigkeit von der originalen CLIQUE Instanz
an. an.
2. Zeigen Sie Lower Bounds für V ERTEX C OVER bezüglich Anzahl der Knoten, Anzahl 2. Zeigen Sie Lower Bounds für VERTEX COVER bezüglich Anzahl der Knoten, Anzahl
der Kanten und k basierend auf der ETH und der Reduktion aus der Musterlösung zu der Kanten und k basierend auf der ETH und der Reduktion aus der Musterlösung zu
Präsenzserie 10. Präsenzserie 10.
Definition 1 (H ITTING S ET). Bei diesem Problem ist ein Universum U, Teilmengen des Uni- Definition 1 (HITTING SET). Bei diesem Problem ist ein Universum U, Teilmengen des Uni-
versums F1 , . . . , Fr ⊆ U und eine Zahl k ∈ Z≥0 gegeben. Gibt es eine Menge S ⊆ U mit |U| ≤ k versums F1 , . . . , Fr ⊆ U und eine Zahl k ∈ Z≥0 gegeben. Gibt es eine Menge S ⊆ U mit |U| ≤ k
und S ∩ Fi ̸= 0/ für alle i ∈ [r]? und S ∩ Fi ̸= 0/ für alle i ∈ [r]?
Anschaulicher wird bei diesem Problem nach maximal k Elementen aus dem Universum ge- Anschaulicher wird bei diesem Problem nach maximal k Elementen aus dem Universum ge-
fragt, sodass diese Elemente alle gegebenen Mengen Fi „treffen“. fragt, sodass diese Elemente alle gegebenen Mengen Fi „treffen“.
Hausaufgabe 13.2 (Lower Bound: H ITTING S ET) (5 Punkte) Hausaufgabe 13.2 (Lower Bound: HITTING SET) (5 Punkte)
Betrachten Sie folgende Reduktion von 3-SAT auf H ITTING S ET. Betrachten Sie folgende Reduktion von 3-SAT auf HITTING SET.
Für eine gegebene 3-SAT Instanz I mit n Variablen x1 , . . . , xn und m Klauseln C1 , . . . ,Cm : Als 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 := 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 { 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. und erhalten damit eine HITTING SET Instanz I.
1. Geben Sie die Größe des Universums, die Anzahl der Mengen und die Zahl k aus der 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 resultierenden HITTING SET Instanz in Abhängigkeit von der Anzahl der Variablen n und
der Anzahl der Klauseln m aus der originalen 3-SAT Instanz an. 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 2. Beweisen Sie Lower Bounds für HITTING SET bezüglich Universumsgröße, Anzahl der
Mengen und der Zahl k basierend auf der obigen Reduktion und der ETH. Mengen und der Zahl k basierend auf der obigen Reduktion und der ETH.
@@ -204,7 +204,7 @@ Abgabe: 13.07.2026, 10:00 Uhr in Moodle.
Definition 1 (Knapsack (Entscheidungsvariante)). Gegeben ist eine Menge mit n Gegenstän- Definition 1 (Knapsack (Entscheidungsvariante)). Gegeben ist eine Menge mit n Gegenstän-
den mit Gewichten w1 , . . . , wn ∈ Z≥0 und Profiten p1 , . . . , pn ∈ Z≥0 . Weiter sind eine Kapazität den mit Gewichten w1 , . . . , wn ∈ Z≥0 und Profiten p1 , . . . , pn ∈ Z≥0 . Weiter sind eine Kapazität
K ∈ Z≥0 und ein Zielprofit P ∈ Z≥0 gegeben. Bei dem K NAPSACK Problem muss entschieden K ∈ Z≥0 und ein Zielprofit P ∈ Z≥0 gegeben. Bei dem KNAPSACK Problem muss entschieden
werden, ob eine Teilmenge S ⊆ [n] existiert, sodass werden, ob eine Teilmenge S ⊆ [n] existiert, sodass
∑ wi ≤ K und ∑ pi ≥ P ∑ wi ≤ K und ∑ pi ≥ P
@@ -212,8 +212,8 @@ werden, ob eine Teilmenge S ⊆ [n] existiert, sodass
gilt. gilt.
Präsenzaufgabe 9.1 (K NAPSACK in NP) Präsenzaufgabe 9.1 (KNAPSACK in NP)
Zeigen Sie K NAPSACK ∈ NP auf zwei verschiedene Wege. Zeigen Sie KNAPSACK ∈ NP auf zwei verschiedene Wege.
1. Geben Sie einen nicht deterministischen Algorithmus an, der das Problem in polynomi- 1. Geben Sie einen nicht deterministischen Algorithmus an, der das Problem in polynomi-
eller Zeit löst. eller Zeit löst.
2. Geben Sie einen polynomiellen Verifizierer für das Problem an. 2. Geben Sie einen polynomiellen Verifizierer für das Problem an.
@@ -244,12 +244,12 @@ unter bestimmten Bedingungen? Welche?):
Definition 1 (Vertex Cover (VC)). Für einen (ungerichteten) Graphen G = (V, E) ist ein Vertex 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 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 alle Kanten mindestens ein Endpunkt in C.
Für das V ERTEX C OVER Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gegeben und Für das VERTEX COVER Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gegeben und
es wird gefragt, ob ein Vertex Cover mit Größe (Anzahl der Knoten) höchstens k in G existiert. es wird gefragt, ob ein Vertex Cover mit Größe (Anzahl der Knoten) höchstens k in G existiert.
Präsenzaufgabe 10.2 (V ERTEX C OVER ist NP-vollständig) Präsenzaufgabe 10.2 (VERTEX COVER ist NP-vollständig)
Zeigen Sie, dass V ERTEX C OVER NP-vollständig ist. Zeigen Sie, dass VERTEX COVER NP-vollständig ist.
Hinweis: Reduzieren Sie C LIQUE auf V ERTEX C OVER. Hinweis: Reduzieren Sie CLIQUE auf VERTEX COVER.
Präsenzaufgabe 10.3 (Turingmaschinen) Präsenzaufgabe 10.3 (Turingmaschinen)
n n
Entwerfen Sie eine Turingmaschine, welche die Sprache L = { 02 | n ∈ Z≥0 } über dem Al- Entwerfen Sie eine Turingmaschine, welche die Sprache L = { 02 | n ∈ Z≥0 } über dem Al-
@@ -272,21 +272,21 @@ Diskutieren Sie nachfolgende Aussagen. Sind diese wahr oder falsch?
(a) Für L ∈ NP gilt, aus L ≤ 3-SAT folgt, dass L NP-vollständig ist. (a) Für L ∈ NP gilt, aus L ≤ 3-SAT folgt, dass L NP-vollständig ist.
(b) Gilt für eine Sprache L, dass sowohl L ≤ 3-SAT als auch 3-SAT ≤ L, dann ist L NP-vollständig. (b) Gilt für eine Sprache L, dass sowohl L ≤ 3-SAT als auch 3-SAT ≤ L, dann ist L NP-vollständig.
(c) Sei L NP-vollständig. Dann gilt L ∈ P genau dann, wenn P = NP. (c) Sei L NP-vollständig. Dann gilt L ∈ P genau dann, wenn P = NP.
(d) Es ist möglich, dass 3-SAT ∈ P und C LIQUE ∈ (d) Es ist möglich, dass 3-SAT ∈ P und CLIQUE ∈
/ P. / P.
Präsenzaufgabe 11.2 (NP-Vollständigkeit) Präsenzaufgabe 11.2 (NP-Vollständigkeit)
In dem Problem C LIQUE -N OMEMBER ist ein Graph G = (V, E), ein Knoten v ∈ V sowie eine In dem Problem CLIQUE -NOMEMBER ist ein Graph G = (V, E), ein Knoten v ∈ V sowie eine
Zahl k ∈ Z≥0 gegeben und es soll entschieden werden, ob es eine Clique mit k Knoten gibt, die Zahl k ∈ Z≥0 gegeben und es soll entschieden werden, ob es eine Clique mit k Knoten gibt, die
den Knoten v nicht enthält. den Knoten v nicht enthält.
Zeigen Sie, dass C LIQUE -N OMEMBER NP-vollständig ist, indem Sie eine Reduktion von C LI - Zeigen Sie, dass CLIQUE -NOMEMBER NP-vollständig ist, indem Sie eine Reduktion von CLI -
QUE auf C LIQUE -N OMEMBER angeben. Sie können davon ausgehen, dass C LIQUE -N OMEMBER ∈ QUE auf CLIQUE -NOMEMBER angeben. Sie können davon ausgehen, dass CLIQUE -NOMEMBER ∈
NP ist. NP ist.
Präsenzaufgabe 11.3 (NP-Vollständigkeit) Präsenzaufgabe 11.3 (NP-Vollständigkeit)
Für das Problem S UBSET S UM C ARDINALITY seien n ganze Zahlen c1 , . . . , cn ∈ Z>0 (wobei n Für das Problem SUBSET SUM CARDINALITY seien n ganze Zahlen c1 , . . . , cn ∈ Z>0 (wobei n
gerade sei) sowie eine Zahl K ∈ Z≥0 gegeben. Es soll entschieden werden, ob es eine Teilmenge gerade sei) sowie eine Zahl K ∈ Z≥0 gegeben. Es soll entschieden werden, ob es eine Teilmenge
S ⊂ {1, . . . , n} gibt mit |S| = n/2 und ∑i∈S ci = K. S ⊂ {1, . . . , n} gibt mit |S| = n/2 und ∑i∈S ci = K.
Zeigen Sie, dass das Problem S UBSET S UM C ARDINALITY NP-vollständig ist. Sie können Zeigen Sie, dass das Problem SUBSET SUM CARDINALITY NP-vollständig ist. Sie können
davon ausgehen, dass S UBSET S UM C ARDINALITY ∈ NP ist. davon ausgehen, dass SUBSET SUM CARDINALITY ∈ NP ist.
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Theoretische Informatik Institut für Informatik, Arbeitsgruppe Theoretische Informatik
Dr. Max A. Deppert, Janina Reuter, Annika Huch Dr. Max A. Deppert, Janina Reuter, Annika Huch
@@ -307,7 +307,7 @@ Gegeben ist der folgende approximative Algorithmus mit Güte 2 für VertexCover:
Idee: Wähle eine beliebige Kante. Wenn einer der beiden Endknoten bereits in C ist, verwirf Idee: Wähle eine beliebige Kante. Wenn einer der beiden Endknoten bereits in C ist, verwirf
diese Kante. Sonst, füge beide Endknoten zur Menge C hinzu. Mache dies für jede Kante. diese Kante. Sonst, füge beide Endknoten zur Menge C hinzu. Mache dies für jede Kante.
Algorithmus 2A PPROX VC(G = (V, E)) Algorithmus 2APPROX VC(G = (V, E))
1 C = {} 1 C = {}
2 foreach {u, v} ∈ E do 2 foreach {u, v} ∈ E do
@@ -320,8 +320,8 @@ Algorithmus 2A PPROX VC(G = (V, E))
Beweisen Sie die Güte. Beweisen Sie die Güte.
Präsenzaufgabe 12.2 (TSP) Präsenzaufgabe 12.2 (TSP)
In der Vorlesung haben Sie zwei approximative Algorithmen für das TSP-Problem kennen ge- In der Vorlesung haben Sie zwei approximative Algorithmen für das TSP-Problem kennen ge-
lernt. Der erste Algorithmus ∆T SP1 hat eine Approximationsrate von 2, während der zweite lernt. Der erste Algorithmus ∆TSP1 hat eine Approximationsrate von 2, während der zweite
Algorithmus ∆T SP2 von Christofides eine Approximationsrate von 3/2 besitzt. In dieser Übung Algorithmus ∆TSP2 von Christofides eine Approximationsrate von 3/2 besitzt. In dieser Übung
soll gezeigt werden, dass die zweite Rate scharf ist. D.h., dass es eine Folge von Instanzen gibt, soll gezeigt werden, dass die zweite Rate scharf ist. D.h., dass es eine Folge von Instanzen gibt,
auf denen der Algorithmus immer näher an diese Rate heran kommt. auf denen der Algorithmus immer näher an diese Rate heran kommt.
Wir betrachten den vollständigen Graphen Kn = (V, E) für ein n ∈ Z≥6 mit n mod 4 = 2 und die Wir betrachten den vollständigen Graphen Kn = (V, E) für ein n ∈ Z≥6 mit n mod 4 = 2 und die
@@ -368,12 +368,12 @@ Vorlesung bekannten) Reduktionen (Laufzeitfaktoren, die polynomiell in der Einga
sind, dürfen vernachlässigt werden)? sind, dürfen vernachlässigt werden)?
Schätzen Sie dazu zunächst die verschiedenen Parameter der resultierenden Instanz mithilfe der Schätzen Sie dazu zunächst die verschiedenen Parameter der resultierenden Instanz mithilfe der
Parameter der eingegebenen Instanz geeignet ab. Parameter der eingegebenen Instanz geeignet ab.
1. 3-SAT ≤ k-C LIQUE 1. 3-SAT ≤ k-CLIQUE
2. k-C LIQUE ≤ k-I NDEPENDENT S ET (Problemdefinition für die Antwort nicht relevant; in 2. k-CLIQUE ≤ k-INDEPENDENT SET (Problemdefinition für die Antwort nicht relevant; in
der Reduktion wird der Graph G = (V, E) auf den Komplementgraph (V, E) abgebildet) der Reduktion wird der Graph G = (V, E) auf den Komplementgraph (V, E) abgebildet)
3. SAT ≤ 3-D IMENSIONAL M ATCHING (Hinweis: 3-SAT ⊆ SAT) 3. SAT ≤ 3-DIMENSIONAL MATCHING (Hinweis: 3-SAT ⊆ SAT)
4. 3-D IMENSIONAL M ATCHING ≤ 3-E XACT C OVER 4. 3-DIMENSIONAL MATCHING ≤ 3-EXACT COVER
5. 3-E XACT C OVER ≤ S UBSET S UM 5. 3-EXACT COVER ≤ SUBSET SUM
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Theoretische Informatik Institut für Informatik, Arbeitsgruppe Theoretische Informatik
Dr. Max A. Deppert, Janina Reuter, Annika Huch Dr. Max A. Deppert, Janina Reuter, Annika Huch
@@ -387,7 +387,7 @@ Parameter der eingegebenen Instanz geeignet ab.
Definition 1 (Knapsack (Entscheidungsvariante)). Gegeben ist eine Menge mit n Gegenstän- Definition 1 (Knapsack (Entscheidungsvariante)). Gegeben ist eine Menge mit n Gegenstän-
den mit Gewichten w1 , . . . , wn ∈ Z≥0 und Profiten p1 , . . . , pn ∈ Z≥0 . Weiter sind eine Kapazität den mit Gewichten w1 , . . . , wn ∈ Z≥0 und Profiten p1 , . . . , pn ∈ Z≥0 . Weiter sind eine Kapazität
K ∈ Z≥0 und ein Zielprofit P ∈ Z≥0 gegeben. Bei dem K NAPSACK Problem muss entschieden K ∈ Z≥0 und ein Zielprofit P ∈ Z≥0 gegeben. Bei dem KNAPSACK Problem muss entschieden
werden, ob eine Teilmenge S ⊆ [n] existiert, sodass werden, ob eine Teilmenge S ⊆ [n] existiert, sodass
∑ wi ≤ K und ∑ pi ≥ P ∑ wi ≤ K und ∑ pi ≥ P
@@ -395,8 +395,8 @@ werden, ob eine Teilmenge S ⊆ [n] existiert, sodass
gilt. gilt.
Präsenzaufgabe 9.1 (K NAPSACK in NP) Präsenzaufgabe 9.1 (KNAPSACK in NP)
Zeigen Sie K NAPSACK ∈ NP auf zwei verschiedene Wege. Zeigen Sie KNAPSACK ∈ NP auf zwei verschiedene Wege.
1. Geben Sie einen nicht deterministischen Algorithmus an, der das Problem in polynomi- 1. Geben Sie einen nicht deterministischen Algorithmus an, der das Problem in polynomi-
eller Zeit löst. eller Zeit löst.
2. Geben Sie einen polynomiellen Verifizierer für das Problem an. 2. Geben Sie einen polynomiellen Verifizierer für das Problem an.
@@ -410,7 +410,7 @@ Lösung. 1. Der Algorithmus arbeitet wie folgt: Für jeden Gegenstand entsche
auch vom Algorithmus akzeptiert. auch vom Algorithmus akzeptiert.
Der Algorithmus macht polynomiell viele nichtdeterministische Entscheidungen und die Der Algorithmus macht polynomiell viele nichtdeterministische Entscheidungen und die
Überprüfung der Eigenschaften ist ebenfalls in Polynomialzeit möglich, also ist dies ein Überprüfung der Eigenschaften ist ebenfalls in Polynomialzeit möglich, also ist dies ein
polynomieller, nichtdeterministischer Algorithmus, der K NAPSACK löst. polynomieller, nichtdeterministischer Algorithmus, der KNAPSACK löst.
2. Unser Zertifikat ist eine Teilmenge S ⊆ [n], die die Auswahl für den Rucksack darstellen 2. Unser Zertifikat ist eine Teilmenge S ⊆ [n], die die Auswahl für den Rucksack darstellen
soll. Dies kann zum Beispiel über ein Bit pro Gegenstand realisiert werden. Um dieses soll. Dies kann zum Beispiel über ein Bit pro Gegenstand realisiert werden. Um dieses
Zertifikat zu verifizieren, berechnen wir ∑i∈S wi und ∑i∈S pi und vergleichen die Werte Zertifikat zu verifizieren, berechnen wir ∑i∈S wi und ∑i∈S pi und vergleichen die Werte
@@ -464,7 +464,7 @@ Lösung. (i) Die Aussage gilt nur, wenn P = NP. Dann liegen alle Probleme in NP
Falls P ̸= NP, dann nein, weil sonst folgender Widerspruch auftritt: ein Problem in NP \ P Falls P ̸= NP, dann nein, weil sonst folgender Widerspruch auftritt: ein Problem in NP \ P
ist von einer NDTM, nicht aber von einer DTM in polynomieller Zeit lösbar. Könnte eine ist von einer NDTM, nicht aber von einer DTM in polynomieller Zeit lösbar. Könnte eine
DTM die NDTM in polynomieller Zeit simulieren, wäre das Problem auch in P. DTM die NDTM in polynomieller Zeit simulieren, wäre das Problem auch in P.
(ii) Falsch. Es gibt NP-schwere Probleme, die nicht in NP liegen, z.B. das H ALTE-Problem. (ii) Falsch. Es gibt NP-schwere Probleme, die nicht in NP liegen, z.B. das HALTE-Problem.
Diese liegen folglich auch definitiv nicht in P. NP-schwer ist eine untere Schranke, ∈ NP Diese liegen folglich auch definitiv nicht in P. NP-schwer ist eine untere Schranke, ∈ NP
eine obere, und wenn beide erfüllt sind, ist ein Problem NP-vollständig. eine obere, und wenn beide erfüllt sind, ist ein Problem NP-vollständig.
@@ -473,27 +473,27 @@ Lösung. (i) Die Aussage gilt nur, wenn P = NP. Dann liegen alle Probleme in NP
Definition 1 (Vertex Cover (VC)). Für einen (ungerichteten) Graphen G = (V, E) ist ein Vertex 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 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 alle Kanten mindestens ein Endpunkt in C.
Für das V ERTEX C OVER Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gegeben und Für das VERTEX COVER Problem ist neben einem Graphen G eine Zahl k ∈ Z≥0 gegeben und
es wird gefragt, ob ein Vertex Cover mit Größe (Anzahl der Knoten) höchstens k in G existiert. es wird gefragt, ob ein Vertex Cover mit Größe (Anzahl der Knoten) höchstens k in G existiert.
Präsenzaufgabe 10.2 (V ERTEX C OVER ist NP-vollständig) Präsenzaufgabe 10.2 (VERTEX COVER ist NP-vollständig)
Zeigen Sie, dass V ERTEX C OVER NP-vollständig ist. Zeigen Sie, dass VERTEX COVER NP-vollständig ist.
Hinweis: Reduzieren Sie C LIQUE auf V ERTEX C OVER. Hinweis: Reduzieren Sie CLIQUE auf VERTEX COVER.
Lösung. V ERTEX C OVER ∈ NP ist bekannt aus der letzten Hausaufgabe. Lösung. VERTEX COVER ∈ NP ist bekannt aus der letzten Hausaufgabe.
Vorüberlegung zur Reduktion von C LIQUE auf V ERTEX C OVER: Sei eine Instanz mit G = Vorüberlegung zur Reduktion von CLIQUE auf VERTEX COVER: Sei eine Instanz mit G =
(V, E) und k ∈ Z≥0 von C LIQUE gegeben. Wir invertieren zunächst den Graphen G und erhal- (V, E) und k ∈ Z≥0 von CLIQUE gegeben. Wir invertieren zunächst den Graphen G und erhal-
ten damit G . Nun enthält G genau dann eine unabhängige Menge der Größe , wenn G eine ten damit G . Nun enthält G genau dann eine unabhängige Menge der Größe , wenn G eine
Clique der Größe enthält. Wenn ein Graph mit n Knoten eine unabhängige Menge mit min- Clique der Größe enthält. Wenn ein Graph mit n Knoten eine unabhängige Menge mit min-
destens k Knoten hat, dann hat der Graph auch ein Vertex Cover mit maximal n k Knoten destens k Knoten hat, dann hat der Graph auch ein Vertex Cover mit maximal n k Knoten
(das Komplement zur unabhängigen Menge). Unsere Instanz für V ERTEX C OVER ist also G (das Komplement zur unabhängigen Menge). Unsere Instanz für VERTEX COVER ist also G
und n k. (k ≤ n können wir annehmen) und n k. (k ≤ n können wir annehmen)
Betrachte nun folgende Reduktion: Betrachte nun folgende Reduktion:
Sei eine Instanz mit G = (V, E) und k ∈ Z≥0 von C LIQUE gegeben. Invertiere den Graphen G Sei eine Instanz mit G = (V, E) und k ∈ Z≥0 von CLIQUE gegeben. Invertiere den Graphen G
und erhalte damit G . Gebe nun G und n k als Instanz von V ERTEX C OVER zurück. und erhalte damit G . Gebe nun G und n k als Instanz von VERTEX COVER zurück.
Korrektheit: Korrektheit:
⇒ (Falls (G, k) eine Ja-Instanz von C LIQUE ist, dann ist (G , n k) eine Ja-Instanz von V ER - ⇒ (Falls (G, k) eine Ja-Instanz von CLIQUE ist, dann ist (G , n k) eine Ja-Instanz von VER -
TEX C OVER .): TEX COVER .):
G enthalte eine Clique C der Größe ≥ k. Dann ist V := V \C ein Vertex Cover von G der Größe G enthalte eine Clique C der Größe ≥ k. Dann ist V := V \C ein Vertex Cover von G der Größe
≤ n k. Da |C| ≥ k, gilt |V | ≤ n k. Da C eine Clique ist, also alle Knoten aus C mit allen ≤ n k. Da |C| ≥ k, gilt |V | ≤ n k. Da C eine Clique ist, also alle Knoten aus C mit allen
@@ -501,8 +501,8 @@ anderen Knoten aus C verbunden sind, gibt es im invertierten Graphen G keine
Knoten aus C. Also gilt für jede Kante {u, v} ∈ E , dass u ∈ / C und somit u ∈ V oder Knoten aus C. Also gilt für jede Kante {u, v} ∈ E , dass u ∈ / C und somit u ∈ V oder
/ C oder v ∈ / C oder v ∈
v ∈ V . v ∈ V .
⇐ (Falls (G , n k) eine Ja-Instanz von V ERTEX C OVER ist, dann ist (G, k) eine Ja-Instanz von ⇐ (Falls (G , n k) eine Ja-Instanz von VERTEX COVER ist, dann ist (G, k) eine Ja-Instanz von
C LIQUE.): CLIQUE.):
G enthalte ein Vertex Cover V der Größe ≤ nk. Dann ist C := V \V eine Clique der Größe ≥ G enthalte ein Vertex Cover V der Größe ≤ nk. Dann ist C := V \V eine Clique der Größe ≥
k in G. Da |V | ≤ n k, gilt |C| ≥ k. Für jede Menge {u, v} ⊆ C gilt, dass {u, v} ∈ k in G. Da |V | ≤ n k, gilt |C| ≥ k. Für jede Menge {u, v} ⊆ C gilt, dass {u, v} ∈
/ E . Ansonsten / E . Ansonsten
@@ -510,8 +510,8 @@ wäre V kein korrektes Vertex Cover. Da G der invertierte Graph von G ist
für jede Menge {u, v} ⊆ C. für jede Menge {u, v} ⊆ C.
Laufzeit: Das Invertieren des Graphen kann naiv in O(|V |2 · |E|) Zeit, also in polynomieller Laufzeit: Das Invertieren des Graphen kann naiv in O(|V |2 · |E|) Zeit, also in polynomieller
Zeit, erledigt werden. Zeit, erledigt werden.
Also existiert eine polynomielle Reduktion von C LIQUE auf V ERTEX C OVER. Da C LIQUE Also existiert eine polynomielle Reduktion von CLIQUE auf VERTEX COVER. Da CLIQUE
NP-vollständig ist und V ERTEX C OVER ∈ NP gilt, ist somit V ERTEX C OVER NP-vollständig. NP-vollständig ist und VERTEX COVER ∈ NP gilt, ist somit VERTEX COVER NP-vollständig.
Präsenzaufgabe 10.3 (Turingmaschinen) Präsenzaufgabe 10.3 (Turingmaschinen)
@@ -563,7 +563,7 @@ Diskutieren Sie nachfolgende Aussagen. Sind diese wahr oder falsch?
(a) Für L ∈ NP gilt, aus L ≤ 3-SAT folgt, dass L NP-vollständig ist. (a) Für L ∈ NP gilt, aus L ≤ 3-SAT folgt, dass L NP-vollständig ist.
(b) Gilt für eine Sprache L, dass sowohl L ≤ 3-SAT als auch 3-SAT ≤ L, dann ist L NP-vollständig. (b) Gilt für eine Sprache L, dass sowohl L ≤ 3-SAT als auch 3-SAT ≤ L, dann ist L NP-vollständig.
(c) Sei L NP-vollständig. Dann gilt L ∈ P genau dann, wenn P = NP. (c) Sei L NP-vollständig. Dann gilt L ∈ P genau dann, wenn P = NP.
(d) Es ist möglich, dass 3-SAT ∈ P und C LIQUE ∈ (d) Es ist möglich, dass 3-SAT ∈ P und CLIQUE ∈
/ P. / P.
Lösung. Lösung.
/ Offensichtlich gilt L ∈ NP. Aus L ≤ 3-SAT folgt nur, / Offensichtlich gilt L ∈ NP. Aus L ≤ 3-SAT folgt nur,
@@ -572,51 +572,51 @@ Lösung.
(b) Das ist die Definition von NP-vollständig. (b) Das ist die Definition von NP-vollständig.
(c) Korrekt, da sich jedes Problem auf L reduzieren lässt nach Def. NP-vollständig (und offen- (c) Korrekt, da sich jedes Problem auf L reduzieren lässt nach Def. NP-vollständig (und offen-
sichtlich P ⊆ NP). sichtlich P ⊆ NP).
(d) Nein, weil 3-SAT NP-vollständig ist, lässt sich C LIQUE (liegt bekannterweise in NP, ist (d) Nein, weil 3-SAT NP-vollständig ist, lässt sich CLIQUE (liegt bekannterweise in NP, ist
sogar NP-vollständig) auf 3-SAT reduzieren. sogar NP-vollständig) auf 3-SAT reduzieren.
Präsenzaufgabe 11.2 (NP-Vollständigkeit) Präsenzaufgabe 11.2 (NP-Vollständigkeit)
In dem Problem C LIQUE -N OMEMBER ist ein Graph G = (V, E), ein Knoten v ∈ V sowie eine In dem Problem CLIQUE -NOMEMBER ist ein Graph G = (V, E), ein Knoten v ∈ V sowie eine
Zahl k ∈ Z≥0 gegeben und es soll entschieden werden, ob es eine Clique mit k Knoten gibt, die Zahl k ∈ Z≥0 gegeben und es soll entschieden werden, ob es eine Clique mit k Knoten gibt, die
den Knoten v nicht enthält. den Knoten v nicht enthält.
Zeigen Sie, dass C LIQUE -N OMEMBER NP-vollständig ist, indem Sie eine Reduktion von C LI - Zeigen Sie, dass CLIQUE -NOMEMBER NP-vollständig ist, indem Sie eine Reduktion von CLI -
QUE auf C LIQUE -N OMEMBER angeben. Sie können davon ausgehen, dass C LIQUE -N OMEMBER ∈ QUE auf CLIQUE -NOMEMBER angeben. Sie können davon ausgehen, dass CLIQUE -NOMEMBER ∈
NP ist. NP ist.
Lösung. Clique-Nomember ist NP-schwer: Lösung. Clique-Nomember ist NP-schwer:
Sei (G = (V, E), k) eine Eingabe für das Clique Problem. Sei (G = (V, E), k) eine Eingabe für das Clique Problem.
Idee: Füge einen neuen isolierten Knoten v zu G hinzu. Idee: Füge einen neuen isolierten Knoten v zu G hinzu.
Wir geben zuerst die Abbildung an: Sei v ̸∈ V . Wir definieren die Eingabe für das Problem Wir geben zuerst die Abbildung an: Sei v ̸∈ V . Wir definieren die Eingabe für das Problem
C LIQUE -N OMEMBER als den Graphen G := (V {v}, E), den Knoten v als Knoten, der nicht CLIQUE -NOMEMBER als den Graphen G := (V {v}, E), den Knoten v als Knoten, der nicht
benutzt werden darf, und k als gesuchte Cliquengröße. (G , v, k) ist eine gültige Eingabe für benutzt werden darf, und k als gesuchte Cliquengröße. (G , v, k) ist eine gültige Eingabe für
C LIQUE -N OMEMBER und in polynomieller Zeit berechenbar. CLIQUE -NOMEMBER und in polynomieller Zeit berechenbar.
Wir zeigen nun: G hat eine k-Clique genau dann, wenn G eine k-Clique ohne v beinhaltet. Wir zeigen nun: G hat eine k-Clique genau dann, wenn G eine k-Clique ohne v beinhaltet.
⇒: ⇒:
Sei (G, k) eine Ja-Instanz des C LIQUE Problems. Dann enthält G eine k-Clique C. Dann ist C Sei (G, k) eine Ja-Instanz des CLIQUE Problems. Dann enthält G eine k-Clique C. Dann ist C
auch eine k-Clique in G , da bei der Abbildung keine Kanten entfernt wurden. Da v ̸∈ V , enthält auch eine k-Clique in G , da bei der Abbildung keine Kanten entfernt wurden. Da v ̸∈ V , enthält
C den Knoten v nicht. Damit ist C eine k-Clique in G ohne den Knoten v. (G , v, k) ist also eine C den Knoten v nicht. Damit ist C eine k-Clique in G ohne den Knoten v. (G , v, k) ist also eine
Ja-Instanz des C LIQUE -N OMEMBER Problems. Ja-Instanz des CLIQUE -NOMEMBER Problems.
⇐: ⇐:
Sei (G , v, k) eine Ja-Instanz des C LIQUE -N OMEMBER Problems. Dann enthält G eine k-Clique Sei (G , v, k) eine Ja-Instanz des CLIQUE -NOMEMBER Problems. Dann enthält G eine k-Clique
C mit v ̸∈ C. Da bei der Abbildung an dem Graphen nichts geändert wurde, außer der Knoten v C mit v ̸∈ C. Da bei der Abbildung an dem Graphen nichts geändert wurde, außer der Knoten v
hinzugefügt, muss C auch eine k-Clique in G sein. Damit ist (G, k) eine Ja-Instanz des C LIQUE hinzugefügt, muss C auch eine k-Clique in G sein. Damit ist (G, k) eine Ja-Instanz des CLIQUE
Problems. Problems.
Also existiert eine polynomielle Reduktion von C LIQUE auf C LIQUE -N OMEMBER. Da C LI - Also existiert eine polynomielle Reduktion von CLIQUE auf CLIQUE -NOMEMBER. Da CLI -
QUE NP-vollständig ist und C LIQUE -N OMEMBER ∈ NP nach Aufgabenstellung gilt, ist somit QUE NP-vollständig ist und CLIQUE -NOMEMBER ∈ NP nach Aufgabenstellung gilt, ist somit
C LIQUE -N OMEMBER NP-vollständig. CLIQUE -NOMEMBER NP-vollständig.
Präsenzaufgabe 11.3 (NP-Vollständigkeit) Präsenzaufgabe 11.3 (NP-Vollständigkeit)
Für das Problem S UBSET S UM C ARDINALITY seien n ganze Zahlen c1 , . . . , cn ∈ Z>0 (wobei n Für das Problem SUBSET SUM CARDINALITY seien n ganze Zahlen c1 , . . . , cn ∈ Z>0 (wobei n
gerade sei) sowie eine Zahl K ∈ Z≥0 gegeben. Es soll entschieden werden, ob es eine Teilmenge gerade sei) sowie eine Zahl K ∈ Z≥0 gegeben. Es soll entschieden werden, ob es eine Teilmenge
S ⊂ {1, . . . , n} gibt mit |S| = n/2 und ∑i∈S ci = K. S ⊂ {1, . . . , n} gibt mit |S| = n/2 und ∑i∈S ci = K.
Zeigen Sie, dass das Problem S UBSET S UM C ARDINALITY NP-vollständig ist. Sie können Zeigen Sie, dass das Problem SUBSET SUM CARDINALITY NP-vollständig ist. Sie können
davon ausgehen, dass S UBSET S UM C ARDINALITY ∈ NP ist. davon ausgehen, dass SUBSET SUM CARDINALITY ∈ NP ist.
Lösung. Subset Sum Cardinality ist NP-schwer: Lösung. Subset Sum Cardinality ist NP-schwer:
S UBSET S UM Problem: Gegeben: n ganze Zahlen c1 , . . . , cn ∈ Z>0 und Zahl K ∈ Z≥0 . Frage: SUBSET SUM Problem: Gegeben: n ganze Zahlen c1 , . . . , cn ∈ Z>0 und Zahl K ∈ Z≥0 . Frage:
Gibt es eine Teilmenge S ⊆ {0, . . . , n} mit ∑i∈S ci = K? Gibt es eine Teilmenge S ⊆ {0, . . . , n} mit ∑i∈S ci = K?
Reduktion: Sei I = (c1 , . . . , cn , K) eine Eingabe für das S UBSET S UM Problem. Definiere ci := Reduktion: Sei I = (c1 , . . . , cn , K) eine Eingabe für das SUBSET SUM Problem. Definiere ci :=
ci + 1 für i ≤ n und ci := 1 für i ∈ {n + 1, . . . , 2n}. Wir definieren die Eingabe für das Problem ci + 1 für i ≤ n und ci := 1 für i ∈ {n + 1, . . . , 2n}. Wir definieren die Eingabe für das Problem
S UBSET S UM C ARDINALITY als I = (c1 , . . . , c2n , K + n). SUBSET SUM CARDINALITY als I = (c1 , . . . , c2n , K + n).
Wir zeigen nun: Es gibt eine Lösung für I genau dann, wenn es eine Lösung für I gibt. Wir zeigen nun: Es gibt eine Lösung für I genau dann, wenn es eine Lösung für I gibt.
⇒: ⇒:
Sei I eine Ja-Instanz des S UBSET S UM Problems. Dann gibt es eine Menge S ⊆ {1, . . . , n} mit Sei I eine Ja-Instanz des SUBSET SUM Problems. Dann gibt es eine Menge S ⊆ {1, . . . , n} mit
∑i∈S ci = K. Es gilt also ∑i∈S ci = ∑i∈S (ci + 1) = K + |S|. Sei nun S = {n + 1, . . . , 2n |S|}. Es ∑i∈S ci = K. Es gilt also ∑i∈S ci = ∑i∈S (ci + 1) = K + |S|. Sei nun S = {n + 1, . . . , 2n |S|}. Es
gilt |S S | = n und ∑i∈SS ci = ∑i∈S ci + ∑i∈S ci = ∑i∈S (ci + 1) + ∑i∈S 1 = K + |S| + (n |S|) = gilt |S S | = n und ∑i∈SS ci = ∑i∈S ci + ∑i∈S ci = ∑i∈S (ci + 1) + ∑i∈S 1 = K + |S| + (n |S|) =
K + n. S S ist also eine Lösung für I und I damit eine Ja-Instanz. K + n. S S ist also eine Lösung für I und I damit eine Ja-Instanz.
@@ -628,9 +628,9 @@ K + n (n |S|) = K + |S|, woraus folgt, dass ∑i∈S ci = K. Damit ist S
somit I eine Ja-Instanz. somit I eine Ja-Instanz.
Laufzeit: Die Reduktion kann naiv in einer Zeit von O(n) implementiert werden. Das ist eine Laufzeit: Die Reduktion kann naiv in einer Zeit von O(n) implementiert werden. Das ist eine
polynomielle Laufzeit. polynomielle Laufzeit.
Also existiert eine polynomielle Reduktion von S UBSET S UM auf S UBSET S UM C ARDINALI - Also existiert eine polynomielle Reduktion von SUBSET SUM auf SUBSET SUM CARDINALI -
TY . Da nach Skript S UBSET S UM NP-vollständig ist und S UBSET S UM C ARDINALITY ∈ NP TY . Da nach Skript SUBSET SUM NP-vollständig ist und SUBSET SUM CARDINALITY ∈ NP
nach Aufgabenstellung gilt, ist somit S UBSET S UM C ARDINALITY NP-vollständig. nach Aufgabenstellung gilt, ist somit SUBSET SUM CARDINALITY NP-vollständig.
CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL CHRISTIAN-ALBRECHTS-UNIVERSITÄT ZU KIEL
Institut für Informatik, Arbeitsgruppe Theoretische Informatik Institut für Informatik, Arbeitsgruppe Theoretische Informatik
Dr. Max A. Deppert, Janina Reuter, Annika Huch Dr. Max A. Deppert, Janina Reuter, Annika Huch
@@ -651,7 +651,7 @@ Gegeben ist der folgende approximative Algorithmus mit Güte 2 für VertexCover:
Idee: Wähle eine beliebige Kante. Wenn einer der beiden Endknoten bereits in C ist, verwirf Idee: Wähle eine beliebige Kante. Wenn einer der beiden Endknoten bereits in C ist, verwirf
diese Kante. Sonst, füge beide Endknoten zur Menge C hinzu. Mache dies für jede Kante. diese Kante. Sonst, füge beide Endknoten zur Menge C hinzu. Mache dies für jede Kante.
Algorithmus 2A PPROX VC(G = (V, E)) Algorithmus 2APPROX VC(G = (V, E))
1 C = {} 1 C = {}
2 foreach {u, v} ∈ E do 2 foreach {u, v} ∈ E do
@@ -674,8 +674,8 @@ aus A. Da keine zwei Kanten aus A vom gleichen Knoten aus C überdeckt werden
so groß wie die optimale Lösung C . Damit berechnet der Algorithmus eine 2-Approximation. so groß wie die optimale Lösung C . Damit berechnet der Algorithmus eine 2-Approximation.
Präsenzaufgabe 12.2 (TSP) Präsenzaufgabe 12.2 (TSP)
In der Vorlesung haben Sie zwei approximative Algorithmen für das TSP-Problem kennen ge- In der Vorlesung haben Sie zwei approximative Algorithmen für das TSP-Problem kennen ge-
lernt. Der erste Algorithmus ∆T SP1 hat eine Approximationsrate von 2, während der zweite lernt. Der erste Algorithmus ∆TSP1 hat eine Approximationsrate von 2, während der zweite
Algorithmus ∆T SP2 von Christofides eine Approximationsrate von 3/2 besitzt. In dieser Übung Algorithmus ∆TSP2 von Christofides eine Approximationsrate von 3/2 besitzt. In dieser Übung
soll gezeigt werden, dass die zweite Rate scharf ist. D.h., dass es eine Folge von Instanzen gibt, soll gezeigt werden, dass die zweite Rate scharf ist. D.h., dass es eine Folge von Instanzen gibt,
auf denen der Algorithmus immer näher an diese Rate heran kommt. auf denen der Algorithmus immer näher an diese Rate heran kommt.
Wir betrachten den vollständigen Graphen Kn = (V, E) für ein n ∈ Z≥6 mit n mod 4 = 2 und die Wir betrachten den vollständigen Graphen Kn = (V, E) für ein n ∈ Z≥6 mit n mod 4 = 2 und die
@@ -736,7 +736,7 @@ Knoten 3 gehen, dann zu Knoten 5 und so weiter, bis Knoten n 1 erreicht wurd
folgen Knoten n, n 2, n 4 und so weiter. Diese Tour hat offensichtlich Kosten n, da wir n folgen Knoten n, n 2, n 4 und so weiter. Diese Tour hat offensichtlich Kosten n, da wir n
Kanten mit Gewicht 1 nutzen. Somit gilt OPT((Kn , d2 )) = n und wir haben eine Rate von Kanten mit Gewicht 1 nutzen. Somit gilt OPT((Kn , d2 )) = n und wir haben eine Rate von
∆T SP2 ((Kn , d2 )) n 1 + n/2 1 ∆TSP2 ((Kn , d2 )) n 1 + n/2 1
= = 3/2 ≤ 3/2. = = 3/2 ≤ 3/2.
OPT((Kn , d2 )) n n OPT((Kn , d2 )) n n
@@ -764,12 +764,12 @@ Vorlesung bekannten) Reduktionen (Laufzeitfaktoren, die polynomiell in der Einga
sind, dürfen vernachlässigt werden)? sind, dürfen vernachlässigt werden)?
Schätzen Sie dazu zunächst die verschiedenen Parameter der resultierenden Instanz mithilfe der Schätzen Sie dazu zunächst die verschiedenen Parameter der resultierenden Instanz mithilfe der
Parameter der eingegebenen Instanz geeignet ab. Parameter der eingegebenen Instanz geeignet ab.
1. 3-SAT ≤ k-C LIQUE 1. 3-SAT ≤ k-CLIQUE
2. k-C LIQUE ≤ k-I NDEPENDENT S ET (Problemdefinition für die Antwort nicht relevant; in 2. k-CLIQUE ≤ k-INDEPENDENT SET (Problemdefinition für die Antwort nicht relevant; in
der Reduktion wird der Graph G = (V, E) auf den Komplementgraph (V, E) abgebildet) der Reduktion wird der Graph G = (V, E) auf den Komplementgraph (V, E) abgebildet)
3. SAT ≤ 3-D IMENSIONAL M ATCHING (Hinweis: 3-SAT ⊆ SAT) 3. SAT ≤ 3-DIMENSIONAL MATCHING (Hinweis: 3-SAT ⊆ SAT)
4. 3-D IMENSIONAL M ATCHING ≤ 3-E XACT C OVER 4. 3-DIMENSIONAL MATCHING ≤ 3-EXACT COVER
5. 3-E XACT C OVER ≤ S UBSET S UM 5. 3-EXACT COVER ≤ SUBSET SUM
Lösung. Angenommen ETH gilt. Das Sparsification Lemma impliziert, dass man 3-SAT nicht Lösung. Angenommen ETH gilt. Das Sparsification Lemma impliziert, dass man 3-SAT nicht
in 2o(m) · |I|O(1) lösen kann. in 2o(m) · |I|O(1) lösen kann.