aktuelle Version des Vorlesungsskripts - ZIB
aktuelle Version des Vorlesungsskripts - ZIB
aktuelle Version des Vorlesungsskripts - ZIB
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4 Komplexitätstheorie und Speicherung von Graphen<br />
(b) Die Funktion sA : N −→ N, definiert durch<br />
sA(n) := max{Speicherbedarf von A zur Lösung von I | I ∈ Πund 〈I〉 ≤ n},<br />
heißt Speicherplatzfunktion von A.<br />
(c) Der Algorithmus A hat eine polynomiale Laufzeit (kurz: A ist ein polynomialer<br />
Algorithmus), wenn es ein Polynom p : N −→ N gibt mit<br />
fA(n) ≤ p(n) für alle n ∈ N.<br />
Wir sagen fA ist von der Ordnung höchstens n k (geschrieben fA = O(n k )), falls<br />
das Polynom p den Grad k hat.<br />
(d) Der Algorithmus A hat polynomialen Speicherplatzbedarf, falls es ein Polynom<br />
q : N −→ N gibt mit sA(n) ≤ q(n) für alle n ∈ N. △<br />
Wir werden uns in der Vorlesung hauptsächlich mit Problemen beschäftigen, für die<br />
polynomiale Algorithmen existieren. Wir werden aber auch Probleme behandeln, die in<br />
einem noch zu präzisierenden Sinne „schwieriger“ sind und für die (bisher) noch keine<br />
polynomialen Verfahren gefunden worden sind.<br />
Eine triviale Bemerkung sei hier gemacht. Ein Algorithmus, <strong>des</strong>sen Speicherplatzfunktion<br />
nicht durch ein Polynom beschränkt werden kann, kann keine polynomiale Laufzeit<br />
haben, da nach Definition jede Benutzung eines Speicherplatzes in die Berechnung der<br />
Laufzeitfunktion eingeht.<br />
Hausaufgabe. Bestimmen Sie die Laufzeitfunktion und die Speicherplatzfunktion <strong>des</strong><br />
folgenden Algorithmus:<br />
Eingabe: ganze Zahl n<br />
1: k := 〈n〉<br />
2: for i = 1, . . . , k do<br />
3: n := n · n · n<br />
4: end for<br />
5: Gib n aus.<br />
4.2 Die Klassen P und N P, N P-Vollständigkeit<br />
Wir wollen nun einige weitere Begriffe einführen, um zwischen „einfachen“ und „schwierigen“<br />
Problemen unterscheiden zu können. Wir werden dabei zunächst – aus technischen<br />
Gründen – nur Entscheidungsprobleme behandeln und später die Konzepte auf (die uns<br />
eigentlich interessierenden) Optimierungsprobleme erweitern. Ein Entscheidungsproblem<br />
ist ein Problem, das nur zwei mögliche Antworten besitzt, nämlich „ja“ oder „nein“. Die<br />
Fragen „Enthält ein Graph einen Kreis?“, „Enthält ein Graph einen hamiltonschen Kreis?“,<br />
„Ist die Zahl n eine Primzahl?“ sind z. B. Entscheidungsprobleme. Da wir uns nicht mit<br />
(für uns unwichtigen) Feinheiten der Komplexitätstheorie beschäftigen wollen, werden wir<br />
62