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