Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Berechenbarkeit Klaus Becker 2004. KB Berechenbarkeit 2 Die Möglichkeiten von Software Geben Sie einem Computer die richtige Software, und er wird tun,

Ähnliche Präsentationen


Präsentation zum Thema: "Berechenbarkeit Klaus Becker 2004. KB Berechenbarkeit 2 Die Möglichkeiten von Software Geben Sie einem Computer die richtige Software, und er wird tun,"—  Präsentation transkript:

1 Berechenbarkeit Klaus Becker 2004

2 KB Berechenbarkeit 2 Die Möglichkeiten von Software 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) Herausgeber einer Software-Zeitschrift:

3 KB Berechenbarkeit 3 Teil 1 Berechenbarkeit als Problem

4 KB Berechenbarkeit 4 Grenzen von Software Daten ? Software Grundsatzfrage: Gibt es Grenzen für die Möglichkeiten von Software?

5 KB Berechenbarkeit 5 Der Kern von Software Algorithmen – der Kern von Software: Wo liegen die Grenzen algorithmisch gesteuerter Systeme? Gibt es Grenzen des algorithmisch Machbaren?

6 KB Berechenbarkeit 6 Die Suche nach Grenzen Grundsatzfrage: Gibt es Grenzen für die Möglichkeiten von Software? Gibt es Grenzen für die Möglichkeiten von Algorithmen? Vorgehensweise: Um Aussagen über alle möglichen Algorithmen zu treffen, muss zunächst der Algorithmusbegriff präzisiert werden. Möglichkeitsnachweis: Man entwickelt einen Algorithmus und implementiert die zugehörige Software. Unmöglichkeitsnachweis: Man muss zeigen, dass es keinen Algorithmus gibt, der das gestellte Problem löst. D. h.: Jeder mögliche Algorithmus löst nicht das gestellte Problem.

