Kapitel 3: Berechnungstheorie Gliederung 0. Grundbegriffe 1

Werbung
Kapitel 3: Berechnungstheorie
Gliederung
0. Grundbegriffe
1. Endliche Automaten
2. Formale Sprachen
3. Berechnungstheorie
4. Komplexitätstheorie
3.1. Einordnung
3.2. Berechenbarkeitsmodelle
3.3. Churchsche These
3.4. Algorithmisch unlösbare Probleme
3/1, Folie 1
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Ein einführendes Beispiel
!  Das Collatz-Problem
• 
ein relativ altes mathematisches Problem, bei dem es um die
Konvergenz von bestimmten Folgen natürlicher Zahlen geht
... für uns interessant, weil es belegt, daß man selbst einfachen
Programmen nicht ansehen kann, was sie eigentlich „tun“
!  Anmerkung
• 
3/1, Folie 2
eine Folge f = (a0,a1,a2,...) von natürlichen Zahlen konvergiert gegen
eine natürliche Zahl a, falls für fast alle n gilt: an = a (/* d.h. es gibt ein
n0 ∈ N, so daß an = a für alle n ≥ n0 gilt */)
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Ein einführendes Beispiel
!  Das Collatz-Problem (cont.)
• 
• 
es sei m ∈ N
dann definieren wir die zu m gehörende Folge natürlicher Zahlen
cfm = (am,0,am,1,am,2,...) wie folgt:
1. 
2. 
am,0 = m
für alle k ≥ 1 gilt:
• 
• 
• 
am,k = 1, falls am,k-1 = 1
am,k = 1/2*am,k-1, falls am,k-1 gerade ist
am,k = 3*am,k-1 + 1, sonst
... cf0 = (0,0,0,...); cf1 = (1,1,1,...); cf2 = (2,1,1,...)
... cf3 = (3,10,5,16,8,4,2,1,1,...); cf4 = (4,2,1,1,...)
... cf5 = (5,16,8,4,2,1,1,...)
3/1, Folie 3
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Ein einführendes Beispiel
!  Das Collatz-Problem (cont.)
• 
• 
es sei m ∈ N
die interessierende Frage:
Konvergiert die zur Zahl m gehörende Folge natürlicher Zahlen
cfm = (am,0,am,1,am,2,...) ?
• 
eine einfache Beobachtung
Es sei m > 0. Dann konvergiert die zur Zahl m gehörende Folge
natürlicher Zahlen cfm = (am,0,am,1,am,2,...) genau dann, wenn es
ein Element am,k in der Folge cfm mit am,k = 1 gibt.
... offenbar konvergiert die Folge cfm (/* wenn überhaupt */)
gegen die Zahl 1
3/1, Folie 4
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Ein einführendes Beispiel
!  Das Collatz-Problem (cont.)
• 
bisher ist nur folgendes bekannt (Stand 2008)
... für alle Zahlen von 0 verschiedenen Zahlen m mit m ≤ 3 * 261
weiß man, daß die zur Zahl m gehörende Folge natürlicher
Zahlen cfm = (am,0,am,1,am,2,...) gegen die Zahl 1 konvergiert
(/* d.h. es gibt ein Element am,k in der Folge cfm mit am,k = 1 */)
... das hat man rausbekommen, indem man versucht hat, die
Zahlenfolgen cfm mit Hilfe eines Computerprogramms zu
berechnen, bis man ein Element am,k in der Folge cfm gefunden
hat, für welches am,k = 1 gilt
Anmerkung: Im Juni 2011 hat G. Opfer einen ernstzunehmenden Beweis vorgelegt,
der zeigen soll, daß jede Folge konvergiert. Ob der Beweis korrekt ist, wird zur Zeit
noch verifiziert.
3/1, Folie 5
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Ein einführendes Beispiel
!  Das Collatz-Problem aus Sicht der Informatik
• 
die folgende C++-Funktion kann verwendet werden, um für jedes
m ∈ N herauszubekommen, ob die zur Zahl m gehörende Folge
natürlicher Zahlen cfm = (am,0,am,1,am,2,...) ein Element am,k mit
am,k = 1 besitzt
bool test( nat m ) {
if ( m == 0 ) return(true);
else {
while( m != 1 ) {
if ( m%2 == 0 ) m = m/2;
else m = 3m+1;
}
return(true);
}
}
... es sollen beliebige große natürliche Zahlen als Eingabe zulässig sein
(/* deshalb wird der „Nicht-Standard-Datentyp“ nat verwendet */)
3/1, Folie 6
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Ein einführendes Beispiel
!  Abgeleitete interessierende Fragen
• 
• 
Berechnet die C++ Funktion test(.) für jede zulässige Eingabe m
einen Rückgabewert? (/* ... aus Sicht eines Informatikers */)
Leisten die beiden C++-Funktionen test(.) und trivial(.) dasselbe?
(/* aus Sicht eines Mathematikers und eines Informatikers */)
bool test( nat m ) {
if ( m == 0 ) return(true);
else {
while( m != 1 ) {
if ( m%2 == 0 ) m = m/2;
else m = 3m+1;
}
return(true);
}
}
bool trivial( nat m ) {
return(true);
}
... Antworten auf diese Fragen gibt es bisher nicht
3/1, Folie 7
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Einordnung
!  Zwischenfazit
• 
• 
es gibt einfache „algorithmische Probleme“, die man bis heute nicht „in
den Griff bekommt“
es ist eigentlich noch schlimmer ...
... es gibt „algorithmische Probleme“, von denen man nachweisen
kann, daß man sie nie „in den Griff bekommen“ wird
• 
• 
solcherart Probleme wollen wir genauer studieren
dazu sind folgende Begriffe zu präzisieren
• 
• 
3/1, Folie 8
© 2013 Prof. Steffen Lange
„algorithmische Problem“
ein algorithmisches Problem „in den Griff zu bekommen“
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Einordnung
!  Illustration
alle algorithmischen Probleme
alle lösbaren algorithmischen Probleme
alle Computerprogramme
... ein algorithmische Problem „in den Griff zu bekommen“ bedeutet,
ein Computerprogramm zu seiner Lösung anzugeben
3/1, Folie 9
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Algorithmische Probleme
!  ... ein Algorithmisches Problem Π besteht aus
• 
• 
• 
einer Beschreibung einer Menge X zulässiger Eingaben
einer Beschreibung einer Menge Y zulässiger Ausgaben
einer Beschreibung der Funktion, welche jeder zulässigen Eingabe
eine ggf. leere Menge der korrekten Ausgaben (/* Antworten,
Ergebnisse */) zuordnet
... kann man als Relation (/* Π ⊆ X × Y */) auffassen
3/1, Folie 10
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Algorithmische Probleme
!  Beispiele
• 
Membership-Problem für eine gegebene kontextsensitive Grammatik G
über einem Alphabet Σ
... X = Σ*
... Y = { 0,1 }
... Π = { (x,1) | x ∈ L(G) } ∪ { (x,0) | x ∉ L(G) }
• 
Collatz-Problem
... X = N
... Y = { false,true }
... Π = { (m,true) | die Folge cfm konvergiert } ∪
{ (m,false) | die Folge cfm konvergiert nicht }
3/1, Folie 11
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Algorithmische Probleme
!  lösbare algorithmische Probleme
• 
ein algorithmisches Problem Π ist lösbar, wenn es ein Computerprogramm gibt, das zu jeder zulässigen Eingabe x ∈ X ein y ∈ Y
(/* oder alle y ∈ Y ? */) mit (x,y) ∈ Π berechnet (/* sofern es
überhaupt ein y mit dieser Eigenschaft gibt */)
!  unlösbare algorithmische Probleme
• 
ein algorithmisches Problem Π ist unlösbar, wenn es kein Computerprogramm gibt, das zu jeder zulässigen Eingabe x ∈ X ein y ∈ Y
(/* oder alle y ∈ Y ? */) mit (x,y) ∈ Π berechnet (/* sofern es
überhaupt ein y mit dieser Eigenschaft gibt */)
... es macht keinen Unterschied, ob ein y oder alle y mit dieser
Eigenschaft berechnet werden sollen (/* de facto reicht es, die
Menge Y geeignet „umzudefinieren“ */)
3/1, Folie 12
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Algorithmische Probleme
!  Beispiele
• 
Membership-Problem für eine gegebene kontextsensitive Grammatik G
über einem Alphabet Σ
... wir wissen, das dieses algorithmische Problem lösbar ist
• 
Collatz-Problem
... es ist offen, ob dieses algorithmische Problem lösbar ist
3/1, Folie 13
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Algorithmische Probleme
!  von uns gewählte Einschränkungen
• 
• 
• 
zu jeder zulässigen Eingabe existiert (/* wenn überhaupt */) genau eine
zulässige Ausgabe
jede zulässige Eingabe / Ausgabe ist als Zeichenkette über einem
endlichen Alphabet Σ ⊆ { 0,1 } kodiert
alle Wörter aus Σ* sind als Eingabe zulässig
... zusammen genommen bedeutet das
• 
wir betrachten ausschließlich algorithmische Probleme Π, für die es
eine partielle Funktion f(.) von Σ* nach Σ* gibt, so daß für alle x,y ∈ Σ*
gilt:
• 
3/1, Folie 14
(x,y) ∈ Π gdw. y = f(x)
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Algorithmische Probleme
!  Anmerkung (/* partielle Funktionen */)
• 
eine Funktion von Σ* nach Σ* heißt vollständig, wenn es zu jedem
x ∈ Σ* ein y ∈ Σ* mit y = f(x) gibt
• 
eine Funktion von Σ* nach Σ* heißt partiell, wenn es x ∈ Σ* geben
kann, für die es kein y ∈ Σ* mit y = f(x) gibt
... in der Praxis interessieren uns eigentlich nur vollständige Funktionen
(/* man unterscheidet zwischen relevanten und irrelevanten Eingaben;
falls x relevant ist, soll es ein y mit y = f(x) geben; falls x irrelevant ist, soll
für eine Fehlermeldung y* dann y* = f(x) gelten */)
... warum es trotzdem wichtig ist, über partielle Funktionen zu reden,
sehen wir später
3/1, Folie 15
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Algorithmische Probleme
!  Einordnung
• 
ein algorithmisches Problem Π (/* beschrieben durch die zugehörige
partielle Funktion f(.) von Σ* nach Σ* */) ist unlösbar, wenn es kein
Computerprogramm gibt, welches die Funktion f(.) berechnet
... eine solche Erkenntnis sollte unabhängig von der gewählten
Programmiersprache und der zugrunde liegenden „Hardware“ sein
... suchen ein möglichst umfassendes und leicht „handhabbares“
Modell zur Beschreibung der Menge der mit Computerprogrammen
berechenbaren Funktionen von Σ* nach Σ*
... solche Modelle nennt man Berechenbarkeitsmodelle
3/1, Folie 16
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Berechenbarkeitsmodelle
!  Anforderungen an ein Berechenbarkeitsmodell
• 
Präzisierung einer Sprache zur Beschreibung von Computerprogrammen,
wobei unter anderem die folgenden Fragen zu klären sind:
• 
• 
• 
• 
• 
3/1, Folie 17
Welche elementare Operationen stehen zur Verfügung? (/* nicht zu
wenige, nicht zu schwache ...; aber auch keine unrealistisch
starken, wie etwa erfolgreiches „Hellsehen“ */)
Wie viel Speicher steht zur Verfügung und wie geht man damit um?
Wie wird die Eingabe eingegeben?
Wie wird die Ausgabe bestimmt?
Festlegung der Semantik, d.h. es ist zu festzulegen, welche partielle
Funktion f(.) von Σ* nach Σ* ein Computerprogramm (/* in dem
zugrunde liegenden Berechenbarkeitsmodell */) eigentlich berechnet
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Einordnung
!  einige bekannte „leistungsfähigste“ Berechenbarkeitsmodelle
• 
• 
• 
• 
• 
• 
• 
• 
Turing-Maschinen
partiell-rekursive Funktionen
Markov-Algorithmen
Random-Access-Maschinen
Kellerautomaten mit „zwei“ Kellern
Quantencomputer
DNA-Computer
...
!  ... die zentrale Beobachtung
Für jede partielle Funktion f(.) von Σ* nach Σ* gilt entweder (1) oder (2):
(1)  f(.) ist in jedem dieser Berechenbarkeitsmodelle berechenbar.
(2)  f(.) ist in keinem dieser Berechenbarkeitsmodelle berechenbar.
3/1, Folie 18
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Kapitel 3: Berechnungstheorie
Zwischenfazit
!  Konsequenzen
• 
• 
um nachzuweisen, daß es algorithmische Probleme gibt, die unlösbar
sind, ist es de facto egal, welches „hinreichend vernünftige“
Berechenbarkeitsmodell zugrunde gelegt wird
um zu zeigen, daß es algorithmische Probleme gibt, die unlösbar sind,
muß man ein Berechenbarkeitsmodell definieren und „ausreichend gut“
verstehen
!  Vorgehensweise
• 
• 
• 
3/1, Folie 19
schauen uns zwei Berechenbarkeitsmodelle genauer an
vergleichen die Leistungsfähigkeit der beiden Modelle
lernen Beispiele für unlösbare algorithmische Probleme kennen
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Theoretische Informatik
Herunterladen