Von Claudia Koller und Bernhard Findeiß

Slides:



Advertisements
Ähnliche Präsentationen
Christian Scheideler SS 2009
Advertisements

Hier einige Hieroglyphen:
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Schwierigkeit von Aufgabenstellungen
Schnelle Matrizenoperationen von Christian Büttner
Das duale Zahlensystem
Prof. Dr. W. Conen 15. November 2004
7. Automaten Ein Automat ist ein Sechstupel A= (I, O, Q, , q0, F).
Suche in Texten (Stringsuche )
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
Verifizieren versus Berechnen
Christian Schindelhauer
FH-Hof Optimierungsverfahren für kombinatorische Probleme Richard Göbel.
Formale Sprachen – Mächtigkeit von Maschinenmodellen
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
Philosophie der Logik nach Frege I
Das Halteproblem. Gibt es einen Algorithmus, mit dem man für jedes beliebig vorgegebene Programm R und für jede beliebig vorgegebene Eingabe E entscheiden.
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Kapitel 1 Die natürlichen und die ganze Zahlen. Kapitel 1: Die natürlichen und die ganzen Zahlen © Beutelspacher/Zschiegner April 2005 Seite 2 Inhalt.
Semantik von Prolog & Unifikation
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
(Ron Rivest, Adi Shamit, Leonard Adleman , 1977)
Situationen Verteilte Anwendungen Wintersemester 06/07 © Wolfgang Schönfeld.
Addierwerke.
Berechenbarkeit. Fragestellungen Können Computer alles ausrechnen? Kann man alles ausrechnen? Was kann man berechnen? Was nicht? Was heißt Berechenbarkeit?
Gymnasium Horn – Bad Meinberg
Wie macht man ein Sudoku? Transformations-Methode:
Kurt Mehlhorn Konstantinos Panagiotou
Was ist ein Computer? Was ist ein Programm? Können Computer Alles?
Willkommen bei Sycarus – dem Mathematikprogramm, das neue Wege geht.
? Was ist Informatik? Was ist Informatik? Alexander Lange
Endliche Automaten Informatik JgSt. 13, Abitur 2009
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
von Renate Pauer Susanne Haberl am 11. April.2011
Wie sicher ist mein Geld ... ?
Wahrscheinlichkeitsrechnung
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
Lernprogramm : „Quadratische Funktionen“
Grundlagen der Informatik - Prof. Slany 1 Grundlagen der Informatik Prof. Wolfgang SLANY.
ENDLICHE KÖRPER RSA – VERFAHREN.
Lernprogramm : „Quadratische Funktionen“ von W. Liebisch
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Informatik III Christian Schindelhauer Wintersemester 2006/07
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Informatik III Christian Schindelhauer Wintersemester 2006/07
Arne Vater Wintersemester 2006/ Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Arne Vater Wintersemester 2006/ Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Von Claudia Koller und Bernhard Findeiß
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Gödel: Gottesbeweis Dürst Yolanda, Warhanek Maximilian, Rigo Elvira
Vom graphischen Differenzieren
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Vorstellen und Herleiten der Horner Schemas
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Vorstellen und Herleiten der Horner Schemas
 Präsentation transkript:

Von Claudia Koller und Bernhard Findeiß Turingmaschinen Von Claudia Koller und Bernhard Findeiß

Überblick über den heutigen Vortrag: Wer war eigentlich Alan Turing ? Was ist eine Turingmaschine ? Wie funktioniert sie ? Wozu benötigt man sie ?

Das Leben von Alan Turing Geboren am 26. Juni. 1912 in London Starb am 7. Juni 1954 in Manchester unter ungeklärten Umständen Studierte Mathematik und Wissenschaften u.a. in Cambridge und Princeton Während des Zweiten Weltkriegs arbeitete er für die britische Armee Nach dem Krieg (von 1945 - 1947) am „National Physical Laboratory“ in Teddington tätig. Entwarf dort das Konzept der „Automatic Computing Engine“ (ACE) Ab 1948 stellvertretender Direktor des „Computing Laboratory“ in Manchester. Entwarf dort die „Manchester Automatic Digital Machine“ (MADAM) Wurde 1952 wegen homosexueller Neigungen verhaftet Musste sich anschliessend einer erzwungenen Hormontherapie unterziehen Ein Jahr nach deren Ende, am 7. Juni. 1954, beging er Selbstmord