7 KB Berechenbarkeit 7 Was ist ein Algorithmus ? Einfache Frage – viele Antworten: Aho, Hopcroft, Ullman Ein Algorithmus ist eine endliche Folge von Instruktionen, die alle eindeutig interpretierbar und mit endlichem Aufwand in endlicher Zeit ausführbar sind. Algorithmen enthalten Instruktionen zur Formulierung von (beliebig vielen) Wiederholungen anderer Instruktionen. Unabhängig von den Werten der Eingangsgrößen endet ein Algorithmus stets nach endlich vielen Instruktionsschritten. Ein Programm ist dann ein Algorithmus, wenn für alle möglichen Eingabewerte sichergestellt ist, dass keine Instruktion unendlich oft wiederholt wird. Kronsjö Ein Verfahren, beschrieben durch eine endliche Menge von eindeutig interpretierbaren Regeln, das eine endlich lange Folge von Operationen zur Lösung eines Problems oder einer speziellen Problemklasse beschreibt, wird Algorithmus genannt. (http://www.swe.uni-linz.ac.at/teaching/lva/ss02/algo1_vorlesung/hinweise.html)

8 KB Berechenbarkeit 8 Was ist ein Algorithmus ? Knuth Ein Algorithmus muss nach endlich vielen Schritten enden. Jeder Schritt eines Algorithmus muss exakt beschrieben sein; die in ihm verlangten Aktionen müssen präzise formuliert und in jedem Falle eindeutig interpretierbar sein. Ein Algorithmus hat keine, eine oder mehrere Eingangsgrößen, d.h. Größen, die von ihm benutzt und deren Werte vor Beginn seiner Ausführung festgelegt werden müssen. Ein Algorithmus hat eine oder mehrere Ergebnisgrößen, d.h. Größen, deren Werte in Abhängigkeit von den Eingangsgrößen während der Ausführung des Algorithmus berechnet werden. Ein Algorithmus muss so geartet sein, dass die in ihm verlangten Aktionen im Prinzip von einem Menschen in endlicher Zeit mit Papier und Bleistift ausgeführt werden können. (http://www.swe.uni-linz.ac.at/teaching/lva/ss02/algo1_vorlesung/hinweise.html) Einfache Frage – viele Antworten:

9 KB Berechenbarkeit 9 Was ist ein Algorithmus ? Bauer, Goos Ein Algorithmus ist eine präzise, d.h. in einer festgelegten Sprache abgefasste, endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer elementarer (Verarbeitungs-) Schritte. Rechenberg Ein Algorithmus ist ein endliches schrittweises Verfahren zur Berechnung gesuchter aus gegebenen Größen, in dem jeder Schritt aus einer Anzahl ausführbarer eindeutiger Operationen und einer Angabe über den nächsten Schritt besteht. (http://www.swe.uni-linz.ac.at/teaching/lva/ss02/algo1_vorlesung/hinweise.html) Einfache Frage – viele Antworten:

10 KB Berechenbarkeit 10 Der intuitive Algorithmusbegriff Ein Algorithmus ist eine Folge von Handlungsanweisungen zur Lösung eines Problems, die folgende Anforderungen erfüllt: - Endlichkeit: Die Anweisungsfolge ist durch einen endlichen Text beschrieben. - Ausführbarkeit: Die Anweisungen sind für den Empfänger (Mensch oder Maschine) verständlich formuliert und ausführbar. - Eindeutigkeit: An jeder Stelle ist der Ablauf der Anweisungen eindeutig festgelegt. - Allgemeinheit: Die Anweisungen besitzen Gültigkeit für die Lösung einer ganzen Problemklasse, nicht nur für ein Einzelproblem. Definition: (nach Gasper, Leiß, Spengler, Stimm: Technische und theoretische Informatik. bsv)

11 KB Berechenbarkeit 11 Unzulänglichkeit informeller Klärungen Ein Algorithmus ist eine Folge von Handlungsanweisungen zur Lösung eines Problems, die folgende Anforderungen erfüllt: - Endlichkeit: Die Anweisungsfolge ist durch einen endlichen Text beschrieben. - Ausführbarkeit: Die Anweisungen sind für den Empfänger (Mensch oder Maschine) verständlich formuliert und ausführbar. - Eindeutigkeit: An jeder Stelle ist der Ablauf der Anweisungen eindeutig festgelegt. - Allgemeinheit: Die Anweisungen besitzen Gültigkeit für die Lösung einer ganzen Problemklasse, nicht nur für ein Einzelproblem. Definition: Die oben aufgeführte Begriffsklärung ist keine präzise Definition im mathematischen Sinne. Was heißt das?

12 KB Berechenbarkeit 12 Ziel: Präzisierung Ein Algorithmus ist eine Folge von Handlungsanweisungen zur Lösung eines Problems, die folgende Anforderungen erfüllt: - Endlichkeit: Die Anweisungsfolge ist durch einen endlichen Text beschrieben. - Ausführbarkeit: Die Anweisungen sind für den Empfänger (Mensch oder Maschine) verständlich formuliert und ausführbar. - Eindeutigkeit: An jeder Stelle ist der Ablauf der Anweisungen eindeutig festgelegt. - Allgemeinheit: Die Anweisungen besitzen Gültigkeit für die Lösung einer ganzen Problemklasse, nicht nur für ein Einzelproblem. Definition: Ziel ist es, die informelle Begriffsklärung durch eine präzise Definition im mathematischen Sinne zu ersetzen. Muss präzisiert werden

13 KB Berechenbarkeit 13 Präzisierungsansätze Prozessor Anweisungen Eingaben Ausgaben Grundschema eines algorithmisch gesteuerten Systems Präzisierungsansätze: Maschinenorientierter Ansatz: Präzisierung des Prozessors Zuordnungsorientierter Ansatz: Präzisierung der E/A-Zuordnungen Anweisungsorientierter Ansatz: Präzisierung der zulässigen Anweisungen

14 KB Berechenbarkeit 14 Grundidee: Berechnungsmodelle Präzisierung mit Berechnungsmodellen Die Festlegung, was ein Algorithmus ist, bezieht sich auf ein streng definiertes Berechnungsmodell, das genau vorschreibt, was unter ausführbar zu verstehen ist. Grundlegende Schwierigkeit des Präzisierungsverfahrens Wird mit Hilfe des Berechnungsmodells wirklich der intuitive Algorithmusbegriff adäquat erfasst?

15 KB Berechenbarkeit 15 Teil 2 Kara als Berechnungsmodell

16 KB Berechenbarkeit 16 Kara Kara ist ein Marienkäfer. Kara lebt in einer Welt mit unbewegliche Baumstümpfen, Pilzen, die Kara verschieben kann und Kleeblättern, die Kara legen und aufnehmen kann. Lit.:: Reichert / Nievergelt / Hartmann: Programmieren mit Kara, Springer-Verlag Software:

17 KB Berechenbarkeit 17 Kara Kara hat Sensoren, mit denen er/sie die Umwelt wahrnimmt: stehe ich vor einem Baumstumpf? ist links von mir ein Baumstumpf? ist rechts von mir ein Baumstumpf? stehe ich vor einem Pilz? stehe ich auf einem Kleeblatt? Kara versteht einige Befehle, die er/sie folgsam ausführt: mache einen Schritt vorwärts! drehe um 90° nach links! drehe um 90° nach rechts! lege ein Kleeblatt hin! nimm ein Kleeblatt auf!

18 KB Berechenbarkeit 18 Kara soll ein Problem lösen Kara soll bis zum nächsten Baumstumpf, einmal um ihn herum und anschließend zurück zum Ausgangspunkt laufen. AZ:... ZZ:

19 KB Berechenbarkeit 19 Kara-Algorithmus Bedingung:Aktionen:Akt. Zustand:Neuer Zustand: markierenhin neinhin jazurück... zurückneinzurück jastop mark. hinstop / Blatt hinlegen Vor Baum? nein / vorwärts Vor Baum? ja / links;... zurück Auf Blatt? nein / vorwärts Auf Blatt? ja / links; links

20 KB Berechenbarkeit 20 Entwickeln Sie einen Kara-Algorithmus zur Lösung des Problems: Übung AZ: Kara sieht in Blickrichtung eine beliebig lange Baumstumpfreihe. ZZ: Kara umläuft die Baumstümpfe und bleibt stehen.

21 KB Berechenbarkeit 21 Entwickeln Sie einen Kara-Algorithmus zur Lösung des Problems: Übung AZ: Kara sieht in Blickrichtung eine beliebig lange vertikale Baumstumpfreihe. ZZ: Kara umläuft die Baumstumpfreihe und bleibt in der Verlängerung seines Wegs stehen.

22 KB Berechenbarkeit 22 Gibt es einen Kara-Algorithmus zur Lösung des Problems, bei dem Kara keine Blätter ablegen darf? Übung AZ: ZZ:

23 KB Berechenbarkeit 23 Präzisierung des Algorithmusbegriffs Von klaren Vorgaben zu präzisen Begriffsdefinitionen Sei A die Menge der Kara-Aktionen: Sei B die Menge der Kara-Bedingungen: B = {treeFront, treeLeft, treeRight, mushroomFront, onLeaf, not treeFront, treeFront and (not onLeaf),..., true} A = {move, turnLeft, turnRight, putLeaf, removeLeaf} Sei A´ die Menge der eingeschränkten Kara-Aktionen: A´ = {move, turnLeft, turnRight}

24 KB Berechenbarkeit 24 Präzisierung des Algorithmusbegriffs Bedingung:Aktionen:Akt. Zustand:Neuer Zustand: markierenhin neinhin jazurück... Definition: Ein Kara-Algorithmus ist eine Paar (Z, F) bestehend aus einer endlichen Menge Z von Zuständen, die einen ausgezeichneten Startzustand enthält, und einer Funktion F, die die Arbeitsweise von Kara wie folgt festlegt: F ordnet Zustands-Bedingungs- Kombinationen (z, b) mit z Z und b B eine Aktionen-Zustands- Kombination (a, z´) zu, wobei a eine endliche (evtl. leere) Folge von Aktionen aus A ist und z´ Z den Folgezustand darstellt. Ein Read-Only-Kara-Algorithmus ist ein Kara-Algorithmus, bei dem nur Aktionen aus der eingeschränkten Menge A´vorkommen.

25 KB Berechenbarkeit 25 Zur Lösung des Baumumrundungsproblems Von präzisen Begriffsdefinitionen zu nachweisbaren Aussagen (Möglichkeits-) Beweis: Der Beweis erfolgt konstruktiv, indem man einen geeigneten Kara- Algorithmus angibt. Grundidee: Kara legt beim Weg nach oben neben jeden Baumstumpf ein Kleeblatt. Kara zählt auf diese Weise mit, an wie vielen Baumstümpfen er/sie vorbeiläuft. Kara transportiert anschließend jedes dieser abgelegten Kleeblätter auf die andere Seite des Baumstumpfs. Damit ist Kara in der Lage, die gewünschte Endposition zu bestimmen. Satz: Es gibt einen Kara-Algorithmus, der das vertikale Baumumrundungsproblem löst.

26 KB Berechenbarkeit 26 (Unmöglichkeits-) Beweis: Der Beweis wird durch Widerspruch geführt: Man nimmt an, es gebe einen solchen Algorithmus und führt diese Annahme zum Widerspruch. Da das vertikale Baumumrundungsproblem für Read-Only-Kara- Algorithmen strukturell ähnlich zum a n b n -Spracherkennungs- problem für endliche Automaten ist, kann der Nachweis, dass es keinen Read-Only-Kara-Algorithmus gibt, der das vertikale Baumumrundungsproblem löst, völlig analog zum a n b n - Spracherkennungsproblem geführt werden. Zur Lösung des Baumumrundungsproblems Von präzisen Begriffsdefinitionen zu nachweisbaren Aussagen Satz: Es gibt keinen Read-Only-Kara-Algorithmus, der das vertikale Baumumrundungsproblem löst.

27 KB Berechenbarkeit 27 Teil 3 Kara-Berechenbarkeit

28 KB Berechenbarkeit 28 Kara lernt rechnen Im Folgenden betrachten wir eine spezielle Klasse von Problemen, die Kara lösen soll. Es handelt sich hier um Berechnungs- probleme, die Kara mit Hilfe von Kleeblättern ausführen soll.

29 KB Berechenbarkeit 29 Übung Entwickeln Sie einen Kara-Algorithmus zur Addition: AZ: Kara steht vor zwei beliebig langen, durch eine leere Zelle getrennte Blattreihen der Längen m und n (die auch 0 sein können). ZZ: Kara hat eine Blattreihen der Länge m+n erzeugt.

30 KB Berechenbarkeit 30 Übung Entwickeln Sie einen Kara-Algorithmus zur Subtraktion: AZ: Kara steht vor zwei beliebig langen, durch eine leere Zelle getrennte Blattreihen der Längen m und n (die auch 0 sein können). ZZ: Falls m n ist, hat Kara eine Blattreihe der Länge m-n erzeugt.

31 KB Berechenbarkeit 31 Übung Entwickeln Sie einen Kara-Algorithmus zur Subtraktion: AZ: Kara steht vor zwei beliebig langen, durch eine leere Zelle getrennte Blattreihen der Längen m und n (die auch 0 sein können). ZZ: Falls m

32 KB Berechenbarkeit 32 Übung Entwickeln Sie einen Kara-Algorithmus zum Verdoppeln: AZ: Kara steht vor einer beliebig langen Blattreihe der Länge n (die auch 0 sein kann). ZZ: Kara hat eine Blattreihe der Länge 2n erzeugt.

33 KB Berechenbarkeit 33 Übung Entwickeln Sie einen Kara-Algorithmus zur Multiplikation: AZ: Kara steht vor zwei beliebig langen, durch eine leere Zelle getrennte Blattreihen der Längen m und n (die auch 0 sein können). ZZ: Kara hat eine Blattreihe der Länge m n erzeugt.

34 KB Berechenbarkeit 34 Übung Entwickeln Sie einen Kara-Algorithmus zur Multiplikation: AZ: Kara steht vor zwei beliebig langen, durch eine leere Zelle getrennte Blattreihen der Längen m und n (die auch 0 sein können). ZZ: Kara hat eine Blattreihe der Länge m n erzeugt, ohne die Zellenreihe, in der die Blätter liegen, zu verlassen.

35 KB Berechenbarkeit 35 Berechnete Funktion Vom informellen Begriff zur präzisen Begriffsdefinition Verdoppeln: AZ: Kara steht vor einer beliebig langen Blattreihe der Länge n (die auch 0 sein kann). ZZ: Kara hat eine Blattreihe der Länge 2n erzeugt. Kara berechnet die Verdopplungsfunktion f: N N mit f(n) = 2n.

36 KB Berechenbarkeit 36 Berechnete Funktion Kara berechnet die Subtraktionsfunktion f: N x N N mit: Subtraktion: AZ: Kara steht vor zwei beliebig langen, durch eine leere Zelle getrennte Blattreihen der Längen m und n (die auch 0 sein können). ZZ: Falls m

37 KB Berechenbarkeit 37 Definition: Eine Funktion f: N N heißt Kara-berechenbar, gdw gilt: Es gibt einen Kara-Algorithmus mit der folgenden Eigenschaft: AZ:Kara steht vor einer Blattreihe der Länge n. ZZ:Fall 1: f(n) ist definiert: Kara hat eine Blattreihe der Länge f(n) erzeugt und hält. Fall 2: f(n) ist undefiniert: Kara hält nicht. Präzisierung von Berechenbarkeit Analog für f: N x N x... x N N

38 KB Berechenbarkeit 38 Berechenbarkeitsaussagen Neue Fragen Welche Funktionen sind Kara-berechnenbar, welche evtl. nicht? Satz: Die folgenden Funktionen sind Kara-berechnenbar: f(n) = 2n f(m, n) = m + n f(m, n) = IF(m n, m-n, ) f(m, n) = m n

39 KB Berechenbarkeit 39 Teil 4 Turingmaschinen

40 KB Berechenbarkeit 40 Alan Turing Alan Mathison Turing FRS OBE (born 23 June 1912 at 2 Warrington Crescent, London W9, died 7 June 1954 at his home in Wilmslow, Cheshire) contributed to mathematics, cryptanalysis, logic, philosophy, biology, and formatively to computer science, cognitive science, Artificial Intelligence and Artificial Life. Educated at Sherborne School in Dorset, Turing went up to King's College, Cambridge in October 1931 to read Mathematics. He was elected a Fellow of King's in March 1935, at the age of only 22. In the same year he invented the abstract computing machines - now known simply as Turing machines - on which all subsequent stored-program digital computers are modelled.... Alan Mathison Turing FRS OBE (born 23 June 1912 at 2 Warrington Crescent, London W9, died 7 June 1954 at his home in Wilmslow, Cheshire) contributed to mathematics, cryptanalysis, logic, philosophy, biology, and formatively to computer science, cognitive science, Artificial Intelligence and Artificial Life. Educated at Sherborne School in Dorset, Turing went up to King's College, Cambridge in October 1931 to read Mathematics. He was elected a Fellow of King's in March 1935, at the age of only 22. In the same year he invented the abstract computing machines - now known simply as Turing machines - on which all subsequent stored-program digital computers are modelled....

41 KB Berechenbarkeit 41 Turings Idee Vom Rechnen zu den Computing maschines Computing is normally done by writing certain symbols on paper. We may suppose this paper is divided into squares like a child's arithmetic book. In elementary arithmetic the two-dimensional character of the paper is sometimes used (Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society 1936)

42 KB Berechenbarkeit 42 Turings Idee Vom Rechnen zu den Computing maschines Computing is normally done by writing certain symbols on paper. We may suppose this paper is divided into squares like a child's arithmetic book. In elementary arithmetic the two-dimensional character of the paper is sometimes used. But such a use is always avoidable, and I think that it will be agreed that the two-dimensional character of paper is no essential of computation. I assume then that the computation is carried out on one- dimensional paper, i.e. on a tape divided into squares (Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society 1936) 25272

43 KB Berechenbarkeit 43 Turings Idee Vom Rechnen zu den Computing maschines The behaviour of the computer at any moment is determined by the symbols which he is observing and his state of mind at that moment.... Let us imagine the operations performed by the computer to be split up into simple operations which are so elementary that it is not easy to imagine them further divided (Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society 1936) q0q0 Ein-/Ausgabeband Schreib- /Lesekopf Zustandsbasierte Verarbeitungseinheit

44 KB Berechenbarkeit 44 Turingmaschine...IIIII Turingmaschine Ein-/Ausgabeband Schreib- /Lesekopf Zustandsbasierte Verarbeitungseinheit

45 KB Berechenbarkeit 45 Turingmaschine Turingmaschinenaktionen: Rein Feld nach rechts Lein Feld nach links Sstopp Zustandsübergang: a ; b ; R Geschriebenes Zeichen Aktion Gelesenes Zeichen

46 KB Berechenbarkeit 46 Beispiel Turingmaschine (dargestellt mit einem Zustandsgraphen): AZ: Berechnungsproblem: Addition von Strichzahlen IIIII ZZ: IIIII z0z0 S z0z0 I; I; R ; I; R z1z1 ; ; L I; I; R z2z2 I; ; L z3z3 ; ; R I; I; L z4z4 I; I; S

47 KB Berechenbarkeit 47 Beispiel Turingmaschine (dargestellt mit einem Zustandsgraphen): z0z0 I; I; R ; I; R z1z1 ; ; L I; I; R z2z2 I; ; L z3z3 ; ; R I; I; L z4z4 I; I; S Turingmaschine (dargestellt mit einer Zustandstafel): alter gelesenes geschrieb. Kopf- neuer Zustand Zeichen Zeichen bewegung Zustand Z0 I I R Z0 Z0 ' ' I R Z1 Z1 I I R Z1 Z1 ' ' ' ' L Z2...

48 KB Berechenbarkeit 48 Präzisierung Definition: Eine Turingmaschine ist ein Tupel T = (X, B, b, Z, z 0, ) bestehend aus - einer endlichen, nichtleeren Menge X von Eingabezeichen, - einer Menge B mit X B von Bandzeichen, - einem speziellen Bandzeichen b B \ X (Blank), - einer endlichen, nichtleeren Menge Z von Zuständen, - einem Anfangszustand z 0 Z, - einer Überführungsfunktion : Z x B B x {L, R, S} x Z alter gelesenes geschrieb. Kopf- neuer Zustand Zeichen Zeichen bewegung Zustand Z0 I I R Z0 Z0 ' ' I R Z1 Z1 I I R Z1 Z1 ' ' ' ' L Z2...

49 KB Berechenbarkeit 49 Übung AZ: Berechnungsproblem: Verdopplung von Strichzahlen II ZZ: IIII z0z0 Entwickeln und testen Sie eine Turingmaschine zur Verdopplung von Strichzahlen. Beschreiben Sie die Turingmaschine mit einem Zustandsgraph und einer Zustandstabelle. Zum Testen können Sie den MPG-Turing-Simulator benutzen.

50 KB Berechenbarkeit 50 Definition: Eine Funktion f: N N heißt Turingmaschinen-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. Präzisierung von Berechenbarkeit Analog für f: N x N x... x N N II z0z0 IIII

51 KB Berechenbarkeit 51 Variation der Turingmaschine AZ: IIII ZZ: IIII z0z0 IIIIIIII Berechnungsproblem: Verdopplung von Strichzahlen z0z0 I ;II;RR ; ;LS z1z1 ; ;RS I ;I ;LS z2z2 ; ;SS z3z3 I ;II;RR 2-Band-Turingmaschine

52 KB Berechenbarkeit 52 Variation der Turingmaschine Berechnungsproblem: Verdopplung von Strichzahlen 2-dimensionale Turingmaschine

53 KB Berechenbarkeit 53 Kara als Variation der Turingmaschine 2-dimensionale Turingmaschine Kara

54 KB Berechenbarkeit 54 Übung Lösen Sie das Verdopplungsproblem (oder das Multiplikationsproblem) mit Hilfe einer 2-Band-Turingmaschine und mit Hilfe einer zweidimensionalen Turingmaschine.

55 KB Berechenbarkeit 55 Äquivalenz von Turingmaschinenmodellen Satz Eine Funktion f: N x N x... x N N ist mit einer Ein-Band- Turingmaschine berechenbar gdw sie mit einer Zwei-Band-Turingmaschine berechenbar ist gdw sie mit einer Mehr-Band-Turingmaschine berechenbar ist. Problem Was leisten Mehr-Band-Turingmaschinen bzw. zweidimensionale Turingmaschinen mehr als Ein-Band-Turingmaschinen?

56 KB Berechenbarkeit 56 Beweisidee z0z0 III I Simulation der Aktionen einer Zwei-Band-TM auf einem Band z0z0 III II*I* II*I*I zizi zjzj Vgl.: U. Mayr: Theoretische Informatik am PC. (Programm: Bsp-a5.tm)

57 KB Berechenbarkeit 57 Äquivalenz der Turingmaschinenmodelle Satz Eine Funktion f: N x N x... x N N ist mit einer eindimensionalen (Ein-Band-) Turingmaschine berechenbar gdw sie mit einer zweidimensionalen Turingmaschine berechenbar ist. Problem Was leisten Mehr-Band-Turingmaschinen bzw. zweidimensionale Turingmaschinen mehr als Ein-Band-Turingmaschinen?

58 KB Berechenbarkeit 58

59 KB Berechenbarkeit 59 Teil 5 Universelle Turingmaschine

60 KB Berechenbarkeit 60 Universelle Berechnungsmodelle Computer sind programmierbar! Daten Programm Daten Ein universelles Berechnungsmodell sollte in der Lage sein, nicht nur Eingabedaten in einer ganz bestimmten Weise zu verarbeiten, sondern Eingabedaten nach einem beliebigen, ebenfalls einzugebenden Verarbeitungsprogramm zu verarbeiten. Computer als programmierbares System

61 KB Berechenbarkeit 61 Universelle Turingmaschine Universelle Turingmaschine als Turingmaschinen-Interpreter Eingabeband Turingmaschine Ausgabeband Eine universelle Turingmaschine besitzt die Fähigkeit, beliebige andere Turingmaschinen zu simulieren. Als Eingabe erhält sie die Beschreibung der zu simulierenden Turingmaschine und der Daten auf dem Eingabeband für diese Turingmaschine. Universelle Turingmaschine

62 KB Berechenbarkeit 62 Universelle Turingmaschine Beispiel: Invertieren einer 01-Zeichenkette # # Eine universelle Turingmaschine besitzt die Fähigkeit, beliebige andere Turingmaschinen zu simulieren. Als Eingabe erhält sie die Beschreibung der zu simulierenden Turingmaschine und der Daten auf dem Eingabeband für diese Turingmaschine. Universelle Turingmaschine z1z1 1;0;R 0;1;R #;#;S z0z0

63 KB Berechenbarkeit 63 Universelle Turingmaschine Simulation von Ein-Band-Turingmaschinen mit einer univers. TM Kodierung der TM Ein-/Ausgabeband Vgl.: Turingkara – Aufgaben: Die universelle Turingmaschine Aktueller Zustand z1z1 1;0;R 0;1;R #;#;S z0z0

64 KB Berechenbarkeit 64 Universelle Turingmaschine Simulation von Ein-Band-Turingmaschinen mit einer univers. TM. Vgl.: U. Mayr: Theoretische Informatik am PC, S. 18 ff. Programm: Bsp-206.tm 0RI1 *I*... I 10# 10# z0z0 1;0;R 0;1;R #;#;S z1z1 Ein-/Ausgabe-Band Aktueller Zustand Kodierung der Turing-Tafel Kodierung: alter Zustand als Strichzahl+1; Leerzeichen; altes Zeichen; neues Zeichen; Bewegung; neuer Zustand als Strichzahl+1

65 KB Berechenbarkeit 65 Übung Testen Sie die universelle Turingmaschine der Turing-Kara- Umgebung bzw. des MPG-Simulators. Versuchen Sie insbesondere zu verstehen, wie diese universelle Turingmaschine arbeitet. Sie können auch die jeweils vorgegebene Turingmaschine und Bandbelegung durch eine andere ersetzen.

66 KB Berechenbarkeit 66 Universelle Turingmaschine Satz Es gibt universelle Turingmaschinen. Bemerkungen zum Beweis: Die Existenz einer universellen Turingmaschine zeigt man, indem man eine TM konstruiert, die sich wie ein Turingmaschinen- Interpreter verhält, d. h. diese (zweidimensionale oder Mehr-Band- ) Turingmaschine simuliert das Verhalten einer beliebig vorgegebenen Ein-Band-Turingmaschine bei einer beliebig vorgegebenen Bandbelegung. Die vorgegebene Turingmaschine und die vorgegebene Bandbelegung müssen dabei geeignet kodiert werden.

67 KB Berechenbarkeit 67 Teil 6 Registermaschinen

68 KB Berechenbarkeit 68 Präzisierung des Algorithmusbegriffs Prozessor Anweisungen Eingaben Ausgaben Grundschema eines algorithmisch gesteuerten Systems Präzisierungsansätze: Maschinenorientierte Ansätze: - Kara (mehr als ein Spielzeug) - Turingmaschine (abstraktes Rechnermodell) - Registermaschine (an realen Rechnern orientiertes Modell)

69 KB Berechenbarkeit 69 Berechnungsmodell Registermaschine An realen Rechnern orientiertes Berechnungsmodell 0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST 1 > 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9 TST 2 10 JMP 7 11 HLT 0:0 1:5 2:0 3:0 4:0.. Speicher (Registern) RegisterAdresseBefehlProgr.zähler Verarbeitungseinheit

70 KB Berechenbarkeit 70 Registermaschinenbefehle > x INC i Erhöhe Register i um 1. Gehe zu Zeile x+1. > x DEC i Erniedrige Register i um 1. Gehe zu Zeile x+1. > x JMP i Gehe zu Zeile i. > x TST i Wenn Register i ungleich 0 ist, dann gehe zu Zeile x+1, sonst zu Zeile x+2. > x HLT Beende die Bearbeitung.

71 KB Berechenbarkeit 71 Registermaschine in Aktion > 0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST 1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9 TST 2 10 JMP 7 11 HLT 0:0 1:5 2:0 3:0 4:0.. 0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 > 4 TST 1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9 TST 2 10 JMP 7 11 HLT 0:0 1:5 2:0 3:0 4:0.. 0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST 1 > 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9 TST 2 10 JMP 7 11 HLT 0:0 1:5 2:0 3:0 4:0.. 0 JMP 4 > 1 DEC 1 2 INC 0 3 INC 2 4 TST 1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9 TST 2 10 JMP 7 11 HLT 0:0 1:5 2:0 3:0 4:0..

72 KB Berechenbarkeit 72 Verhaltensbeschreibung 0:0 1:n 2:0 3:0 4:0.. Zustand vorher RM-Programm 0: 2n 1: 0 2: 0 3:0 4:0.. Zustand nachher Die Registermaschine berechnet die Verdopplungsfunktion auf natürlichen Zahlen, d. h.: f: N N mit f(n) = 2n > 0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST 1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9 TST 2 10 JMP 7 11 HLT

73 KB Berechenbarkeit 73 Definition: Eine Funktion f: N N heißt Registermaschinen-berechenbar, gdw gilt: Es gibt eine Registermaschine mit der folgenden Eigenschaft AZ:Im Registern R1 befindet sich der Ausgangswert. ZZ:Fall 1: f(n) ist definiert: Die RM hält und in R0 befindet sich der Ergebniswert. Fall 2: f(n) ist undefiniert: Die RM hält nicht. Präzisierung von Berechenbarkeit Analog für f: N x N x... x N N 0n f(n)...

74 KB Berechenbarkeit 74 Äquivalenzsatz Satz Eine Funktion f: N x N x... x N N ist Turingmaschinen- berechenbar gdw sie Registermaschinen-berechenbar ist. Beweis: Der Beweis wird konstruktiv geführt. Man konstruiert mit Hilfe einer Turingmaschine einen Registermaschinen-Interpreter und umgekehrt mit Hilfe einer Registermaschine einen Turingmaschinen-Interpreter.

75 KB Berechenbarkeit 75 Teil 7 LOOP- und WHILE-Programme

76 KB Berechenbarkeit 76 Präzisierung des Algorithmusbegriffs Prozessor Anweisungen Eingaben Ausgaben Grundschema eines algorithmisch gesteuerten Systems Präzisierungsansätze: Anweisungsorientierte Ansätze: - Die Programmiersprache LOOP - Die Programmiersprache WHILE - Die Programmiersprachen Pascal, Delphi, Java,...

77 KB Berechenbarkeit 77 LOOP-Programme Bestandteile von LOOP-Programmen Variablen: x 0 x 1 x 2... Konstanten: Trennsymbole: ; := Operatoren: + - Schlüsselwörter: LOOP DO END Jede Wertzuweisung der Form x i := c oder x i := x j oder x i := x j + c ist ein LOOP-Programm. Falls P1 und P2 LOOP-Programme sind, dann ist auch die Sequenz P1; P2 ein LOOP-Programm. Falls P ein LOOP-Programm ist, dann ist auch LOOP x i DO P END ein LOOP- Programm. Aufbau eines LOOP-Programms

78 KB Berechenbarkeit 78 LOOP-Programme Ausführung der LOOP-Anweisung Eine LOOP-Anweisung der Form LOOP x i DO P END wird wie folgt ausgeführt: Die LOOP-Anweisung P wird sooft ausgeführt, wie der Wert der Variablen x i zu Beginn beträgt. x 0 := x 1 ; LOOP x 2 DO x 0 := x END Beispiel eines LOOP-Programms {x 0 : [...]; x 1 : [5]; x 2 : [3]; x 3 : [...];... } x 0 := x 1 ; LOOP x 2 DO x 0 := x END {x 0 : [8]; x 1 : [5]; x 2 : [3]; x 3 : [...];... } Bedeutung eines LOOP-Programms Das Programm berechnet die Additionsfunktion auf natürlichen Zahlen: f(m, n) = m + n

79 KB Berechenbarkeit 79 WHILE-Programme Bestandteile von WHILE-Programmen Variablen: x 0 x 1 x 2... Konstanten: Trennsymbole: ; := Operatoren: + - Schlüsselwörter: WHILE DO END Jede Wertzuweisung der Form x i := c oder x i := x j oder x i := x j + c ist ein WHILE-Programm. Falls P1 und P2 WHILE-Programme sind, dann ist auch die Sequenz P1; P2 ein WHILE-Programm. Falls P ein WHILE-Programm ist, dann ist auch WHILE x i 0 DO P END ein WHILE-Programm. Aufbau eines WHILE-Programms

80 KB Berechenbarkeit 80 WHILE-Programme Ausführung der WHILE-Anweisung Eine WHILE-Anweisung der Form WHILE x i 0 DO P END wird wie folgt ausgeführt: Das WHILE-Programm P wird solange ausgeführt, wie der Wert der Variablen x i ungleich Null ist. x 0 := x 1 ; WHILE x 2 0 DO x 0 := x 0 + 1; x 2 := x END Beispiel eines WHILE-Programms {x 0 : [0]; x 1 : [5]; x 2 : [3]; x 3 : [0];... } x 0 := x 1 ; WHILE x 2 0 DO x 0 := x 0 + 1; x 2 := x END {x 0 : [8]; x 1 : [5]; x 2 : [0]; x 3 : [0];... } Bedeutung eines WHILE-Programms Das Programm berechnet die Additionsfunktion auf natürlichen Zahlen: f(m, n) = m + n

81 KB Berechenbarkeit 81 Definition: Eine Funktion f: N N heißt LOOP-/WHILE-berechenbar, gdw gilt: Es gibt ein LOOP-/WHILE-Programm mit der Eigenschaft: AZ:Die Variable x 1 enthält den Ausgangswert: {x 0 : [0]; x 1 : [n]; x 2 : [0]; x 3 : [0];... } ZZ:Fall 1: f(n) ist definiert: Die Ausführung des Programms endet und x 0 enthält den Ergebniswert. {x 0 : [f(n)]; x 1 : [...]; x 2 : [...]; x 3 : [...];... } Fall 2: f(n) ist undefiniert: Die Ausführung des Programms endet nicht. Präzisierung von Berechenbarkeit Analog für f: N x N x... x N N

82 KB Berechenbarkeit 82 Übung Aufgabe 1 Entwickeln Sie ein LOOP-Programm / WHILE-Programm zur Berechnung der Verdopplungsfunktion / Multiplikationsfunktion. Aufgabe 2 Welche Funktion wird durch das folgende WHILE-Programm berechnet? x 0 := x 1 ; WHILE x 2 0 DO x 0 := x END Aufgabe 3 Gibt es Funktionen, die mit keinem LOOP-Programm berechnet werden können?

83 KB Berechenbarkeit 83 Unterschied LOOP-WHILE Die Ausführung jedes LOOP-Programms endet immer. Ein WHILE- Programm kann dagegen eine Endlosschleife enthalten. Unterschied: LOOP-berechenbar - WHILE-berechenbar x 0 := x 1 ; WHILE x 2 0 DO x 0 := x END Satz Es gibt Funktionen f: N x N x... x N N, die WHILE-berechenbar, aber nicht LOOP-berechenbar sind. Das gezeigte WHILE-Programm berechnet die Funktion f: N N mit f(m, n) = IF(n=0, m, ).

84 KB Berechenbarkeit 84 Äquivalenzsatz Satz Eine Funktion f: N x N x... x N N ist WHILE-berechenbar gdw sie Registermaschinen-berechenbar ist. Beweis: Der Beweis wird konstruktiv geführt. Man konstruiert zu jeder Registermaschine ein entsprechendes WHILE-Programm und umgekehrt zu jedem WHILE-Programm eine entsprechende Registermaschine.

85 KB Berechenbarkeit 85 Teil 8 Rekursive Funktionen

86 KB Berechenbarkeit 86 Rekursive Funktionen Grundschema eines algorithmisch gesteuerten Systems Prozessor Anweisungen Eingaben Ausgaben Grundidee: Man beschreibt die berechenbaren E/A-Zuordnungen wie folgt: Einige einfache Grundfunktionen werden als berechenbar erklärt. Des weiteren werden einige einfache Konstruktionsprinzipien angegeben, die beschreiben, wie man aus berechenbaren Funktionen weitere berechenbare Funktionen erhält. Die zentrale Konstruktionsoperation ist die dabei die Rekursion.

87 KB Berechenbarkeit 87 Rekursives Berechnungsschema Beispiel: Addition natürlicher Zahlen add(x,0) = x add(x,s(y))= s(add(x,y)) Bemerkungen: Die Nachfolgerfunktion s: N N, die jeder natürlichen Zahl ihren direkten Nachfolger zuordnet, wird als gegebene berechenbare Funktion betrachtet. Die Funktion add: N x N N, die je zwei natürlichen Zahlen ihre Summe zuordnen soll, wird rekursiv festgelegt: - Zunächst wird der Rekursionsanfang addiere zur Zahl x die Zahl 0 festgelegt. - Anschließend wird der Fall addiere zur Zahl x den Nachfolger s(y) einer Zahl y auf den Fall addiere zu x die Zahl y rekursiv reduziert. Bei der Festlegung werden hier die Konstruktionsoperationen Rekursion und Funktionskomposion und die Grundfunktion s benutzt.

88 KB Berechenbarkeit 88 Rekursives Berechnungsschema Beispiel: Addition natürlicher Zahlen add(x,0) = x add(x,s(y))= s(add(x,y)) Berechnung rekursiv festgelegter Funktionen add(3,2) = s(add(3,1)) = s(s(add(3,0))) = s(s(3)) = s(4) = 5 >add(3,2) >add(3,1) >add(3,0)

89 KB Berechenbarkeit 89 Übung Entwickeln Sie rekursive Berechnungsschemata für die folgenden Funktionen. Benutzen Sie nur die vorgegebene Nachfolgerfunktion s und bereits definierte Funktionen (wie add). mult(x, y) Beschreibt die übliche Multiplikation natürlicher Zahlen fakt(x) Beschreibt die Fakultätsfunktion: f(0) = 1, f(1) = 1, f(2) = 2*1, f(3) = 3*2*1,... exp(x, y) Beschreibt die Potenzbildung für natürliche Zahlen, d. h.: exp(2, 3) = 2 3

90 KB Berechenbarkeit 90 Übung Untersuchen Sie die folgenden rekursiven Berechnungsschemata und beschreiben Sie die jeweils berechneten Funktionen. test(0)=1 test(s(x))=0 pred(0)=0 pred(s(x))=x subtr(x,0)=x subtr(x,s(y))=pred(subtr(x,y)) absdiff(x,y)=add(subtr(x,y),subtr(y,x)) equal(x,y)=test(absdiff(x,y))

91 KB Berechenbarkeit 91 Übung Welche Berechnungsschemata sind korrekt, sinnvoll? subtr2(x, 0) = x subtr2(0, y) = y subtr2(s(x), s(y)) = subtr2(x, y) subtr3(x, 0) = x subtr3(0, y) = y subtr3(x, y) = subtr3(s(x), s(y)) add2(x, 0) = x add2(x,y)= add(s(x),pred(y)))

92 KB Berechenbarkeit 92 Primitive Rekursion Rekursive Problemreduktionen: add(x,s(y))= s(add(x,y)) add2(x,y)= add2(s(x),pred(y))) subtr(x,s(y))=pred(subtr(x,y)) subtr2(s(x), s(y)) = subtr2(x, y) subtr3(x, y) = subtr3(s(x), s(y)) Primitives Reduktionsschema: add(x,s(y))= s(add(x,y)) f(x 1,...,x n,s(y)) = h(x 1,...,x n,y,f(x 1,...,x n,y)) In einem Schritt wird nur ein Argument um 1 reduziert.

93 KB Berechenbarkeit 93 Primitive Rekursion Primitives Reduktionsschema: add(x,0) = x add(x,s(y))= s(add(x,y)) Rekursionsanfang: Die Funktion f kommt nicht auf der rechten Seite vor. Rekursionsschritt: Die Funktion f kommt auf der rechten Seite vor, aber nur ein Argument wird um 1 reduziert. Formalisierung f(x 1,...,x n,0) = g(x 1,...,x n ) f(x 1,...,x n,s(y)) = h(x 1,...,x n,y,f(x 1,...,x n,y))

94 KB Berechenbarkeit 94 Primitiv rekursive Funktionen Satz Die folgenden Funktionen sind primitiv rekursiv: f(m, n) = m + n f(m, n) = IF(m n, m-n, 0) f(m, n) = m n... Definition: Eine Funktion f: N x... x N N heißt primitiv rekursiv, gdw gilt: Die Funktion f lässt sich mit Hilfe der Nachfolgerfunktion s als Grundfunktion sowie Funktionskomposition und primitiver Rekursion als Konstruktionsoperationen berechnen.

95 KB Berechenbarkeit 95 Übung Ack(0,y)=s(y) Ack(s(x),0)=Ack(x,1) Ack(s(x),s(y))=Ack(x,Ack(s(x),y)) Testen Sie das folgende rekursive Berechnungsschemata zur sogenannten Ackermann-Funktion. Was beobachtet man, wenn die Parameter (insbesondere der zweite) nicht sehr klein gewählt werden?

96 KB Berechenbarkeit 96 Ackermannfunktion Rekursive Definition: Ack(0,y)=s(y) Ack(s(x),0)=Ack(x,1) Ack(s(x),s(y))=Ack(x,Ack(s(x),y)) Man muss zeigen, dass die Ackermannfunktion sich nicht mit Hilfe eines primitiv rekursiven Rekursionsschemas darstellen lässt. Zum Beweis zeigt man, dass die Ackermann-Funktion schneller wächst als jede primitiv rekursive Funktion. Satz Die Ackermann-Funktion ist nicht primitiv rekursiv. Beachte: Es handelt sich hier nicht um ein primitiv rekursives Rekursionsschema.

97 KB Berechenbarkeit 97 Übung f(x, y) = das kleinste z mit y+z=x Wir betrachten die folgende informell definierte Funktion. Berechnen Sie f(5, 2) und f(2, 5). Beschreiben Sie das Verhalten der Funktion f.

98 KB Berechenbarkeit 98 Definition: Eine Funktion f: N x... x N N heißt partiell rekursiv, gdw gilt: Die Funktion f lässt sich mit Hilfe der Nachfolgerfunktion s als Grundfunktion sowie Funktionskomposition, primitiver Rekursion und dem das kleinste-Operator als Konstruktionsoperationen berechnen. Partiell rekursive Funktionen Beweis: siehe Fachliteratur Satz Die Ackermann-Funktion ist partiell rekursiv.

99 KB Berechenbarkeit 99 Äquivalenzsatz Satz Eine Funktion f: N x N x... x N N ist primitiv rekursiv gdw sie LOOP-berechenbar ist. Eine Funktion f: N x N x... x N N ist partiell rekursiv gdw sie WHILE-berechenbar ist. Beweis: siehe Fachliteratur

100 KB Berechenbarkeit 100

101 KB Berechenbarkeit 101 Teil 9 Church-Turing-These

102 KB Berechenbarkeit 102 Berechnungsmodelle Grundschema eines algorithmisch gesteuerten Systems Prozessor Anweisungen Eingaben Ausgaben Präzisierungsansätze: Maschinenorientierter Ansatz: Turingmaschine, Registermaschine Zuordnungsorientierter Ansatz: partiell rekursive Funktion Anweisungsorientierter Ansatz: WHILE, Pascal, Delphi, C, Java,...

103 KB Berechenbarkeit 103 Äquivalenzsatz Satz Gegeben ist eine Funktion f: N x N x... x N N. Die folgenden Aussagen sind äquivalent: - f ist Turingmaschinen-berechenbar. - f ist Registermaschinen-berechenbar. - f ist WHILE-berechenbar, - f ist partiell rekursiv. - f ist Pascal-berechenbar Bem.: Alle Ansätze zur Präzisierung führen auf dieselbe Klasse berechenbarer Funktionen.

104 KB Berechenbarkeit 104 Church-Turing-These These Die Klasse der im intuitiven Sinn berechenbaren Funktion ist genau die Klasse der Turingmaschinen-berechenbaren Funktionen bzw. die Klasse der partiell rekursiven Funktionen bzw. die Klasse der WHILE-berechenbaren Funktionen bzw....

105 KB Berechenbarkeit 105 Literaturhinweise Gasper, Leiß, Spengler, Stimm: Technische und theoretische Informatik. Bayerischer Schulbuch-Verlag U. Mayr: Theoretische Informatik am PC. SIL-Studienmaterial Band 142, Speyer Reichert, Nievergelt, Hartmann: Programmieren mit Kara. Springer- Verlag D. Harel: Das Affenpuzzle und weitere bad news aus der Computerwelt. Springer-Verlag U. Schöning: Theoretische Informatik – kurzgefasst. Spektrum Akademischer Verlag 2001.


Herunterladen ppt "Berechenbarkeit Klaus Becker 2004. KB Berechenbarkeit 2 Die Möglichkeiten von Software Geben Sie einem Computer die richtige Software, und er wird tun,"

Ähnliche Präsentationen


Google-Anzeigen