23.06.2013 Aufrufe

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle Version des Vorlesungsskripts - ZIB

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!