Einige seiner Leistungen: erdachte die Turingmaschine knackte im 2. Weltkrieg den Code der Enigma erfand den Algorithmus (!) führte als erster den Begriff „künstliche Intelligenz“ ein (wurde aber erst 1969 veröffentlicht!) schrieb den Turing-Test Er hat die Erfindung des Computer in den 1940er und '50er - Jahren kaum beeinflusst Wird heute jedoch als Pionier der Computertechnik angesehen Sein Prinzip des Algorithmus ist immer noch in jedem Computer zu finden

Die Turingmaschine Wieso dachte sich Turing dieses Konzept überhaupt aus? Was war der Anlass dazu ? Grund: Das Hilbertsche Entscheidungsproblem David Hilbert präsentierte 1900 eine Liste ungelöster Probleme Aufgabe: Eine Methode finden, mit der man feststellen kann, ob ein mathematisches Problem erfüllbar ist oder nicht Lösung erst 1936 von Alonzo Church (Berechenbarkeit): Hilberts Problem ist unlösbar! Auf das gleiche Ergebnis kam 6 Monate später Alan Turing

Seine Idee war nun, dies mit Hilfe einer ideellen Maschine zu tun Diese Maschine muss algoritmisch sein, d.h. mechanisch ausführbar und ohne Zuhilfenahme intelligenter Einsicht Dazu muss man einen Rechenvorgang in kleinste Schritte zerlegen  detailiertes Modell für Berechnungsvorgänge Das sich daraus ergebende Gedankenmodell bezeichnet man als Turingmaschine. Eine Turingmaschine kann man sich wie eine Schreibmaschine vorstellen Der genaue Aufbau ist nicht so wichtig, da keine echte TM existiert Sie ist eher eine Methode mathematischen Denkens Es gibt aber Simulationen z.B. unter Java. Am Ende des Vortrags werden wir eine davon vorführen!

Funktionsweise einer Turingmaschine Eine Turingmaschine ist eine ziemlich einfache Maschine. Sie besteht im Prinzip nur aus folgenden Teilen: einem (potentiell unendlich langen) in Zellen unterteiltem Band, das pro Feld genau ein Zeichen aufnehmen kann einem Schreib-Lesekopf: Kann Zeichen aus einem vorgegebenem Zeichenvorrat schreiben und löschen. Kann ausserdem nach rechts und nach links auf dem Band wandern (eine Zelle pro Schritt) einem inneren Zustand

Die Turingmaschine kann je nach Zustand und Inhalt des Bandes verschiedene Aktionen ausführen: ein neues Zeichen schreiben den Schreib-Lesekopf um eine Position nach rechts oder links schieben den internen Zustand verändern (entspricht bei der Schreibmaschine z.B. dem Drücken der Umschalttaste) Daraus ergibt sich folgendes Befehlsformat: ([zu schreibendes Zeichen],[nächster Zustand],[Bewegung d. Kopfes]) Jeder moderne Rechner ist im Prinzip eine Turingmaschine! (dazu später noch mehr) Wenn man mehrere dieser Befehle zu einer Tabelle zusammenfasst, kann man ein Programm für die Maschine entwickeln.

Beispiel für ein Programm: Addition zweier hintereinander stehender Zahlen Zeichenvorrat: { 0; 1 } Anschreiben der beiden zu addierenden Zahlen auf das Band: 0 0 0 0 1 1 0 1 1 1 1 0 0 Das eigentliche Programm sieht ungefähr so aus:

0 0 0 0 1 1 0 1 1 1 1 0 0 Wir beginnen ganz links und im Zustand S1  die 0 bleibt, der Zustand S1 ebenso, der Lesekopf geht nach rechts 0 0 0 0 1 1 0 1 1 1 1 0 0 Die 1 in eine 0 umändern, Zustand 2 einnehmen, Lesekopf nach rechts 0 0 0 0 1 1 0 1 1 1 1 0 0 Noch 2 mal 0 0 0 0 1 1 0 1 1 1 1 0 0 Das war‘s. Jetzt kommt die erste 1. 0 0 0 0 1 1 0 1 1 1 1 0 0 Noch 1 mal

