Theoretische Grundlagen der Informatik für TI Berechenbarkeit und

Werbung
Dr. Sebastian Bab
WiSe 12/13
Theoretische Grundlagen der Informatik für TI
Termin:
VL 17 vom 07.01.2013
Berechenbarkeit und Turing-berechenbare Funktionen
• Wir besitzen eine intuitive Vorstellung davon, ob eine Funktion berechenbar ist.
Wir verstehen darunter, dass es einen Algorithmus, eine Liste von Arbeitsanweisungen oder ein Verfahren gibt, dass uns die Funktionswerte berechnen kann. Durch
Angabe eines solchen Algorithmus lässt sich (auch ohne mathematische Denition
der Berechenbarkeit) zeigen, dass eine Funktion berechenbar ist. Wie aber lässt
sich zeigen, dass eine Funktion nicht berechenbar ist? Es genügt sicher nicht, wenn
man sagt, dass man keinen passenden Algorithmus nden konnte. Wir benötigen
also eine mathematische Denition, die benutzt werden kann um klar zu sagen, ob
eine Funktion berechenbar ist, oder nicht.
• Richtlinie: Eine (partielle) Funktion f ist berechenbar, wenn es einen Algorithmus
gibt, der für jeden Eingabewert x den Funktionswert f (x) berechnet. Für unde-
nierte Eingabewerte darf der Algorithmus auch keinen Ausgabewert berechnen.
• Beispiele:
1. f (x) : N → N mit f (x) = 1 ist berechenbar, da man einen einfachen Algorithmus schreiben kann, der unabhängig von seiner Eingabe immer 1 liefert.
2. g(x) : N → N mit g(x) = undef iniert ist berechenbar. Die Funktion wird
beispielsweise durch den Algorithmus
INPUT(n);\\
REPEAT UNTIL FALSE;
berechnet, der immer in eine Endlosschleife läuft, und so nie einen falschen
Funktionswert liefern kann. 
 1 x ist Anfangsabschnitt der Dezimalbruchentwicklung der Zahl π
3. fπ : N → {0, 1} mit fπ (x) =

0 sonst
ist berechenbar. Es gibt Approximationsverfahren die π bis auf eine gewünschte Genauigkeit abschätzen. Mit solch einem Verfahren kann man die Eingabe
verizieren.

 1 x ist Teilabschnitt der Dezimalbruchentwicklung der Zahl π
4. h : N → {0, 1} mit h(x) =

0 sonst
1
ist eventuell nicht berechenbar. Es sind bisher keine Eigenschaften der Zahl
π bekannt, die darauf schlieÿen lassen, dass man h algorithmisch erfassen
könnte. Es könnte bestimmte Regelmäÿigkeiten im Aufbau von π geben, die
eine Berechnung ermöglichen. Wäre die Ziernfolge von π zufällig verteilt,
so wäre h ebenfalls berechenbar, da dann jede Eingabe in h dann auch in π
vorkommen würde. Da bisher aber keine dieser Eigenschaften gezeigt wurde,
bleibt die Frage nach der Berechenbarkeit von h ungeklärt.

 1 7x ist Teilabschnitt der Dezimalbruchentwicklung der Zahl π
5. k : N → {0, 1} mit h(x) =

0 sonst
ist berechenbar. Hierbei bezeichnet 7x eine Kette aus x-mal dem Zeichen 7 und
nicht die Potenz. Wir wissen aktuell nicht, ob es beliebig lange 7er-Ketten in
der Dezimalbruchentwicklung von π gibt, aber sowohl für den Fall, dass es
sie gibt, als auch für den Fall, dass es nur 7er-Ketten bis zur Länge n gibt
könnten wir einen (leichten) Algorithmus angeben, der k berechnet.
Im ersten Fall würde für jeden Eingabewert 1 zurückgegeben und k entspräche
der Funktion f . Im zweiten Fall müsste nur geprüft werden, ob x > n gilt und
dementsprechend 0 oder 1 zurückgegeben werden.
Wir haben so gezeigt, dass in jedem Fall ein Algorithmus existiert, auch wenn
wir ihn aktuell nicht konstruieren können, denn wir wissen nicht, ob es eine
Grenzzahl n gibt und selbst wenn wir wüssten, dass es sie gibt, würden wir
die Zahl auÿerdem noch kennen müssen, um den Algorithmus anzugeben.
Obwohl die Funktion h ähnlich zu k deniert ist, kann man sie nicht auf die
selbe Art lösen, denn für h müsste man für unendliche viele Ketten wissen, ob
es entsprechende Grenzzahlen gibt, und diese auch im Algorithmus angeben.
Da ein Algoritmus aber endlich ist, ist eine solche Angabe nicht möglich.
6. Für alle Zahlen r ∈ R sein fr : N → {0, 1} mit

 1 x ist Anfangsabschnitt der Dezimalbruchentwicklung der Zahl r
fr (x) =
.

0 sonst
Nicht alle Abbildungen fr sind berechenbar, da es überabzählbar viele reelle
Zahlen und damit überabzählbar viele fr gibt, aber nur abzählbar viele Algorithmen. Für alle rationalen Zahlen und einige irrationale Zahlen (z.B. π und
e) ist fr allerdings berechenbar.
• Die Denition der Turing-Berechenbarkeit erklärt, welche Funktionen sich mit einer
Turingmaschine berechnen lassen.
2
Denition 1 (Turing-berechenbar)
Eine Funktion f : Σ∗ → Σ∗ ist turing-berechenbar, wenn für alle v, w ∈ Σ∗ eine
Turingmaschine M existiert mit
f (v) = w ⇔ z0 v ` @ · · · @ ze w @ · · · @
mit ze ∈ E .
Diese Denition beinhaltet implizit auch die Information, dass bei undenierten
Funktionswerten die Turingmaschine kein Ergebnis liefern darf. Sie hat dann also
die Möglichkeit, in eine Endlosschleife zu laufen, oder die Berechnung in einem
Nicht-Endzustand zu beenden.
• Es gibt neben der Turing-Berechenbarkeit auch viele andere Berechenbarkeitsde-
nitionen (z.B. durch GOTO oder WHILE-Programme). Es wurde aber bereits
nachgewiesen, dass sie alle gleichmächtig sind. Daher wurde von Church die bekannte These aufgestellt:
Satz 2
(Churchsche These) Die durch die normale Denition der Turing-Berechenbarkeit
erfasste Klasse von Funktionen stimmt genau mit der Klasse der im intuitiven
Sinne berechenbaren Funktionen überein.
Die Churchsche These ist nicht beweisbar, da die Klasse der intuitiv berechenbaren
Funktionen nicht mathematisch deniert ist. Da aber bis heute kein Berechenbarkeitsbegri gefunden wurde, der mächtiger als die Turing-Berechenbarkeit ist, wird
die Churchsche These allgemein akzeptiert.
3
Herunterladen