1 / 68

Grenzen der Berechenbarkeit

Grenzen der Berechenbarkeit. Klaus Becker 2004. Die Möglichkeiten von Software . Herausgeber einer Software-Zeitschrift:.

haruko
Download Presentation

Grenzen der Berechenbarkeit

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grenzen der Berechenbarkeit Klaus Becker 2004

  2. Die Möglichkeiten von Software Herausgeber einer Software-Zeitschrift: „Geben Sie einem Computer die richtige Software, und er wird tun, was immer Sie wünschen. Die Maschine selbst mag Grenzen haben, doch für die Möglichkeiten von Software gibt es keine Grenzen.“ (zitiert nach D. Harel: Das Affenpuzzle und weitere bad news aus der Computerwelt)

  3. Teil 1 Nicht-berechenbare Funktionen

  4. Das Problem Ist jede Funktion f: N  N auch berechenbar? ? Menge der Funktionen von N nach N n  prim(n) n  2n n  s(n) Menge der berechenbaren Funktionen von N nach N ?

  5. Präzisierung von Berechenbarkeit Definition: Eine Funktion f: N  N heißtTuringmaschinen-berechenbar, gdw gilt: Es gibt eine Turingmaschine T mit der folgenden Eigenschaft: AZ: Auf dem Band befindet sich n dargestellt als Strichzahl. ZZ: Fall 1: f(n) ist definiert: T hält und hat f(n) dargestellt als Strichzahl erzeugt. Fall 2: f(n) ist undefiniert: T hält nicht. I I z0 I I I I Analog für f: N x N x ... x N  N

  6. Abzählverfahren Turingmaschinen kann man abzählen (d. h. durchnummerieren). Es gibt nur endlich viele Turingmaschinen mit 1 Zustand. Diese können der Reihe nach abgezählt werden. 0 1 2 3 4 Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z000 Z000 ' ' ' ' L Z000Z000 'I' ' ' L Z000 Z000 ' ' ' ' S Z000Z000 'I' ' ' S Z000 Z000 ' ' 'I' R Z000Z000 'I' ' ' R Z000 Z000 ' ' 'I' L Z000Z000 'I' ' ' L Z000 ...

  7. Übung Ergänzen Sie die begonnene Abzählung um weitere Turing-maschinen mit genau einem Zustand. Wie viele gibt es insgesamt? 0 1 2 3 4 Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z000 Z000 ' ' ' ' L Z000Z000 'I' ' ' L Z000 Z000 ' ' ' ' S Z000Z000 'I' ' ' S Z000 Z000 ' ' 'I' R Z000Z000 'I' ' ' R Z000 Z000 ' ' 'I' L Z000Z000 'I' ' ' L Z000

  8. Übung

  9. Abzählverfahren Turingmaschinen kann man abzählen. Es gibt nur endlich viele Turingmaschinen mit 2 Zuständen. Diese können ebenfalls der Reihe nach abgezählt werden. 0 Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z001Z001 ' ' ' ' R Z000Z001 'I' ' ' R Z000 ...

  10. Abzählverfahren Turingmaschinen kann man abzählen. Die gesamte Menge der Turingmaschinen kann abgezählt werden, indem man zunächst die mit 1 Zustand durchnummeriert, dann die mit 2 Zuständen u.s.w.. 0 1 .. 36 Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z000 Z000 ' ' ' ' L Z000Z000 'I' ' ' L Z000 ... Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z001Z001 ' ' ' ' R Z000Z001 'I' ' ' R Z000 ...

  11. Abzählbarkeit Definition:Eine Menge M heißt abzählbar genau dann, wenn es eine Abbildung von den natürlichen Zahlen N in M gibt, bei der alle Elemente aus M als Bildelemente natürlicher Zahlen erfasst werden. D. h., die Elemente von M können durchnummeriert werden. Alle Elemente aus M müssen bei der Nummerierung erfasst werden. Wiederholungen sind bei der Nummerierung zugelassen. SatzDie Menge der Turingmaschinen (über dem Eingabealphabet {'I'}) ist abzählbar. D. h., die Turingmaschinen lassen sich durchnummerieren: T0; T1; T2; ...

  12. Übung Überprüfen Sie, ob die aufgelisteten Turingmaschinen Funktionen f: N  N berechnen. Wenn ja, welche? 0 1 2 3 .. x Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z000 Z000 ' ' ' ' L Z000Z000 'I' ' ' L Z000 Z000 ' ' ' ' S Z000Z000 'I' ' ' S Z000 Z000 ' ' 'I' R Z000Z000 'I' ' ' R Z000 ... Z000 ' ' ' ' R Z000Z000 'I' 'I' R Z001Z001 ' ' ' ' R Z000Z001 'I' ' ' S Z000

  13. Lösung Überprüfen Sie, ob die aufgelisteten Turingmaschinen Funktionen f: N  N berechnen. Wenn ja, welche? 0 1 2 3 .. x Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z000 Z000 ' ' ' ' L Z000Z000 'I' ' ' L Z000 Z000 ' ' ' ' S Z000Z000 'I' ' ' S Z000 Z000 ' ' 'I' R Z000Z000 'I' ' ' R Z000 ... Z000 ' ' ' ' R Z000Z000 'I' 'I' R Z001Z001 ' ' ' ' R Z000Z001 'I' ' ' S Z000 f: n   f: n   f: 0  0 n  n-1 (n > 0) f: n   ... Keine Funktion

  14. Abzählverfahren Berechenbare Funktionen kann man abzählen. Wir streichen all die Turingmaschinen, die keine Funktion f: N  N berechnen. Die verbleibenden Turingmaschinen entsprechen genau den Turing-berechenbaren Funktionen. 0 1 2 .. x Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z000 Z000 ' ' ' ' L Z000Z000 'I' ' ' L Z000 Z000 ' ' ' ' S Z000Z000 'I' ' ' S Z000 ... Z000 ' ' ' ' R Z000Z000 'I' 'I' R Z001Z001 ' ' ' ' R Z000Z001 'I' ' ' S Z000 f0: n   f1: n   f2: 0  0 n  n-1 (n > 0) ... Keine Funktion

  15. Abzählverfahren SatzDie Menge der Turingmaschinen-berechenbaren Funktion f: N  N ist abzählbar. 0 1 2 .. x Z000 ' ' ' ' R Z000Z000 'I' ' ' R Z000 Z000 ' ' ' ' L Z000Z000 'I' ' ' L Z000 Z000 ' ' ' ' S Z000Z000 'I' ' ' S Z000 ... Z000 ' ' ' ' R Z000Z000 'I' 'I' R Z001Z001 ' ' ' ' R Z000Z001 'I' ' ' S Z000 f0: n   f1: n   f2: 0  0 n  n-1 (n > 0) ... Keine Funktion

  16. Zwischenstand Die Menge der berechenbaren Funktionen ist abzählbar. ? Menge der Funktionen von N nach N f0, f1, f2, f3, ... Menge der berechenbaren Funktionen von N nach N ?

  17. Existenz nicht-berechenbarer Funktionen Definition einer neuen Funktion f: N  N f(0) = f0(0)+1, falls f0(0) definiert ist, sonst f(0) = 0 f(1) = f1(1)+1, falls f1(1) definiert ist, sonst f(1) = 0 f(2) = f2(2)+1, falls f2(2) definiert ist, sonst f(2) = 0 f(3) = f3(3)+1, falls f3(3) definiert ist, sonst f(3) = 0 ... f(n) = fn(n)+1, falls fn(n) definiert ist, sonst f(n) = 0 ...  f  f0  f  f1  f  f2  f  f3 ...  f  f0 ... Die Funktion f: N  N unterscheidet sich von allen berechenbaren Funktionen, kann also selbst nicht berechenbar sein.

  18. Existenz nicht-berechenbarer Funktionen SatzEs gibt Funktionen f: N  N, die nicht (Turingmaschinen-) berechenbar sind. Menge der Funktionen von N nach N f f0, f1, f2, f3, ... Menge der berechenbaren Funktionen von N nach N ?

  19. Teil 2 Rado´sche Sigma-Funktion

  20. Geht es auch konkreter? Ziel ist es, eine Funktion, die nicht berechenbar ist, expliziter zu beschreiben. Rado´sche -Funktion Menge der Funktionen von N nach N  f0, f1, f2, f3, ... Menge der berechenbaren Funktionen von N nach N ?

  21. Biber-Turingmaschinen Eine Biber-TM ist eine eindimensionale TM, die in jedem Arbeitsschritt genau eine Rechts- oder Linksbewegung macht und nur einen „Baumstamm“ erzeugt. Eine Biber-TM startet in einer leeren Welt, erzeugt „Baumstämme“ und hält nach endlich vielen Arbeitsschritten. Vorher: Biber-TM: Nachher:

  22. Übung Biber-Wettbewerb: Gesucht ist eine Biber-TM mit genau 2 Zuständen (außer dem Stop-Zustand), die möglichst viele Baumstämme erzeugt, bevor sie hält. Eine solche TM heißt „fleißiger Biber“ (mit 2 Zuständen) bzw. „busy beaver TM“. Gesucht ist eine Biber-TM mit genau 3 (bzw. 4) Zuständen (außer dem Stop-Zustand), die möglichst viele Baumstämme erzeugt, bevor sie hält. Eine solche TM heißt „fleißiger Biber“ (mit 3 bzw. 4 Zuständen) bzw. „busy beaver TM“.

  23. Fleißige Biber Fleißiger Biber mit 2 Zuständen: alter gelesenes geschrieb. Kopf- neuer Zustand Zeichen Zeichen bewegung Zustand Z0 I I L Z1Z0 ' ' I R Z1 Z1 I I S Z0Z1 ' ' I L Z0 Fleißiger Biber mit 3 Zuständen: alter gelesenes geschrieb. Kopf- neuer Zustand Zeichen Zeichen bewegung Zustand Z0 I I L Z2Z0 ' ' I R Z1 Z1 I I S Z1Z1 ' ' I L Z0 Z2 I I S Z2Z2 ' ' I L Z1

  24. Rado´sche Sigma-Funktion Definition (Tibor Rado, 1962):Die Funktion : N  N ist wie folgt festgelegt: (n) bezeichne die maximale Anzahl von Baumstämmen, die eine Biber-TM mit genau n Zuständen (außer dem Stop-Zustand) erzeugen kann. n 0 1 2 3 4 5 6 ... (n) 0 1 4 6 13  4098  1,2910865 ...

  25. Rado´sche Sigma-Funktion SatzDie Rado´sche -Funktion ist nicht Turingmaschinen-berechenbar. • Beweis: • Der Beweis benutzt die folgenden (leicht zu zeigenden) Eigenschaften der -Funktion: • (n)  n für alle n N, • (n) < (n+1) für alle n N (Monotonie von ). • Der Beweis wird durch Widerspruch geführt. Annahme: Es gibt eine Turingmaschine T, mit der  berechnet werden kann. Die Anzahl der Zustände von T bezeichnen wir mit k. AZ: I I z0 T : ZZ: I I I I

  26. Rado´sche Sigma-Funktion Man zeigt zunächst, dass es eine Turingmaschine Tn mit n Zuständen gibt, der auf einem leeren Band eine Baumstammreihe mit genau n Baumstämmen erzeugt: AZ: z0 T2: ZZ: I I Man zeigt anschließend, dass es eine Turingmaschine TV mit 5 Zuständen gibt, der eine gegebene, beliebig lange Baumstammreihe verdoppelt: AZ: I I z0 TV: ZZ: I I I I

  27. Rado´sche Sigma-Funktion Wir verknüpfen die 3 Turingmaschinen jetzt wie folgt zu einer neuen Turingmaschine Tn,V, : z0 AZ: Tn: erzeugt eine Baumstammreihe der Länge n ZZ: I I TV: erzeugt eine Baumstammreihe der Länge 2n ZZ: I I I I T : erzeugt eine Baumstammreihe der Länge (2n) I I I I I I I I ... ZZ: Beachte: Tn,V,  hat n+5+k Zustände und erzeugt eine Baumstammreihe der Länge (2n).

  28. Rado´sche Sigma-Funktion • Wir vergleichen jetzt diese zusammengesetzte Turingmaschine Tn,V,  mit einem fleißigen Biber TFB(n+5+k) mit n+5+k Zuständen: • Tn,V,  hat n+5+k Zustände und erzeugt (2n) Baumstämme. • TFB(n+5+k) hat n+5+k Zustände und erzeugt (n+5+k) Baumst. • Da ein fleißiger Biber die maximal mögliche Anzahl von Baumstämmen erzeugt, gilt (für alle n N): (n+5+k)  (2n). • Sei n = 2(5+k). Dann gilt: • n+5+k = 3(5+k) • 2n = 4(5+k), also n+5+k < 2n. • Aus der Monotonie von  folgt: (n+5+k) < (2n). • Es ergibt sich also ein Widerspruch. Da alle Schlüsse korrekt sind, muss die Annnahme falsch sein.

  29. Teil 2 Entscheidbarkeit

  30. Textverarbeitungsprogramme eingabe: TStringList function verarbeiten(s: TStringList): string ausgabe: string

  31. Ein einfaches Beispiel Mit Hilfe eines Textverarbeitungsprogramms soll entschieden werden, ob ein eingegebener Text mit einem Punkt endet. Name des Programms: function verarbeiten(s: TStringList): string uPunkt:verarbeiten ja, falls der Text mit einem Punkt endet Text nein, sonst

  32. Ein einfaches Beispiel procedure TForm1.BVerarbeitenClick(Sender: TObject); var eingabe: TStringList; ausgabe: string; function verarbeiten(s: TStringList): string; var a: string; h: string; begin h := s.Strings[s.Count-1]; if h[length(h)] = '.' then a := 'ja' else a := 'nein'; result := a; end; begineingabe := TStringList(MEingabe.Lines);ausgabe := verarbeiten(eingabe);PAusgabe.Caption := ausgabe;end;

  33. Selbstanwendung Das Textverarbeitungsprogramms kann man auch auf den Quelltext des Textverarbeitungsprogramms selbst anwenden.

  34. Selbstanwendung Das Textverarbeitungsprogramms kann man auch auf den Quelltext des Textverarbeitungsprogramms selbst anwenden. uPunkt:verarbeiten uPunkt.~pas ja

  35. Hilfe, mein Rechner hängt! Jeder hat schon einmal die Erfahrung gemacht, dass der Rechner aus irgendwelchen Gründen nicht mehr reagiert. Die Ursache kann eine Endlosschleife sein. x0 := x1; WHILE x2 0 DO x0 := x0 + 1 END

  36. Übung Erstellen Sie ein Textverarbeitungsprogramms, mit dem man entscheiden kann, ob der eingegebene Text die Zeichenkette ‘while‘ enthält. uWhile1:verarbeiten ja, falls der Text die Zeichenkette ‘while‘ enthält Text nein, sonst

  37. Übung Erstellen Sie zunächst ein Textverarbeitungsprogramms, mit dem man entscheiden kann, ob der eingegebene Text die Zeichenkette ‘while‘ enthält. Das Textverarbeitungsprogramm soll mindestens eine while-Schleife enthalten. Ändern Sie es anschließend so ab, dass folgendes Verhalten auftritt: uWhile2:verarbeiten Gerät in eine Endlosschleife, falls der Text die Zeichenkette ‘while‘ enthält Text nein, sonst

  38. Das (spezielle) Halteproblem Kann man eine Funktion programmieren, mit der man entscheiden kann, ob ein Textverarbeitungsprogramm bei der Analyse des eigenen Quelltextes hält? halten ja, falls uProgramm:verarbeiten bei Eingabe von uProgramm.~pas hält uProgramm.~pas nein, sonst Annahme: Man kann diese Funktion programmieren.

  39. Das (spezielle) Halteproblem Annahme: Man kann die Funktion „halten“ programmieren. Dann ergänzen wir das Programm wie folgt: procedure TForm1.BVerarbeitenClick(Sender: TObject); var eingabe: TStringList; ausgabe: string;function halten(s: TStringList): string; begin ... end;function verarbeiten(s: TStringList): string; begin if halten(s)='ja' then while true do; result := 'haelt'; end;begineingabe := TStringList(MEingabe.Lines);ausgabe := verarbeiten(eingabe);PAusgabe.Caption := ausgabe;end; uSeltsam

  40. Ein seltsames Programm Seltsam dreht den Spieß um. keine Ausgabe, wenn uProgramm:verarbeiten bei Eingabe von uProgramm.~pas hält, da Endlosschleife uSeltsam:verarbeiten uProgramm.~pas ‘haelt‘, wenn uProgramm:verarbeiten bei Eingabe von uProgramm.~pas nicht hält

  41. Ein seltsames Programm Seltsam analysiert sein eigenes Halteverhalten. keine Ausgabe, wenn uSeltsam:verarbeiten bei Eingabe von uSeltsam.~pas hält, da Endlosschleife uSeltsam:verarbeiten uSeltsam.~pas ‘haelt‘, wenn uSeltsam:verarbeiten bei Eingabe von uSeltsam.~pas nicht hält

  42. Ein seltsames Programm Hält uSeltsam:verarbeiten bei Eingabe von uSeltsam.~pas? hält nicht, wenn uSeltsam:verarbeiten bei Eingabe von uSeltsam.~pas hält uSeltsam:verarbeiten uSeltsam.~pas hält, wenn uSeltsam:verarbeiten bei Eingabe von uSeltsam.~pas nicht hält Man kann es nicht klären, ohne sich in Widersprüche zu verwickeln.

  43. Ein seltsames Programm Woran liegt es, dass man widersprüchliche Ergebnissen erhält? hält nicht, wenn uSeltsam:verarbeiten bei Eingabe von uSeltsam.~pas hält uSeltsam:verarbeiten uSeltsam.~pas hält, wenn uSeltsam:verarbeiten bei Eingabe von uSeltsam.~pas nicht hält Die Annahme, dass man eine Funktion programmieren kann, mit der man entscheiden kann, ob ein Textverarbeitungsprogramm bei der Analyse des eigenen Quelltextes hält, muss falsch sein.

  44. Entscheidbarkeit Definition:Eine Sprache über einem Alphabet heißt (Delphi-) entscheidbar, wenn es einen (Delphi-) Algorithmus gibt, der für jedes Wort über dem Alphabet feststellt, ob es zur Sprache gehört oder nicht. Algorithmus ja, falls das Wort zur Sprache gehört Wort nein, falls das Wort nicht zur Sprache gehört Beachte: Der Algorithmus muss für jede Eingabe halten und eine der beiden Ausgaben ´ja´ bzw. ´nein´ erzeugen.

  45. Entscheidbarkeit Beispiel: Die Sprache der ASCII-Texte, die die Zeichenkette ‘while‘ enthalten, ist (Delphi-) entscheidbar. uWhile:verarbeiten ja, falls der Text die Zeichenkette ‘while‘ enthält Text nein, sonst

  46. Unentscheidbarkeit des Halte-Problems SatzDie Sprache der Delphi-Textverarbeitungsprogramme, die bei Eingabe des eigenen Quelltextes halten, ist nicht (Delphi-) entscheidbar. ja, falls uProgramm:verarbeiten bei Eingabe von uProgramm.~pas hält uProgramm.~pas nein, sonst Kurz: Das spezielle Halteproblem (Hält ein ein Programm, wenn es seinen eigenen Quelltext bearbeitet?) ist nicht entscheidbar.

  47. Unentscheidbarkeit des Halte-Problems SatzDas allgemeine Halteproblem (Hält ein ein Programm, wenn es Daten bearbeitet?) ist nicht entscheidbar. ja, falls uProgramm:verarbeiten bei Eingabe der Daten hält uProgramm.~pas +Daten nein, sonst Fazit: Es gibt keinen Algorithmus, mit dem man allgemein vorab testen kann, ob ein Programm bei der Verarbeitung von Daten hält.

  48. Teil 3 Semi-Entscheidbarkeit

  49. Das 10. Hilbert`sche Problem Diophantische Gleichungen: Hat eine Polynomgleichung (in der verschiedene Variablen mit verschiedenen Exponenten vorkommen können) mit ganzzahligen Koeffizienten eine ganzzahlige Lösung? x3 + 5x2y2z – xz + 37 = 0 ja: x = 1; y = 2; z = -2 x2 +1 = 0 nein!

More Related