Die 1 bleibt, kein Zustandswechsel, Lesekopf nach rechts 0 0 0 0 0 1 0 1 1 1 1 0 0 Statt der 0 eine 1 schreiben, Zustand 3 einnehmen, Lesekopf nach rechts 0 0 0 0 0 1 0 1 1 1 1 0 0 Die 1 bleibt, kein Zustandswechsel, Lesekopf nach rechts

Resultat: Die linke Anfangszahl wurde um eins nach rechts geschoben 0 0 0 0 0 1 1 1 1 1 1 0 0 Zustand 3 = Ende Resultat: Die linke Anfangszahl wurde um eins nach rechts geschoben  entspricht a + b

Ein weiteres Beispiel: die Kopiermaschine Frage: Wie kann ich eine gegebene Zeichenkette mit Hilfe der Turingmaschine kopieren? Es gib mehrere Lösungsansätze: Man kann die Anzahl der Einsen abzählen und anschließend weiter rechts auf dem Band anschreiben Problem dabei: Die Maschine benötigt genauso viele Zustände wie Einser auf dem Band stehen. Dies ist allerdings nicht sehr elegant bei langen Zeichenketten.

Es gibt aber noch eine bessere Methode: Man schiebt eine Null als Index durch die gesamte Kette und schreibt bei jedem Schiebevorgang eine Eins rechts neben die ursprüngliche Kette So entsteht allmählich eine Kopie rechts neben der Ausgangskette Das zugehörige Programm sieht in etwa so aus:

Ein weiteres Beispiel: die Kopiermaschine 0 0 1 1 1 0 0 0 0 0 Register N Register P Lücke S1 0 0 1 0 1 0 1 0 0 0 S3 N P 0 0 1 0 1 0 1 0 0 0 S2 N P 0 0 1 0 1 0 1 0 0 0 S3 N P 0 0 1 0 1 0 1 1 0 0 S5 N P 0 0 1 1 0 0 1 1 1 0 S4 N P 0 0 1 1 0 0 1 1 0 0 S3 N P 0 0 0 1 1 0 1 0 0 0 S6 N P 0 0 1 1 1 0 1 1 1 0 S7 N P 0 0 1 1 1 0 1 0 0 0 S7 N P 0 0 0 1 1 0 1 0 0 0 S6 N P 0 0 0 1 1 0 0 0 0 0 S2 N P S1 0 0 1 1 1 0 0 0 0 0 N P 0 0 0 1 1 0 0 0 0 0 S2 N P S2 N P 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 S3 N P 0 0 1 1 1 0 0 0 0 0 S1 N P 0 0 0 1 1 0 1 0 0 0 S5 N P 0 0 0 1 1 0 1 0 0 0 S4 N P 0 0 1 1 1 0 1 0 0 0 S4 N P 0 0 1 1 1 0 1 1 1 0 S8 N P 0 0 1 1 0 0 1 1 1 0 S4 N P 0 0 1 1 1 0 1 1 1 0 S6 N P 0 0 1 1 0 0 1 1 1 0 S5 N P 0 0 1 0 1 0 1 0 0 0 S3 N P 0 0 1 0 1 0 1 1 0 0 S4 N P 0 0 1 0 1 0 1 1 0 0 S4 N P 0 0 1 0 1 0 1 1 0 0 S6 N P 0 0 1 1 1 0 1 1 0 0 S7 N P 0 0 1 1 0 0 1 1 0 0 S3 N P 0 0 1 1 0 0 1 1 0 0 S2 N P 0 0 1 1 0 0 1 1 0 0 S3 N P

Zusammengesetzte Programme Man kann sich viel Arbeit sparen, wenn man komplizierte Programme nicht direkt entwickelt sondern aus einfacheren aufbaut Beispiel: Die Multiplikation Anstatt ein Programmzu entwickeln, das direkt multipliziert (also ab berechnet), kann man auch die Kopiermaschine verwenden: Man kopiert b einfach a-mal, und kommt so aufs gleiche Ergebnis Wenn man mehrere verschiedene Turingmaschinen kombiniert kann man so auch komplizierte Ausdrücke auswerten Beispiel: Mit den Verfahren zur Addition, Multiplikation und Kopieren kann man bereits einen polynomialen Ausdruck auswerten

