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

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

iti.cs.tu.bs.de
von iti.cs.tu.bs.de Mehr von diesem Publisher
18.09.2013 Aufrufe

148 KAPITEL 6. KOMPLEXITÄT VON ALGORITHMEN 6.4.1 TM mit zusätzlichem Gedächtnis Erinnern wir daran, dass eine TM mit zusätzlichem Gedächtnis die Möglichkeit eines Zugriffs auf ein Gedächtnis hat, in dem Symbole eines endlichen Alphabets A gespeichert werden, siehe 3.2.2. Dies ist allerdings eine ” normale“ TM mit der Zustandsmenge Q × A. Für die Definition der Klasse P ist es also unerheblich, ob wir TM oder TM mit zusätzlichem Gedächtnis als Berechnungsmodell anwenden. 6.4.2 TM mit mehrspurigem Band Auch dieses Modell ändert die Klasse P nicht, denn wie in 3.2.3 gezeigt wurde, ist eine TM mit k-spurigem Band eine ” normale“ TM mit dem Bandalphabet Σ = (Σ1 ∪ {#}) × · · · × (Σk ∪ {#}) − {(#, . . . , #)}. 6.4.3 Mehr-Band TM In 3.2.4 haben wir das Modell einer k-Band-TM eingeführt: die TM hat k Bänder mit k unabhängigen Lese- und Schreibköpfen, aber mit einer Steuereinheit, die aufgrund des gegebenen Zustandes und der k gelesenen Symbole die Aktivität der k Köpfe steuert. Wir haben in 3.2.4 bewiesen, dass jede k-Band-TM durch eine TM simuliert werden kann. Jetzt beweisen wir, dass dies in polynomialer Zeit möglich ist: Satz 1. Jede k-Band-TM mit einer Zeitkomplexität t(n) ≥ n kann durch eine 1- Band-TM mit einer Zeitkomplexität O(t(n) 2 ) simuliert werden. Beweis. Wir führen den Beweis für k = 2 durch, der allgemeine Fall läßt sich ganz analog durchführen. Wir gehen von der Simulation, die in Kapitel 3 (siehe 3.2.2) beschrieben wurde, aus. Jeder Berechnungsschritt der Simulation hat drei Unterabschnitte. Abschnitt 1 (der Anfang) dauert einen Schritt, Abschnitt 2 (Kopfbewegung nach rechts oder links) benötigt höchstens O(t(n)) Schritte, denn der Kopf wird unter das nächste Symbol ⇑ bewegt und in der Zeit t(n) kann die k-Band- TM auf jedem Band höchstens O(t(n)) neue Felder beschreiben. Im Abschnitt 3 wird die Berechnung von Kopf i simuliert (in konstanter Zeit für i = 1, 2) und der Kopf wird zwischen die beiden Symbole ⇑ (in O(t(n)) Schritten bewegt. Jeder Simulationsdurchgang dauert also höchstens O(t(n)) Schritte. Da wir höchstens t(n) Durchgänge benötigen, hat die 1-Band-TM die Zeitkomplexität O(t(n) 2 ). Korollar 1. Jede Sprache, die von einer k-Band-TM mit polynomialer Zeitkomplexität akzeptiert wird, gehört zur Klasse P. Beweis. Falls t(n) ein Polynom ist, ist auch t(n) 2 ein Polynom. Bemerkung 1. Mit anderen Worten würde die Klasse P die gleiche bleiben, falls wir bei der Definition von P anstelle der TM die k-Band-TM benutzt hätten. Das gilt auch für die Klasse FP. 6.4.4 RAM In Kapitel 4 haben wir RAM als ein realistischeres Berechnungsmodell als TM eingeführt. Dann haben wir bewiesen, dass die Modelle RAM und TM die gleiche Leistung haben. Das gilt auch für die entsprechenden Klassen FP der in polynomialer Zeit berechenbaren Funktionen. Zuerst müssen wir aber erklären, was Zeitkomplexität für RAMs bedeutet. Es gibt zwei Varianten:

6.4. ROBUSTHEIT DER KLASSE P 149 Uniforme Zeitkomplexität. Hierbei gilt analog zu TM, dass jede Durchführung eines Befehls einem Schritt entspricht. Trotz der Analogie zu TM ist diese Variante nicht realistisch genug: ein Feld der RAM kann nämlich eine beliebig große Zahl enthalten. Wir können z.B. die ganze Eingabe s1 . . .sn als eine (sehr große) Zahl i codieren und i in einem Feld speichern – dann hat die Eingabe einfach die Größe 1. Deshalb hat uniforme Zeitkomplexität nur geringere theoretische Bedeutung (obwohl sie manchmal benutzt wird mit der Voraussetzung, dass die Codierung ” vernünftig“ durchgeführt wurde). Logarithmische Zeitkomplexität zählt die Anzahl aller Ziffern, die die Operanden des Befehls berechnen. Also, falls in einem Feld eine Zahl n steht, hat n die Größe dig(n) = kleinste ganze Zahl größer oder gleich log n (dig(n) ist die Zahl aller Ziffern von n.) Jeder Befehl zählt als k+1 Schritte, wobei k die Summe der ” Größen“ der Operanden ist. Z.B. der Befehl STORE i dauert Und STORE ∗i dauert 1 + dig(i) + dig(n) Schritte, wobei 〈R0〉 = n. 1 + dig(i) + dig(n) + dig(m) Schritte, wobei 〈R0〉 = n und 〈Ri〉 = m. Satz 2. Jede RAM mit logarithmischer Zeitkomplexität t(n) kann von einer Mehr- Band TM mit der Zeitkomplexität O(t(n) 2 ) simuliert werden. Beweis. In Satz 1 in 4.2 haben wir gezeigt, wie man eine RAM einem Programm von p Zeilen von einer 6-Band-TM simulieren kann. Wir müssen nur beweisen, dass diese TM die Zeitkomplexität O(t(n) 2 ) hat. Für jede Eingabe der Länge n dauert die Berechnung der RAM höchstens t(n) Schritte, und es werden höchstens t(n) Befehle durchgeführt. Daraus folgt, dass jedes Register eine Zahl mit O(t(n)) Ziffern enthält. Wir zeigen, dass jeder Befehl in höchstens O(t(n)) Schritten mit der TM simuliert wird – daraus folgt, dass die ganze Berechnung nur O(t(n) 2 ) Schritte dauert. Es ist klar, dass auf jedem Band der TM höchstens O(t(n)) Felder beschriftet werden. Der Beweis, dass jeder Befehl in O(t(n)) Schritten simuliert wird, muß für alle möglichen Befehle einzeln durchgeführt werden. Wir nehmen zur Illustration den Fall STORE ∗i (detailliert im Beweis von Satz 1 in 4.2 beschrieben); die Zeitkomplexität der anderen Befehle läßt sich analog schätzen. Zuerst sucht der Kopf auf Band 2 die Kombination $ $ i $ j $ $. Da auf Band 2 höchstens O(t(n)) Felder beschriftet worden sind, dauert die Suche höchstens O(t(n)) Schritte. Dann schreibt die TM die Zahl j auf Band 5, dazu werden auch O(t(n)) Schritte benötigt, denn j hat O(t(n)) Ziffern. Da 3t(n) = O(t(n)), sehen wir, dass STORE ∗i in O(t(n)) Schritten simuliert wird. Korollar 2. Jede RAM mit polynomialer logarithmischer Zeitkomplexität berechnet eine Funktion der Klasse FP. Beweis. In der Tat wird eine RAM, falls sie die Zeitkomplexität t(n) hat, wobei t(n) ein Polynom ist, von einer Mehr-Band-TM mit der Zeitkomplexität O(t(n) 2 )

6.4. ROBUSTHEIT DER KLASSE P 149<br />

Uniforme Zeitkomplexität. Hierbei gilt analog zu TM, dass jede Durchführung<br />

e<strong>in</strong>es Befehls e<strong>in</strong>em Schritt entspricht. Trotz der Analogie zu TM ist diese Variante<br />

nicht realistisch genug: e<strong>in</strong> Feld der RAM kann nämlich e<strong>in</strong>e beliebig große<br />

Zahl enthalten. Wir können z.B. die ganze E<strong>in</strong>gabe s1 . . .sn als e<strong>in</strong>e (sehr große)<br />

Zahl i codieren und i <strong>in</strong> e<strong>in</strong>em Feld speichern – dann hat die E<strong>in</strong>gabe e<strong>in</strong>fach die<br />

Größe 1. Deshalb hat uniforme Zeitkomplexität nur ger<strong>in</strong>gere theoretische Bedeutung<br />

(obwohl sie manchmal benutzt wird mit der Voraussetzung, dass die Codierung<br />

” vernünftig“ durchgeführt wurde).<br />

Logarithmische Zeitkomplexität zählt die Anzahl aller Ziffern, die die Operanden<br />

des Befehls berechnen. Also, falls <strong>in</strong> e<strong>in</strong>em Feld e<strong>in</strong>e Zahl n steht, hat n die<br />

Größe<br />

dig(n) = kle<strong>in</strong>ste ganze Zahl größer oder gleich log n<br />

(dig(n) ist die Zahl aller Ziffern von n.)<br />

Jeder Befehl zählt als k+1 Schritte, wobei k die Summe der ” Größen“ der Operanden<br />

ist. Z.B. der Befehl STORE i dauert<br />

Und STORE ∗i dauert<br />

1 + dig(i) + dig(n) Schritte, wobei 〈R0〉 = n.<br />

1 + dig(i) + dig(n) + dig(m) Schritte, wobei 〈R0〉 = n und 〈Ri〉 = m.<br />

Satz 2. Jede RAM mit logarithmischer Zeitkomplexität t(n) kann von e<strong>in</strong>er Mehr-<br />

Band TM mit der Zeitkomplexität O(t(n) 2 ) simuliert werden.<br />

Beweis. In Satz 1 <strong>in</strong> 4.2 haben wir gezeigt, wie man e<strong>in</strong>e RAM e<strong>in</strong>em Programm<br />

von p Zeilen von e<strong>in</strong>er 6-Band-TM simulieren kann. Wir müssen nur beweisen, dass<br />

diese TM die Zeitkomplexität O(t(n) 2 ) hat.<br />

Für jede E<strong>in</strong>gabe der Länge n dauert die Berechnung der RAM höchstens t(n)<br />

Schritte, und es werden höchstens t(n) Befehle durchgeführt. Daraus folgt, dass<br />

jedes Register e<strong>in</strong>e Zahl mit O(t(n)) Ziffern enthält. Wir zeigen, dass jeder Befehl<br />

<strong>in</strong> höchstens O(t(n)) Schritten mit der TM simuliert wird – daraus folgt, dass die<br />

ganze Berechnung nur O(t(n) 2 ) Schritte dauert. Es ist klar, dass auf jedem Band<br />

der TM höchstens O(t(n)) Felder beschriftet werden.<br />

Der Beweis, dass jeder Befehl <strong>in</strong> O(t(n)) Schritten simuliert wird, muß für alle<br />

möglichen Befehle e<strong>in</strong>zeln durchgeführt werden. Wir nehmen zur Illustration den<br />

Fall<br />

STORE ∗i<br />

(detailliert im Beweis von Satz 1 <strong>in</strong> 4.2 beschrieben); die Zeitkomplexität der anderen<br />

Befehle läßt sich analog schätzen. Zuerst sucht der Kopf auf Band 2 die<br />

Komb<strong>in</strong>ation<br />

$ $ i $ j $ $.<br />

Da auf Band 2 höchstens O(t(n)) Felder beschriftet worden s<strong>in</strong>d, dauert die Suche<br />

höchstens O(t(n)) Schritte. Dann schreibt die TM die Zahl j auf Band 5, dazu<br />

werden auch O(t(n)) Schritte benötigt, denn j hat O(t(n)) Ziffern. Da 3t(n) =<br />

O(t(n)), sehen wir, dass STORE ∗i <strong>in</strong> O(t(n)) Schritten simuliert wird.<br />

Korollar 2. Jede RAM mit polynomialer logarithmischer Zeitkomplexität berechnet<br />

e<strong>in</strong>e Funktion der Klasse FP.<br />

Beweis. In der Tat wird e<strong>in</strong>e RAM, falls sie die Zeitkomplexität t(n) hat, wobei<br />

t(n) e<strong>in</strong> Polynom ist, von e<strong>in</strong>er Mehr-Band-TM mit der Zeitkomplexität O(t(n) 2 )

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!