18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

138 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN<br />

Jeder Knoten hat e<strong>in</strong>en (leeren) Weg der Länge 0 zu sich selbst.<br />

Seien e<strong>in</strong> gerichteter Graph G und zwei Knoten v und w gegeben, dann entscheiden<br />

wir <strong>in</strong> l<strong>in</strong>earer Zeit O(n+k), ob e<strong>in</strong> Weg von v nach w führt. Sei M die Menge aller<br />

Knoten zu denen e<strong>in</strong> Weg von v führt.<br />

Algorithmus für gerichteter Weg<br />

E<strong>in</strong>gabe: E<strong>in</strong> gerichteter Graph G = (V, E) und zwei Knoten v und w<br />

Augabe: JA, falls e<strong>in</strong> gerichteter Weg von v nach w führt, ansonsten NEIN<br />

{Initialisierung:}<br />

M := {v}<br />

{Rekursionsschritt:}<br />

while e<strong>in</strong>e Kante (x, y) mit x ∈ M und y /∈ M existiert do<br />

M := M ∪ {y}<br />

E := E − {(x, y)}<br />

od<br />

{Ausgabe:}<br />

JA, falls w ∈ M, NEIN falls w ∈ M.<br />

Zeitkomplexität: Falls der Graph mit Adjazenzlisten implementiert ist, dauert dieser<br />

Algorithmus O(n + k) Schritte, denn jede Liste wird höchstens e<strong>in</strong>mal durchsucht.<br />

6.2 Komplexitätsklasse P<br />

Alle Probleme, die e<strong>in</strong> Rechner mit polynomialer Zeitkomplexität lösen kann, formen<br />

die Klasse P. Genauer: e<strong>in</strong> Entscheidungsproblem gehört zu P, falls es e<strong>in</strong>en<br />

Algorithmus gibt, der für jede E<strong>in</strong>gabe der Länge n <strong>in</strong> höchstens p(n) Zeite<strong>in</strong>heiten<br />

entscheidet, ob die Antwort JA oder NEIN ist, wobei p(n) e<strong>in</strong> (gegebenes) Polynom<br />

ist. Es entsteht die Frage: welche Implementierung haben wir hier im S<strong>in</strong>n?<br />

Die Antwort ist: die Klasse P ist von der Implementierung unabhängig. Verschiedene<br />

Implementierungen können natürlich verschiedene Zeitkomplexitäten haben<br />

(wie im Fall des TOPOLOGISCHEN SORTIERENS <strong>in</strong> 6.1 gezeigt wurde); d.h.,<br />

das Polynom p(n) wird für jede Implementierung <strong>in</strong>dividuell gewählt werden. Aber<br />

die Existenz e<strong>in</strong>es Polynomes ist unabhängig von der Implementierung. Das zeigen<br />

wir, <strong>in</strong>dem wir Tur<strong>in</strong>gmasch<strong>in</strong>en als Implementierungsmodell nehmen und dann beweisen,<br />

dass dieselbe Klasse P auch z.B. mit RAM als Modell entsteht. Der Beweis<br />

für andere Berechnungsmodelle folgt analog.<br />

Def<strong>in</strong>ition. Wir sagen, dass e<strong>in</strong>e determ<strong>in</strong>istische TM e<strong>in</strong>e Zeitkomplexität t(n)<br />

hat, wobei t(n) e<strong>in</strong>e Funktion aus der Menge ist, falls die TM für jede E<strong>in</strong>gabe<br />

der Länge n <strong>in</strong> höchstens t(n) Schritten hält.<br />

Beispiel 1. Die Sprache L ⊆ {0, 1} ∗ aller Wörter, die ke<strong>in</strong>e zwei benachbarten<br />

E<strong>in</strong>sen enthalten, kann von der folgenden TM akzeptiert werden: M bleibt solange<br />

im Initialzustand q0, wie sie Nullen liest, also (q0, 0) → (q0, R). Falls M e<strong>in</strong>e 1 liest,<br />

geht sie <strong>in</strong> den Zustand q1 über: (q0, 1) → (q1, R). Falls nach der 1 gleich e<strong>in</strong>e 0<br />

folgt, gehen wir zurück zum Zustand q0, falls aber noch e<strong>in</strong>e 1 gelesen wird, hält<br />

die Masch<strong>in</strong>e im (nichtf<strong>in</strong>alen) Zustand q1. Und falls das Blanksymbol gelesen wird,<br />

hält die Masch<strong>in</strong>e im f<strong>in</strong>alen Zustand qF. Hier ist e<strong>in</strong>e vollständige Beschreibung<br />

von M:<br />

M = ({q0, q1, qF }, {0, 1}, δ, q0, qF)

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!