Problem dabei: Viele kleine Turingmaschinen führen keine sinnvollen Aufgaben aus  man muss mit Sorgfalt wählen, welche man kombiniert Für den Anfänger scheinen zuerst selbst einfache Aufgaben unlösbar Mit etwas Übung jedoch lernt man wie man mit nur wenigen Grundverfahren die Möglichkeiten der Turingmaschine explosionsartig erweitern kann Man kann sich nun theoretisch vorstellen kleinere Turingmaschinen so zu kombinieren dass man damit jede beliebige Aufgabe lösen kann Solch eine (theoretische) Maschine nennt man die universelle Turingmaschine

Die universelle Turingmaschine Jede Turingmaschine lässt sich durch eine endliche Kette von Nullen und Einsen auf einem Band darstellen, da sie durch ihre Anweisungstabelle eindeutig definiert ist diese Tabelle endlich sein muss, da sowohl die Zahl der Zustände als auch die Zahl der Zeichen auf dem Band endlich ist Turing zeigte nun: Durch die universelle Turingmaschine lässt sich jede (beliebige) andere Turingmaschine simulieren. Dies funktioniert wie folgt:

Man zerlegt man die kleinere Maschine in zwei Abschnitte: ihre Beschreibung, die man auf der linken Seite anschreibt die Bandinschrift, die diese Maschine bearbeiten soll, auf der rechten Seite Die universelle Turingmaschine bearbeitet die Aufgabe nun wie folgt: Sie springt immer zwischen der Beschreibung und der Bandinschrift hin und her  sie ist immer auf dem Laufenden über den aktuellen Zustand  sie bearbeitet die Bandinschrift genau so, wie die kleinere Maschine es alleine täte Dadurch ist gezeigt: Die universelle Turingmaschine hat die kleinere Maschine simuliert

Diese erfolgreiche Simulation beruht allein darauf, dass jede Turingmaschine sich vollständig durch endlich viele Zeichen beschreiben lässt. Im Prinzip kann man jeden Digitalrechener so beschreiben, modernste Systeme: Er hat eine endliche (wenn auch sehr große) Anzahl innerer Zustände Seine Reaktion auf eine Eingabe ist durch endlich viele Anweisungen festgelegt Macht man das Speicherband nun groß genug kann man jeden beliebigen Recher als universelle Turingmaschine verwenden

Dies eröffnet interessante Möglichkeiten. Man stelle sich vor: Man verwendet einen Mikrocomputer als universale TM und gibt anschließend die Beschreibung eines Grossrechners ein  Der Mikrocomputer wird sich wie ein Grossrechner verhalten Durch diese Eigenschaft kann man einen weiteren Schluß ziehen: Jeder Digitalrechner kann die gleiche Klasse mathematischer Funktionen berechnen: die Klasse aller Funktionen die auf einer Turingmaschine berechenbar sind

Wozu allerdings dient dieser Beweis? Er soll Turings Definition der Berechenbarkeit stützen: Eine mathematische Funktion ist berechenbar, wenn sie sich auf einer Turing- maschine berechnen läßt Er fand auch überzeugende Beweise, die seine These untermauern ( 2.Teil) Wieso jedoch war er so versessen darauf, den Begriff der Berechenbarkeit exakt zu definieren? Die Antwort liefert ein Blick in die Geschichtsbücher:

Mathematische Strenge im heutigen Sinn ist eine relativ neue Entwicklung Der erste Versuch, mathematische Aussagen auf Aussagen der formalen Logik zurückzuführen wurde 1879 von Gottlob Frege unternommen („Begriffsschrift“) Das Hilbertsche Entscheidungsproblem ist demnach von direkter Bedeutung für die Mathematik: Falls man Freges Programm vollständig durchführen kann und eine Methode finden könnte, um Wahr- oder Falschheit einer Aussage der formalen zu beweisen, dann kann man diesen Beweis auf alle mathematischen Aussagen ausdehnen

Damit ließen sich auch Probleme lösen, mit denen man vorher Schwierigkeiten hatte, wie z.B. Pierre de Fermats „letztem Theorem“ Allerdings zeigte sich bald, daß dies unmöglich ist: Bertrand Russell fand 1901 ein unauflösbares Paradox in der Mengenlehre Kurt Gödel fand einen Widerspruch in der Annahme von Hilberts Problem Sie konnten jedoch Freges Werk in modifizierter Form retten, indem sie das Russelsche Paradox durch einen Kunstgriff, die sogenannte „Typentheorie“ umgingen