Theoretische Informatik

Werbung
Theoretische Informatik
Prof. Dr. Stefan Edelkamp
Übersicht
1. Einleitung und Landau'sche O-Notation
1.1 Einleitung und Übersicht
1.2 Beweisprinzipien und die reelen Zahlen
1.3 O-Notation
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Übersicht
3. Die NP-Vollständigkeitstheorie
3.1 Die Komplexitätsklasse P
3.2 Nichtdeterministische Turingmaschinen und
die Komplexitätsklasse NP
3.3 NP-Vollständigkeit
3.4 Die NP-Vollständigkeit wichtiger Probleme
Übersicht
4. Endliche Automaten
4.1 Schaltwerke und endliche Automaten
4.2 Die Minimierung endlicher Automaten
4.3 Das Pumping-Lemma für endliche Automaten
4.4 Nichtdeterministische endliche Automaten
4.5 Effiziente Algorithmen für die Konstruktion endlicher
Automaten und die Entscheidung von Eigenschaften
regulärer Sprachen
Übersicht
5. Grammatiken, die Chomsky-Hierarchie und das
Wortproblem
5.1 Grammatiken und die Chomsky-Hierarchie
5.2 Chomsky-0-Grammatiken und rekursiv aufzählbare Sprachen
5.3 Chomsky-3-Grammatiken, reguläre Sprachen und Ausdrücke,
lexikalische Analyse
5.4 Kontextsensitive Grammatiken und Sprachen
Übersicht
6. Kontextfreie Grammatiken und Sprache
6.1 Beispiele kontextfreier Sprachen und Syntaxbäume
6.2 Die Chomsky-Normalform für kontext freie Grammatiken
6.3 Der Cocke-Younger-Kasami-Algorithmus
6.4 Das Pumping-Lemma und Ogdens Lemma für
kontextfreie Sprachen
6.5 Effiziente Algorithmen für die Konstruktion kontextfreier
Grammatiken und die Entscheidung von Eigenschaften
kontextfreier Sprachen
6.6 Unentscheidbare Probleme
6.7 Eine inhärent mehrdeutige kontextfreie Sprache
Übersicht
Zusammenfassung
Testfragen
Schriftenverzeichnis
Übersicht
1. Einleitung und Landau'sche O-Notation
1.1 Einleitung und Übersicht
1.2 Beweisprinzipien und die reelen Zahlen
1.3 O-Notation
Motivation: Theoretische Informatik
Die Inhalte der theoretischen Informatik sind
nicht so direkt anwendbar wie viele Inhalte der
Grundvorlesungen über Programmierung,
Rechnerarchitektur, Hardware, Datenstrukturen
und den Entwurf effizienter Algorithmen.
Dafür sind die Erkenntnisse der theoretischen
Informatik oft allgemeiner, umfassender und
weitreichender als in den anderen Gebieten der
Informatik.
Motivation: Grenzen der
Berechenbarkeit
Andere Vorlesungen zeigen wie Probleme mit
Rechnerhilfe gelöst werden können und wie gute
Rechner konzipiert sind.
Grenzen scheinen vor allem in der "noch nicht
genügend großen" Rechengeschwindigkeit und den
"noch nicht genügend leistungsstarken"
Speichermedien zu liegen.
Gibt es auch prinzipielle Grenzen? Gibt es also
(wichtige, interessante) Probleme, die prinzipiell,
fernab von physikalischen und elektrotechnischen
Beschränkungen, nicht von Rechnern gelöst werden
können?
Motivation: Turingmaschinen,
Registermaschinen und universelle
Rechner
Registermaschinen bilden ein stark vereinfachtes
Modell realer Rechner; dienen daher als Basis für
realistische Rechenzeitbetrachtungen.
Turingmaschinen wirken dagegen wie
Steinzeitrechner.
Es stellt sich jedoch heraus, dass alle bekannten
Modelle universeller Rechner, darunter auch die
Modelle der Registermaschinen und
Turingmaschinen, die gleiche Klasse von
Problemen lösen können.
Motivation: Optimierungsprobleme,
Entscheidungsprobleme, Sprachen
Optimierungsprobleme: Suche eine von eventuell
vielen optimalen Lösungen (nicht eine bestimmte).
Eingaben & Ausgaben werden dabei über einem
endlichen Alphabet Σ = {0,1}, codiert.
Problem: Relation R auf Σ* x Σ*, wobei Σ* = Menge aller
endlichen Strings (Wörter, Folgen) über'm Alphabet Σ.
(x, y) in R, wenn y zulässige Ausgabe zur Eingabe x ist.
Entscheidungsprobleme lassen sich als Ja-NeinFragen formulieren und somit durch Funktionen f : Σ* →
{0,1} und Sprachen L := f-1(1) ausdrücken.
Motivation: Programme und
Probleme
Es isteinfach, die Existenz von Funktionen f :
{0,1}* → {0,1} zu zeigen, die von keinem
Rechner (und keinem Programm) berechnet
werden können, selbst wenn Speicherplatz und
Rechenzeit unbegrenzt sind.
Erkenntnis: Programme Texte endlicher Länge
über einem endlichen Alphabet sind.
=> es gibt nur abzählbar unendlich viele
verschiedene Programe aber überabzählbar
unendlich viele Funktionen f: {0,1}* → {0,1}.
Motivation: Halteproblem
Halteproblem. Entscheidung, ob ein Programm
auf einer Eingabe nach endlicher Zeit stoppt.
→ Mit Rechnerhilfe nicht lösbar.
Zudem verfolgen wir das Ziel, Methoden
vorzustellen und einzuüben, so dass Sie für Sie
interessierende Probleme in der Lage sind, selber
Beweise für deren Nichtlösbarkeit zu führen.
Praktischer Nutzen: Negative Erkenntnisse
führen nicht zu neuen Programmen, aber dazu, die
Arbeit an nicht erreichbaren Zielen aufzugeben.
Motivation: Effiziente Lösbarkeit
Optimierungsprobleme: lösbar, da für jede
Eingabe nur unter endlich vielen Alternativen eine
beste auswählen muss.
Der naive Ansatz, alle Alternativen zu vergleichen,
ist praktisch oft wertlos, da die Zahl der Alternativen
exponentiell groß ist.
Wir suchen daher nicht nur nach Algorithmen,
sondern nach möglichst effizienten, zumindest
aber polynomiellen Algorithmen.
Motivation: NPVollständigkeitstheorie
Entweder für alle Probleme dieser Klasse gibt polynomielle
Algorithmen gibt oder für keines. Annahme: Für NPvollständige Probleme gibt es keine effizienten
Algorithmen.
Wenn diese so genannte NP≠P-Vermutung akzeptiert
wird, dient der Beweis der NP-Vollständigkeit eines
Problems als Nachweis für die Nichtexistenz effizienter
Algorithmen.
Auswege: effiziente Algorithmen für fast optimale
Lösungen, Algorithmen, die für viele Eingaben effizient
sind, probabilistische Algorithmen, die mit Zufallszahlen
arbeiten und oft gute Resultate erzielen, oder heuristische
Algorithmen.
Motivation: Endliche Automaten
Berechnungskraft äquivalent zu Schaltwerken.
Bilden die nahe liegende Beschreibungsform von
durch Kontaktschwellen und Druckknöpfe gesteuerten
Ampelanlagen, automatischen Waschmaschinen u. ä.
Für verschiedene Automatenmodelle wird gezeigt,
dass sie die gleichen Probleme lösen, sich aber in
ihrer minimalen Größe für ein Problem erheblich
unterscheiden können.
Erstaunlicherweise gibt es sogar effiziente
Algorithmen, um aus einem Automaten einen
Automaten minimaler Größe für das gleiche
Problem zu konstruieren.
Motivation: Grammatiken
Neben Komplexitäts- und Automatentheorie zweiter
Hauptzweig der theoretischen Informatik,
Grammatiken sind Grundlage von
Programmiersprachen, Syntaxanalyse, Semantik
und Compilerbau umfasst, zu.
Programmiersprachen werden durch Regelsysteme
definiert, die in Analogie zu den Regelsystemen
natürlicher Sprachen Grammatiken genannt werden.
Frage: Wie können wir entscheiden, ob eine Klasse
von Grammatiken geeignet ist,
Programmiersprachen zu beschreiben?
Motivation: Chomsky-Hierarchie
1. Klasse der von Turingmaschinen semientscheidbaren
Sprachen. Wortproblem nicht einmal entscheidbar.
4. Klasse der von endlichen Automaten entscheidbaren
Sprachen. Nicht einmal wohlgeformte Klammerausdrücke
können erzeugt werden,
3. Klasse der kontextsensitiven Grammatiken.
= Klasse der von geeignet speicherplatzbeschränkten
Turingmaschinen erkannten Sprachen.
=> Wortproblem NP-vollständig, während wir für die
Syntaxanalyse sehr effiziente Algorithmen brauchen.
2. Klasse der kontextfreien Grammatiken
Geeignet für den Entwurf von Programmiersprachen
Motivation: Pro und Contra
Kontextfreie Sprachen
+ Syntaxanalysealgorithmus mit kubischer Laufzeit
+ effiziente Algorithmen, um aus kontextfreien Grammatiken
kontextfreie Grammatiken für zusammengesetzte Sprachen
zu erzeugen,
+ Hilfsmittel, um zu zeigen, dass Sprachen nicht kontextfrei
sind.
- Klasse der kontextfreien Sprachen nicht gegen
Komplementbildung und Durchschnitt abgeschlossen
- wichtige Probleme sind mit Rechnerhilfe gar nicht lösbar:
Dazu gehört das Problem, für zwei kontextfreie Grammatiken
zu entscheiden, ob sie die gleiche Programmiersprache
beschreiben.
Übersicht
1. Einleitung und Landau'sche O-Notation
1.1 Einleitung und Übersicht
1.2 Beweisprinzipien und die reelen Zahlen
1.3 O-Notation
Beweis-Prinzipien
●
Modus Ponens: A => B und A gibt B
Alle Menschen sind sterblich. Sokrates ist ein
Mensch. Sokrates is sterblich
●
Direkter Beweis. (a + b)² = a² + 2ab + b²
Geometrisch: Nächste Seite.
●
Vollständige Induktion. A(n):1+...+n = n(n-1)/2
I.Voraussetzung A(1), I.Schluss A(n) → A(n+1):
A(n+1):(1+...+n)+n+1 = n+1+n(n-1)/2 = n(n+1)/2
Fortsetzung
●
Vollständige Induktion. A(n):1+...+2n-1 = n²
I.Voraussetzung A(1), I.Schluss A(n) → A(n+1):
A(n+1):(1+...+2n-1)+2n+1 = n²+2n+1 = (n+1)²
Indirekter Beweis
Annahme ¬A. Widerspruch. Also A.
Satz. Unendlich viele Primzahlen.
Beweis. Annahme. Endlich viele. Sei p aus
p_1,...,p_n größte PZ. Demnach q:=(p_1*...*p_n)1>p auch PZ. Widerspruch.
Satz.√2 keine rationale Zahl
Beweis. Annahme: √2 = p/q (o.B.d.A. gekürzt)
=> 2 = p²/q² oder 2 q² = p².
Widerspruch: Eindeutigkeit der Primfaktorzerlegung
(Über)abzählbar unendlich
Definition. Wir nennen eine Menge M abzählbar
(unendlich), falls es eine Abbildung aus den
natürlichen Zahlen IN in M gibt.
●
IN_0 (Unendliches Hotel)
●
Menge der ganzen Zahlen
●
Menge der Bruchzahlen
●
Menge der Primzahlen
Satz. IR ist überabzählbar (unendlich).
Cantor'scher Diagonalschluss
Annahme: Es gibt eine Aufzählung mit a_1,
a_2, ..., a_j, ..., von [0,1) in IR.
Jedes a lässt sich als unendlicher Dezimalbruch
0,z_1z_2...z_i... darstellen (notfalls mit 0en
auffüllen).
Schreibt man alle Zahlen untereinander, ist die
Diagonale 0,d_1d_2...d_i... eine weitere Zahl.
Werden jetzt alle Ziffern d_i leicht pertubiert,
erhält man eine Zahl 0,x_1x_2 ...x_i... mit x_i =
(d_i +1) mod 10.
=> diese Zahl kommt in der Aufzählung nicht vor!
Übersicht
1. Einleitung und Landau'sche O-Notation
1.1 Einleitung und Übersicht
1.2 Beweisprinzipien und die reelen Zahlen
1.3 O-Notation
Landau'sche O-Notation
Beschreibung für Funktionsklassen; dient zur
Einordnung von Laufzeiten.
Obere Schranken:
- f(n) = O(g(n)) ↔ es existieren c in IR^+ und n_0
in IN, so dass für alle n ≥ n_0: f(n) ≤ c * g(n)
- f(n) = o(g(n)) ↔ für alle c in IR^+ existiert ein n_0
in IN, so dass für alle n ≥ n_0: f(n) ≤ c * g(n)
Erste Implikationen
Bsp.
n²/2 + 3n +4 = O(n²)
3n³ +2 n ln n + 5 = O(n³)
1/n = o(1)
Weitere Implikationen
Mit Grenzwerten kann man einfacher schließen:
- es existiert c in IR^+ mit lim_{n→∞} f(n)/g(n) ≤ c
→ f(n) in O(g(n))
- lim_{n→∞} f(n)/g(n) = 0
→ f(n) in o(g(n))
Sind die Funktionen f und g differenzierbar, dann
gilt die Regel von L'Hospital:
lim_{n→∞} f'(n)/g'(n) = c
→ lim_{n→∞} f(n)/g(n) = c
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische
Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Registermaschinen und
deterministische Turingmaschinen
Der Aufbau einer Registermaschine (RAM
Random Access Machine)
Befehle einer RAM
LOAD i: c(0) := c(i), b:= b + 1.
STORE i : c(i) := c(0), b:= b + 1.
ADD i: c(0) := c(0) + c(i), b:= b + 1.
SUB i : c(0) := max{c(0) - c(i),0}, b:= b + 1.
MULT i: c(0) := c(0) * c(i), b:= b + 1.
DIV i: c(0) := c(0)/c(i), b:= b + 1.
GO TO j: b:= j.
IF c(0)? l GO TO j: b := j falls c(0)? l wahr ist, und
b := b + 1 sonst. (Dabei ist ? in {=, <,~, >,~}).
END: b:= b.
Präfix IND (für indirekte Adressierung): In den jeweiligen Zeilen wird
c(i) durch c(c(i)) ersetzt.
Kostenmaße
uniformes Kostenmaß: Jede Programmzeile mit
Ausnahme des Befehls END eine Kosteneinheit
verursacht.
→ Dieses Maß ist gerechtfertigt, solange nicht mit sehr
großen Zahlen gerechnet wird.
logarithmisches Kostenmaß: Kosten eines
Rechenschrittes entsprechen der Zahlenlänge der dabei
benutzten Zahlen.
→ Rechenschritte mit sehr großen Zahlen können viele
normale Rechenschritte in sich "verstecken".
Deterministische Turingmaschine
(DTM oder TM)
Q: die endliche Zustandsmenge
Σ: das endliche Eingabealphabet
Γ: das endliche Bandalphabet
B: das Leerzeichen
q_0 in Q, der Anfangszustand
δ, die Zustandsüberführungsfunktion (δ : Q x Γ → Q x Γ x {R, L, N})
(eventuell) F ⊆ Q, die Menge der akzeptierenden Endzustände.
Berechenbar-, Entscheidbar- und
Semientscheidbarkeit
i) Funktion f : Σ* → Σ* ist total rekursiv (berechenbar),
wenn es eine TM gibt, die aus der Eingabe x den
Funktionswert f(x) berechnet.
ii) Funktion f : IN^k → IN (beachte, dass IN kein endliches
Alphabet ist) ist total rekursiv, wenn es eine TM gibt, die für
Eingaben vom Typ bin(i_1)#bin(i_2)#bin(i_3)# ... #bin(i_k)#
mit Ergebnis bin(m) stoppt, wenn m = f(i_1, ... ,i_k) ist
iii) Sprache L in Σ* ist rekursiv (entscheidbar), wenn es
eine TM gibt, die auf allen Eingaben stoppt und die Eingabe
w genau dann akzeptiert, wenn w in List.
iv) Sprache L in Σ* heißt rekursiv aufzählbar
(semientscheidbar), wenn es eine TM gibt, die genau die
Eingaben w aus L akzeptiert.
TM für Sprache L = {0^n 1^n | n ≥ 1}
Phase 1: Wir stellen fest, ob die Eingabe vom Typ 0^i 1^j mit j ≤ 1 ist.
Im negativen Fall verwerfen wir die Eingabe.
Phase 2: Wir testen, ob i = j ist.
δ
S=q_0
0
(q_0,0,R)
1
B
(q_1,1,R)
q_1
-
(q_1,1,R)
q_2
-
(q_3,B,L)
(q_2,B,L)
-
q_3
(q_3,0,L)
(q_3,1,L)
q_4
(q_5,B,R)
-
q_5
(q_6,0,R)
(q_6,1,R)
(q_7,B,R)
q_6
(q_6,0,R)
(q_6,1,R)
(q_2,B,L)
-
-
q_7 in F
-
(q_4,B,R)
-
Zustände und ihre Bedeutung
q_0: Lesen der Eingabe, beim Finden einer 1 Wechsel in q_1. Wird keine 1
gefunden, Fehler.
q_1: Lesen der Eingabe, solange 1en gefunden werden. Wird noch eine 0
gefunden, Fehler. Wird ein B gefunden, ist Phase 1 erfolgreich. Wechsel nach
q_2 und zurück zum letzten Buchstaben.
q_2: Falls letzter Buchstabe eine 0, Fehler. Ebenso, falls letzter Buchstabe ein
B. Sonst Ersetzen der letzten 1 durch B, Schritt nach links, Wechsel in q_3.
q_3: Überlaufen nach links zum ersten B, dort nach rechts, Wechsel in q_4.
q_4: Wenn der linkeste Buchstabe eine 1 ist, gibt es mehr 1en als 0en, also
Fehler, ebenso, wenn es keinen linkesten Buchstaben gibt, also ein B
gefunden wird. Wenn jedoch eine 1 gefunden wird, wird diese durch B ersetzt,
Wechsel nach q_5. Wir haben jetzt die linkeste und die rechteste 1 entfernt.
q_5: Testen, ob das Restwort leer ist. Dann Wechsel in q_7. Sonst zu q_6.
q_6: Überlaufen des Restwortes nach rechts, bis erstes B gefunden wird,
dann wieder nach links und in den Zustand q_2.
q_7: Akzeptierender Endzustand.
Konfiguration
i) Konfiguration einer TM ist String aqß mit a in Γ*, q in Q
und ß in Γ* => Inschrift aß eingerahmt von lauter
Leerzeichen, Maschine ist im Zustand q und Kopf zeigt auf
Zelle, die ersten Buchstaben von ß enthält.
ii) a' q' ß' direkte Nachfolgekonfiguration von aqß, wenn a'
q' ß' in einem Rechenschritt aus aqß entsteht.
Notation: aqß |- a' q' ß'.
iii) a" q" ß" Nachfolgekonfiguration von aqß, wenn a" q" ß"
in endlich vielen Rechenschritten aus aqß entsteht.
Notation: aqß |-* a"q"ß".
Es gilt stets aqß |-* aqß, da "kein Rechenschritt" in der
Formulierung "endlich viele Rechenschritte" enthalten ist.
Beispiel
Eingabe: 0011. Rechnung:
ε q_0 0011 |- 0 q_0 011 |- 00 q_0 11 |- 001 q_1 1 |0011 q_1 B |- 001 q_2 1 |- 00 q_3 1 |- 0 q_3 01 |- q_3
001 |- ε q_3 B 001 |- ε q_4 001 |- ε q_5 01 |- 0 q_6 1 |01 q_6 _ |- 0 q_2 1 |- ε q_3 0 |- ε q_3 _0 |- ε q_4 0 |- ε
q_5 _ |- ε q_7 B.
Hier stoppt die Rechnung.
q_7 ist akzeptierend
0011 ist Element der Sprache {0^n 1^n | n ≤ 1} erkannt.
Es gilt ε q_0 0011 |-* ε q_7 B.
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Techniken (1)
1.) Endlicher Speicher mit schnellem Zugriff. Sollen
Daten aus einer endlichen Menge A, gespeichert
werden, können wir diesen Speicher wie folgt in die
Zustandsmenge Q integrieren: Q_neu := Q x A.
2.) Mehrspurenmaschinen. Wir ersetzen Γ durch Σ ∪
Γ^k, wobei B^k das neue Leerzeichen ist. Addition:
–
benutze drei Spuren (Eingabe besteht aus beiden
Summanden).
–
schaffe unterhalb des ersten Summanden Platz für zwei
weitere Zahlen.
–
kopiere den zweiten Summanden in die zweite Spur
unterhalb des ersten Summanden.
–
Wende die Schulmethode für die Addition an.
Techniken (2)
3.) Unterprogramme: Kopiere die zu übergebenden
Daten auf einen weit rechts (oder links) liegenden
Bereich von freien Speicherzellen
=> Das Ergebnis wird in den vorgesehenen Bereich des
Speichers, das heißt des Bandes, geschrieben und es
wird dann in den Zustand zurückgesprungen, in dem das
übergeordnete Programm weiterarbeiten soll.
4.) Schleifen (Unterprogramme mit bestimmten
Abbruchkriterien):
–
a) for-Schleife: vergrößere oder verkleinere entsprechende
Zähler und vergleiche mit dem Abbruchwert.
–
b) while-Schleife überprüfe an passender Stelle das
Abbruchkriterium.
Techniken (3)
Mehrbandmaschinen (k Rechenköpfe) => δ : Q x Γ^k → Q x
Γ^k x {R, L, N} => keine TM im Sinne obiger Definition.
Simulation einer Maschine M durch eine Maschine M':
Maschine M', die das Verhalten von M nachahmt. Der einfachste
Simulationstyp ist die Schritt-für-Schritt-Simulation, bei der jeder
Rechenschritt von M nachgeahmt wird.
Zur Beurteilung der Effizienz berücksichtigen wir die Ressourcen
Zeit und Speicherplatz, wobei Speicherplatz bei TM die Zahl
der Zellen ist, auf die irgendwann der Kopf der TM zeigt.
Satz. Eine k-Band-Turingmaschine M, die mit Rechenzeit t(n)
und Speicherplatz s(n) auskommt, kann von einer
Turingmaschine M' mit Zeitbedarf O(t²(n)) und Speicherplatz
O(s(n)) simuliert werden.
Beweis Mehrband-TM
Nutze TM M' mit 2k+ 1 Spuren. Nach Simulation des tten Schrittes (0 ≤ t ≤ t(n)) von M:
●
●
Spuren 1,3, ... , 2k - 1 enthalten das, was die k
Bänder von M enthalten.
Spuren 2,4, ... ,2k enthalten jeweils genau eine
Markierung # an der Position, wo der entsprechende
Kopf von M steht.
●
Letzte Spur: zwei Markierungen # und ##, wobei #
die linkeste von einem Rechnerkopf von M erreichte
Position angibt und ## die entsprechende rechteste
Position bezeichnet.
Initialisierung: in Zeit O(1) möglich
Beweis Mehrband-TM
Schritt t: Kopf von M' steht zuerst auf der Zelle, die in der
letzten Spur # enthält und Zustand von M' erreichten Zustand
von M.
Kopf läuft nach rechts bis zur Markierung ## und merkt sich in
einem endlichen Speicher, was die k Köpfe von M lesen
würden => weiß, was M tun würde.
Kopf von M' läuft nach links und verändert Bandinschriften so,
wie es M auf den k Bändern machen würde (Markierungen für
Kopfpositionen sowie # und ## werden ggf. verschoben).
M' merkt sich Zustand, in den M wechselt. Am Ende steht Kopf
von M' auf Position, die in letzter Spur # enthält =>
Ausgangssituation für Simulation von Schritt (t + 1).
Abstand zwischen # und ## durch t(n) und s(n) beschränkt =>
jeder Schritt von M kann durch M' in O(t(n)) simuliert werden.
Techniken (4)
6.) Unbeschränkter Speicher. Für Adressen kann ein
weiteres Band zur Verfügung genutzt werden. Information
mit Adresse 0 wird auf einer Extraspur markiert, und nach
rechts (ähnl. links) gesucht. Informationen sind durch
bestimmte Markierungen voneinander getrennt. Beim
Überlaufen einer Markierung wird 1 von der Adresse
subtrahiert. Bei 0 ist die gesuchte Information gefunden.
7.) Sortieren. Offensichtlich ist das Zwei-Phasen-DreiBand-Sortieren gut geeignet für TM.
8.) Datenstrukturen. Es ist eine gute Übung, sich zu
überlegen, dass wir alle uns bekannten Datenstrukturen
auch in der Umgebung von TM einsetzen können.
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Simulation TM ↔ RAM
Satz. Jede logarithmisch t(n)-zeitbeschränkte
Registermaschine kann für ein Polynom q durch
eine O(q(n + t(n))) -zeitbeschränkte
Turingmaschine simuliert werden.
Satz. Jede t(n)-zeitbeschränkte Turingmaschine
kann durch eine Registermaschine simuliert
werden, die uniform O(t(n) + n) und logarithmisch
O((t(n) + n) log(t(n) + n)) zeitbeschränkt ist.
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Universelle Rechner
Soweit: "special purpose Rechner". Für eine Aufgabe fest
programmiert, sie konnten einen programmierten Rechner
simulieren.
Nun: "general purpose Rechner". Eingabe: Programm und eine
spezielle Eingabe, auf der das Programm arbeitet.
In diesem Sinn sind Rechner universell.
Codiere δ(q_i,X_j) = (q_k,X_l,D_m) durch 0^i10^j10^k10^l10^m.
Sei s die Länge der Funktionstabelle und code(z) obige
Codierung der z-ten Zeile.
Dann ist die Gödelnummer der TM gegeben durch
111 code(1) 11 code(2) 11 ... 11 code(s) 111.
Die Gödelnummer der TM M wird mit (M) bezeichnet und
beschreibt das Programm von M.
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Turing-Berechenbarkeit
Sprachen L in Σ* lassen sich auf zwei Weisen
durch Funktionen ausdrücken:
- Die charakteristische Funktion χ_L : Σ* → {0, 1} ist
definiert durch χ_L(x) = 1, falls x in L und =0, falls x
nicht in L. Die Sprache L ist rekursiv, falls χ_L
Turing-berechenbar ist.
- Sei χ*_L(x) = 1, falls x in L und = undefiniert, falls
x nicht in L. Die Sprache L ist rekursiv aufzählbar,
falls χ*_L Turing-berechenbar ist.
Intuitive Berechenbarkeit
Churchsche These. Die durch die formale
Definition der Turing-Berechenbarkeit erfasste
Klasse von Funktionen stimmt mit der Klasse der
intuitiv berechenbaren Funktionen überein.
Erweiterte churchsche These. Heutzutage
gehen wir noch einen Schritt weiter und glauben,
dass Turingmaschinen sogar die Rechenzeit bis
auf polynomielle Faktoren "richtig" erfassen. Ein
Problem heißt also genau dann effizient lösbar,
wenn es von Turingmaschinen in polynomieller
Zeit gelöst werden kann.
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Die Diagonalsprache D
Definition. Sei M_i die TM, deren Gödelnummer
in der kanonischen Ordnung aller Gödelnummern
an der i-ten Stelle steht und sei w_i das i-te Wort
in der kanonischen Ordnung auf {0, 1}*.
Dann ist die Diagonalsprache D die Menge aller
Wörter w_i, so dass M_i das Wort w_i nicht
akzeptiert.
D ist nicht rekursiv
Beweis. Falls D rekursiv, gibt es eine TM M_j, die
stets hält und genau die Eingaben aus D
akzeptiert. Wir wenden M_j auf w_j an.
a) Falls w_j in D, müsste M_j nach Voraussetzung
w_j akzeptieren, während M_j nach Defn von D
das Wort w_j nicht akzeptieren darf, Widerspruch.
b) Falls w_j nicht in D, dürfte M_j nach
Voraussetzung w_j nicht akzeptieren, während
M_j nach Defn von D das Wort w_j akzeptieren
muss, Widerspruch.
Korollar: Komplement von D nicht
rekursiv
Beweis. Eine TM, die stets hält und entscheidet, ob w
im Komplement von D ist, kann leicht in eine
entsprechende TM für ¬D abgeändert werden, indem
die getroffene Entscheidung negiert wird.
Also folgt die Aussage des Korollars direkt.
Definition. Das Halteproblem H ist definiert durch
H := {(M)w | M hält auf w}.
H nicht rekursiv
Annahme. Es gibt eine stets haltende TM M gibt, die genau die
Wörter aus H akzeptiert.
Wir konstruieren daraus eine stets haltende TM M', die genau
die Wörter aus ¬D akzeptiert, im Widerspruch zu Korollar.
Sei w eine Eingabe, Wollen wissen, ob w in ¬D ist.
Wir berechnen das i, so dass w das i-te Wort aus {0,1}* in der
kanonischen Reihenfolge ist, und daraus die Codierung (M_i).
Wir wenden M auf die Eingabe (M_i)w an. Wird diese Eingabe
verworfen, hält M_i nicht auf w, und nach Defn ist w nicht in ¬D.
Ansonsten hält M_i auf w, und wir können mit Hilfe der
universellen TM M_i auf w simulieren.
M_i akzeptiert w genau dann, wenn w in ¬D ist.
Satz von Rice und Konsequenzen
Satz. Sei R die Menge der von TM berechenbaren
Funktionen und S eine Teilmenge von R mit S ≠ {} und S ≠
R, das heißt S ist eine nicht triviale Teilmenge aller
berechenbaren Funktionen. Dann ist die Sprache
L(S) := {(M) | M berechnet eine Funktion aus S}
nicht rekursiv.
=> Es ist für Programme nicht entscheidbar,
●
●
ob diese eine konstante Funktion, die Nullfunktion, die
nirgends definierte Funktion, eine an nur endlich vielen
Stellen definierte Funktion, die Fakultätsfunktion, usw.
berechnen.
ob die durch sie definierte Sprache endlich, leer,
unendlich oder ganz Σ* ist.
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer
Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Abgeschlossenheit
Satz. Es seien L, L_1 und L_2 rekursiv. Dann auch ¬L,
L_1 ∪ L_2 und L_1 ∩ L_2.
(Die Klasse der rekursiven Sprachen ist abgeschlossen
gegenüber den Operationen Komplement, Vereinigung
und Durchschnitt)
Beweis. ¬L Sei M eine stets haltende TM, die genau die
Wörter aus L akzeptiert.
Sei q* ein neuer Zustand und M* die Erweiterung von M,
in der nach dem Stoppen in einem nicht akzeptierenden
Zustand in den Zustand q* gewechselt wird.
Wenn wir definieren, dass q* der einzige akzeptierende
Zustand von M* ist, hält M* stets und akzeptiert
L_1 ∪ L_2 und L_1 ∩ L_2
L_1 ∪ L_2: M_1 und M_2 seien stets haltende
Turingrnaschinen, die L_1 bzw. L_2 akzeptieren.
Stets haltende Turingmaschine M, die L_1 ∪ L_2
akzeptiert, arbeitet auf zwei Bändern und schreibt
zunächst eine Kopie der Eingabe auf Band 2.
Dann wird M_1 auf Band 1 simuliert.
Falls M_1 die Eingabe akzeptiert, akzeptiert auch M.
Ansonsten wird M_2 auf Band 2 simuliert. M akzeptiert
nun genau dann, wenn M_2 akzeptiert.
L_1 ∩ L_2 da L_1 ∩ L_2 = ¬ (¬(L_1) ∪ ¬(L_2))
Abgeschlossenheit
Satz. Es seien L_1 und L_2 rekursiv aufzählbar. Dann auch L_1 ∪
L_2 und L_1 ∩ L_2..
(Die Klasse der rekursiv aufzählbaren Sprachen ist abgeschlossen
gegenüber Vereinigung und Durchschnitt).
Beweis. Es seien M_1 und M_2 TM, die für Eingaben aus L_1 bzw.
L_2 in endlicher Zeit stoppen und nur diese Eingaben akzeptieren.
Wenn w in L_1 ∪ L_2 ist, wird M_1 oder M_2 (oder beide) nach
endlicher Zeit w akzeptieren, und M kann w akzeptieren. Wenn w
nicht aus L_1 ∪ L_2 ist, akzeptiert weder M_1 noch M_2 und damit
auch nicht M.
Für den Durchschnitt gilt für w in L_1 ∩ L_2, dass M_1 und M_2
nach endlicher Zeit akzeptieren und damit auch M. Für w nicht aus
L_1 ∩ L_2 akzeptiert mindestens eine der Maschinen M_1 und M 2
die Eingabe w nicht und damit auch M nicht.
Komplement
Lemma. Sind L und ¬L rekursiv aufzählbar, ist L
rekursiv.
Beweis. Es seien M und ¬M Turingmaschinen, die
für w in L bzw. w in ¬L in endlicher Zeit stoppen
und nur diese Eingaben akzeptieren.
Nun lassen wir M und ¬M parallel laufen.
Genau eine der beiden Maschinen akzeptiert w in
endlicher Zeit.
Wir wissen dann, ob w in L oder w in ¬L gilt, und
können die entsprechende Antwort geben.
Konsequenz
Satz. Die Klasse der rekursiv aufzählbaren Sprachen
ist nicht gegen Komplementbildung abgeschlossen.
Korollar. Für jede Sprache L gilt genau eine der
folgenden drei Eigenschaften.
(1) L und ¬L sind rekursiv (und damit auch rekursiv
aufzählbar).
(2) L und ¬L sind nicht rekursiv aufzählbar (und damit
auch nicht rekursiv).
(3) Genau eine der beiden Sprachen L und ¬L ist
rekursiv aufzählbar, aber nicht rekursiv, die andere ist
nicht rekursiv aufzählbar.
Übersicht
2. Turingmaschinen, churchsche These und Entscheidbarkeit
2.1 Registermaschinen und deterministische Turingmaschinen
2.2 Techniken zur Programmierung von Turingmaschinen
2.3 Simulationen zwischen Turingmaschinen und
Registermaschinen
2.4 Universelle Turingmaschinen
2.5 Die churchsche These
2.6 Die Unentscheidbarkeit des Halteproblems
2.7 Eigenschaften rekursiver und rekursiv aufzählbarer Sprachen
2.8 Die Unentscheidbarkeit des postschen
Korrespondenzproblems
Postsches
Korrespondenzproblem (PKP)
Gegeben ist eine endliche Folge von Wortpaaren
{(x_1,y_1), ... ,(x_k,y_k)) über einem endlichen
Alphabet wobei x_i und y_i nichtleere Wörter sind.
Aufgabe: Entschiede, ob es eine Folge von
Indizes i_1 , i_2 , ... ,i_n in {1,...,k}, n ≥ 1, gibt, mit
x_{i_1} x_{i_2} ... x_{i_n} =
y_{i_l} y_{i_2} ... y_{i_n}.
Beispiele
a) PKP {(1,111), (10111, 10), (10,0)} hat die Lösung
(2,1,1,3) – Ausprobieren!
b) PKP {(10,101), (011,11), (101,011) hat keine
Lösung.
Offensichtlich müsste eine Lösung mit i_1 = 1
beginnen. Dann hat die y-Folge eine 1 Vorsprung.
Als Fortsetzung ist nur i_2 = 3 möglich.
Weiterhin hat die y-Folge eine 1 Vorsprung und
dieses Problem bleibt bis in alle Ewigkeit erhalten.
c) Das PKP {(001,0), (01,011),(01,101),(10,001)) hat
eine Lösung i_1 , ... , i_n. (Kleinstmögliches n = 66)
Reduktionskonzept
Definition. Seien L_1 und L_2 Sprachen über Σ*.
L_1 auf L_2 reduzierbar, Notation L_1 < L_2, wenn es
eine überall definierte und total rekursive Funktion f: Σ*
→ Σ* gibt, so dass für alle w in Σ* gilt:
w in L_1 ↔ f(w) in L_2
Interpretiere < als "nicht schwieriger" oder genauer,
aber sprachlich schlechter, als "nicht unberechenbarer".
Schluss
Lemma. Falls L_l < L_2 und L_2 rekursiv, so ist L_1 rekursiv.
Beweis. Sei f die zu der Reduktion L_1 < L_2 gehörende
Funktion.
Sei M_2 eine stets haltende TM, die genau die Wörter aus
L_2 akzeptiert.
Eine stets haltende TM M_1, die genau die Wörter aus L_1
akzeptiert:
●
●
●
Auf die Eingabe w wendet M_1 die Funktion f an und
berechnet f(w).
Dann simuliert M_1 auf f(w) die TM M_2 und akzeptiert w
genau dann, wenn M_2 das Wort f(w) akzeptiert.
Nach obiger Definition ist diese Entscheidung korrekt.
PKP
In dem Beweis für die Unentscheidbarkeit des PKP
geht man einen Umweg über das modifizierte
postsche Korrespondenzproblem MPKP, bei dem
für die Lösung zusätzlich i_1 = 1 gefordert wird.
Lemma. MPKP < PKP.
Lemma. H < MPKP.
Satz. Das postsche Korrespondenzproblem PKP ist
nicht rekursiv.
Beweis. Wir wissen, H ist nicht rekursiv. Somit folgt,
dass MPKP und schließlich PKP nicht rekursiv sind.
Übersicht
3. Die NP-Vollständigkeitstheorie
3.1 Die Komplexitätsklasse P
3.2 Nichtdeterministische Turingmaschinen und die
Komplexitätsklasse NP
3.3 NP-Vollständigkeit
3.4 Die NP-Vollständigkeit wichtiger Probleme
3.5 Pseudopolynomielle Algorithmen und starke NP-Vollständigkeit
3.6 Turing-Reduzierbarkeit, NP-schwierige, NP-einfache und NPäquivalente Probleme
3.7 Eine Komplexitätstheorie für Approximationsprobleme
3.8 Eine Komplexitätstheorie für probabilistische Algorithmen
3.9 Die Struktur von NP und die polynomielle Hierarchie
Herunterladen