Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Informatik mit Kara Spielerischer Einstieg in die Informatik Kara mit Java Ausblick Gerhard Bitsch Kepler - Gymnasium Tübingen Seminarsitzung Informatik, Januar 2008 Gliederung Kara Gerhard Bitsch Problemstellung 1 Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara 2 Kara im Anfängerunterricht Kara mit Java 3 Turing-Maschinen mit Kara Ausblick 4 Kara mit Java 5 Ausblick Gliederung Kara Gerhard Bitsch Problemstellung 1 Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara 2 Kara im Anfängerunterricht Kara mit Java 3 Turing-Maschinen mit Kara Ausblick 4 Kara mit Java 5 Ausblick Gliederung Kara Gerhard Bitsch Problemstellung 1 Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara 2 Kara im Anfängerunterricht Kara mit Java 3 Turing-Maschinen mit Kara Ausblick 4 Kara mit Java 5 Ausblick Gliederung Kara Gerhard Bitsch Problemstellung 1 Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara 2 Kara im Anfängerunterricht Kara mit Java 3 Turing-Maschinen mit Kara Ausblick 4 Kara mit Java 5 Ausblick Gliederung Kara Gerhard Bitsch Problemstellung 1 Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara 2 Kara im Anfängerunterricht Kara mit Java 3 Turing-Maschinen mit Kara Ausblick 4 Kara mit Java 5 Ausblick Vorüberlegungen Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Schülervorwissen ist unterschiedlich. Elementare Informatik-Konzepte sollten leicht zugänglich sein. Komplizierte Sprachen sind für Anfänger ungeeignet. Komplexe Entwicklungsumgebungen sind hinderlich. Fehlermeldungen sollten verstehbar sein. Ausblick Folgerung Professionelle Entwickler-Umgebungen sind nicht gut für Anfänger. Vorüberlegungen Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Schülervorwissen ist unterschiedlich. Elementare Informatik-Konzepte sollten leicht zugänglich sein. Komplizierte Sprachen sind für Anfänger ungeeignet. Komplexe Entwicklungsumgebungen sind hinderlich. Fehlermeldungen sollten verstehbar sein. Ausblick Folgerung Professionelle Entwickler-Umgebungen sind nicht gut für Anfänger. Vorüberlegungen Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Schülervorwissen ist unterschiedlich. Elementare Informatik-Konzepte sollten leicht zugänglich sein. Komplizierte Sprachen sind für Anfänger ungeeignet. Komplexe Entwicklungsumgebungen sind hinderlich. Fehlermeldungen sollten verstehbar sein. Ausblick Folgerung Professionelle Entwickler-Umgebungen sind nicht gut für Anfänger. Vorüberlegungen Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Schülervorwissen ist unterschiedlich. Elementare Informatik-Konzepte sollten leicht zugänglich sein. Komplizierte Sprachen sind für Anfänger ungeeignet. Komplexe Entwicklungsumgebungen sind hinderlich. Fehlermeldungen sollten verstehbar sein. Ausblick Folgerung Professionelle Entwickler-Umgebungen sind nicht gut für Anfänger. Vorüberlegungen Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Schülervorwissen ist unterschiedlich. Elementare Informatik-Konzepte sollten leicht zugänglich sein. Komplizierte Sprachen sind für Anfänger ungeeignet. Komplexe Entwicklungsumgebungen sind hinderlich. Fehlermeldungen sollten verstehbar sein. Ausblick Folgerung Professionelle Entwickler-Umgebungen sind nicht gut für Anfänger. Vorüberlegungen Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Schülervorwissen ist unterschiedlich. Elementare Informatik-Konzepte sollten leicht zugänglich sein. Komplizierte Sprachen sind für Anfänger ungeeignet. Komplexe Entwicklungsumgebungen sind hinderlich. Fehlermeldungen sollten verstehbar sein. Ausblick Folgerung Professionelle Entwickler-Umgebungen sind nicht gut für Anfänger. Wünschenswertes Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Eine einfache aber ausdruckstarke Sprache. Eine intuitive Programmierumgebung. Möglichst wenig Syntax. Ein Vorrat von konkreten, anschaulichen Problemen. Visualisierungsmöglichkeiten für den Programmablauf. Wünschenswertes Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Eine einfache aber ausdruckstarke Sprache. Eine intuitive Programmierumgebung. Möglichst wenig Syntax. Ein Vorrat von konkreten, anschaulichen Problemen. Visualisierungsmöglichkeiten für den Programmablauf. Wünschenswertes Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Eine einfache aber ausdruckstarke Sprache. Eine intuitive Programmierumgebung. Möglichst wenig Syntax. Ein Vorrat von konkreten, anschaulichen Problemen. Visualisierungsmöglichkeiten für den Programmablauf. Wünschenswertes Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Eine einfache aber ausdruckstarke Sprache. Eine intuitive Programmierumgebung. Möglichst wenig Syntax. Ein Vorrat von konkreten, anschaulichen Problemen. Visualisierungsmöglichkeiten für den Programmablauf. Wünschenswertes Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Eine einfache aber ausdruckstarke Sprache. Eine intuitive Programmierumgebung. Möglichst wenig Syntax. Ein Vorrat von konkreten, anschaulichen Problemen. Visualisierungsmöglichkeiten für den Programmablauf. Was wird unterrichtet? Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Keine Einübung einer Sprache, nur Lückenprogramme, Anwendungsorientierung. Programmierkurs mit einer professionellen Umgebung. Programmierkurs mit einer speziell für Anfänger gedachten Umgebung. Was wird unterrichtet? Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Keine Einübung einer Sprache, nur Lückenprogramme, Anwendungsorientierung. We regard this as a mistake, because the justification for programming in schools is not its immediate applicability in real life, but in its general educational value: a sound, intuitive understanding of what it means to delegate to a machine control of ever more complex every-day processes. (Reichert, Nievergelt, Hartmann,2001) Programmierkurs mit einer professionellen Umgebung. Programmierkurs mit einer speziell für Anfänger gedachten Umgebung. Was wird unterrichtet? Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Keine Einübung einer Sprache, nur Lückenprogramme, Anwendungsorientierung. Programmierkurs mit einer professionellen Umgebung. Programmierkurs mit einer speziell für Anfänger gedachten Umgebung. Was wird unterrichtet? Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Keine Einübung einer Sprache, nur Lückenprogramme, Anwendungsorientierung. Programmierkurs mit einer professionellen Umgebung. Macht allenfalls Sinn in einem "Profikurs". Sicherlich nicht sinnvoll in Kursen für Anfänger. Programmierkurs mit einer speziell für Anfänger gedachten Umgebung. Was wird unterrichtet? Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Keine Einübung einer Sprache, nur Lückenprogramme, Anwendungsorientierung. Programmierkurs mit einer professionellen Umgebung. Programmierkurs mit einer speziell für Anfänger gedachten Umgebung. Was wird unterrichtet? Kara Gerhard Bitsch Problemstellung Anfangsunterricht Informatik Übliche Ansätze Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Keine Einübung einer Sprache, nur Lückenprogramme, Anwendungsorientierung. Programmierkurs mit einer professionellen Umgebung. Programmierkurs mit einer speziell für Anfänger gedachten Umgebung. Beispiele: LOGO, DrScheme Karas Welt Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Die Programmierumgebung Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Zustand definieren Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Übung 1 Kara Gerhard Bitsch 1 Problemstellung Kara im Anfängerunterricht Einführung von Kara Kara soll bis zum Baum laufen, dann umdrehen und weiterlaufen. Kara trifft dann von der anderen Seite kommend wieder auf den Baum und pendelt so endlos hin und her. Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java 2 Ausblick Nun soll Kara stehen bleiben, wenn er zum zweiten (dritten, vierten) Mal auf den Baum trifft. 3 Kara soll zum Baum gehen, alle Blätter aufsammeln und vor dem Baum stehen bleiben. Übung 1 Kara Gerhard Bitsch 1 Problemstellung Kara im Anfängerunterricht Einführung von Kara Kara soll bis zum Baum laufen, dann umdrehen und weiterlaufen. Kara trifft dann von der anderen Seite kommend wieder auf den Baum und pendelt so endlos hin und her. Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java 2 Ausblick Nun soll Kara stehen bleiben, wenn er zum zweiten (dritten, vierten) Mal auf den Baum trifft. 3 Kara soll zum Baum gehen, alle Blätter aufsammeln und vor dem Baum stehen bleiben. Übung 1 Kara Gerhard Bitsch 1 Problemstellung Kara im Anfängerunterricht Kara soll bis zum Baum laufen, dann umdrehen und weiterlaufen. Kara trifft dann von der anderen Seite kommend wieder auf den Baum und pendelt so endlos hin und her. Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara 2 Kara mit Java Ausblick Nun soll Kara stehen bleiben, wenn er zum zweiten (dritten, vierten) Mal auf den Baum trifft. 3 Kara soll zum Baum gehen, alle Blätter aufsammeln und vor dem Baum stehen bleiben. Weitere Übungen Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Kara hat auch eingebaute Übungen. Bearbeiten Sie die ersten Übungen bis zur Labyrinth-Aufgabe. Überlegen Sie dabei, welche Prinzipien für den Programmentwurf wichtig sind. Designprinzipien Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Welche Sensoren werden benötigt? Wie viele unterschiedliche Inputs liefern n Sensoren? Gedächtnis wird durch Zustände realisiert Möglichst wenig Sensoren und Zustände einsetzen Invarianten benutzen Testfälle mit dem Welteditor bereitstellen Designprinzipien Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Welche Sensoren werden benötigt? Wie viele unterschiedliche Inputs liefern n Sensoren? Gedächtnis wird durch Zustände realisiert Möglichst wenig Sensoren und Zustände einsetzen Invarianten benutzen Testfälle mit dem Welteditor bereitstellen Designprinzipien Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Welche Sensoren werden benötigt? Wie viele unterschiedliche Inputs liefern n Sensoren? Gedächtnis wird durch Zustände realisiert Möglichst wenig Sensoren und Zustände einsetzen Invarianten benutzen Testfälle mit dem Welteditor bereitstellen Designprinzipien Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Welche Sensoren werden benötigt? Wie viele unterschiedliche Inputs liefern n Sensoren? Gedächtnis wird durch Zustände realisiert Möglichst wenig Sensoren und Zustände einsetzen Invarianten benutzen Testfälle mit dem Welteditor bereitstellen Designprinzipien Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Welche Sensoren werden benötigt? Wie viele unterschiedliche Inputs liefern n Sensoren? Gedächtnis wird durch Zustände realisiert Möglichst wenig Sensoren und Zustände einsetzen Invarianten benutzen Testfälle mit dem Welteditor bereitstellen Designprinzipien Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Welche Sensoren werden benötigt? Wie viele unterschiedliche Inputs liefern n Sensoren? Gedächtnis wird durch Zustände realisiert Möglichst wenig Sensoren und Zustände einsetzen Invarianten benutzen Testfälle mit dem Welteditor bereitstellen Mittelschwere Aufgaben Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Die folgenden Aufgaben sind in erster Linie schwieriger, weil Sensoren simuliert werden müssen oder mehrere Zustände benötigt werden. 1 Kleeblatt-Pacman (Verfolgen einer Spur) 2 Endlosspirale (Sensor "Klee links" simulieren) 3 Mustersuche 4 Mustererkennung I 5 Mustererkennung II Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Mittelschwere Aufgaben Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Die folgenden Aufgaben sind in erster Linie schwieriger, weil Sensoren simuliert werden müssen oder mehrere Zustände benötigt werden. 1 Kleeblatt-Pacman (Verfolgen einer Spur) 2 Endlosspirale (Sensor "Klee links" simulieren) 3 Mustersuche 4 Mustererkennung I 5 Mustererkennung II Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Mittelschwere Aufgaben Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Die folgenden Aufgaben sind in erster Linie schwieriger, weil Sensoren simuliert werden müssen oder mehrere Zustände benötigt werden. 1 Kleeblatt-Pacman (Verfolgen einer Spur) 2 Endlosspirale (Sensor "Klee links" simulieren) 3 Mustersuche 4 Mustererkennung I 5 Mustererkennung II Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Mittelschwere Aufgaben Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Die folgenden Aufgaben sind in erster Linie schwieriger, weil Sensoren simuliert werden müssen oder mehrere Zustände benötigt werden. 1 Kleeblatt-Pacman (Verfolgen einer Spur) 2 Endlosspirale (Sensor "Klee links" simulieren) 3 Mustersuche 4 Mustererkennung I 5 Mustererkennung II Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Mittelschwere Aufgaben Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Die folgenden Aufgaben sind in erster Linie schwieriger, weil Sensoren simuliert werden müssen oder mehrere Zustände benötigt werden. 1 Kleeblatt-Pacman (Verfolgen einer Spur) 2 Endlosspirale (Sensor "Klee links" simulieren) 3 Mustersuche 4 Mustererkennung I 5 Mustererkennung II Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Schwierige Aufgaben Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Die folgenden Aufgaben zeigen, dass man mit Kara durchaus auch recht komplexe Aufgabenstellungen bearbeiten kann. Man sollte Aufgaben dieser Art unbedingt behandeln, um die Behauptung plausibel zu machen, dass Kara mit einer unbeschränkten Welt prinzipiell jede mögliche Berechnung durchführen kann. 1 Binäres Pascal-Dreieck 2 Bubblesort Schwierige Aufgaben Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht Einführung von Kara Einfache Übungen Wie sollte man Kara-Programme entwerfen? Komplexere Aufgaben TuringMaschinen mit Kara Kara mit Java Ausblick Die folgenden Aufgaben zeigen, dass man mit Kara durchaus auch recht komplexe Aufgabenstellungen bearbeiten kann. Man sollte Aufgaben dieser Art unbedingt behandeln, um die Behauptung plausibel zu machen, dass Kara mit einer unbeschränkten Welt prinzipiell jede mögliche Berechnung durchführen kann. 1 Binäres Pascal-Dreieck 2 Bubblesort Kara als Turing-Maschine Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Mit folgenden Einschränkungen wird Kara zu einer einfachen Turing-Maschine. Die Welt besteht aus einem (unbeschränkten) Band. Es gibt weder Bäume noch Pilze. Kara hat nur den Sensor für Kleeblätter. Kara kann in jedem Schritt nur ein Kleeblatt aufnehmen bzw. ablegen. Kara muss in jedem Schritt entweder genau ein Feld nach links oder nach rechts gehen. Eine zusammenhängende Folge von n Blättern stellt die Zahl n ∈ N dar. Kara als Turing-Maschine Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Mit folgenden Einschränkungen wird Kara zu einer einfachen Turing-Maschine. Die Welt besteht aus einem (unbeschränkten) Band. Es gibt weder Bäume noch Pilze. Kara hat nur den Sensor für Kleeblätter. Kara kann in jedem Schritt nur ein Kleeblatt aufnehmen bzw. ablegen. Kara muss in jedem Schritt entweder genau ein Feld nach links oder nach rechts gehen. Eine zusammenhängende Folge von n Blättern stellt die Zahl n ∈ N dar. Kara als Turing-Maschine Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Mit folgenden Einschränkungen wird Kara zu einer einfachen Turing-Maschine. Die Welt besteht aus einem (unbeschränkten) Band. Es gibt weder Bäume noch Pilze. Kara hat nur den Sensor für Kleeblätter. Kara kann in jedem Schritt nur ein Kleeblatt aufnehmen bzw. ablegen. Kara muss in jedem Schritt entweder genau ein Feld nach links oder nach rechts gehen. Eine zusammenhängende Folge von n Blättern stellt die Zahl n ∈ N dar. Kara als Turing-Maschine Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Mit folgenden Einschränkungen wird Kara zu einer einfachen Turing-Maschine. Die Welt besteht aus einem (unbeschränkten) Band. Es gibt weder Bäume noch Pilze. Kara hat nur den Sensor für Kleeblätter. Kara kann in jedem Schritt nur ein Kleeblatt aufnehmen bzw. ablegen. Kara muss in jedem Schritt entweder genau ein Feld nach links oder nach rechts gehen. Eine zusammenhängende Folge von n Blättern stellt die Zahl n ∈ N dar. Kara als Turing-Maschine Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Mit folgenden Einschränkungen wird Kara zu einer einfachen Turing-Maschine. Die Welt besteht aus einem (unbeschränkten) Band. Es gibt weder Bäume noch Pilze. Kara hat nur den Sensor für Kleeblätter. Kara kann in jedem Schritt nur ein Kleeblatt aufnehmen bzw. ablegen. Kara muss in jedem Schritt entweder genau ein Feld nach links oder nach rechts gehen. Eine zusammenhängende Folge von n Blättern stellt die Zahl n ∈ N dar. Kara als Turing-Maschine Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Mit folgenden Einschränkungen wird Kara zu einer einfachen Turing-Maschine. Die Welt besteht aus einem (unbeschränkten) Band. Es gibt weder Bäume noch Pilze. Kara hat nur den Sensor für Kleeblätter. Kara kann in jedem Schritt nur ein Kleeblatt aufnehmen bzw. ablegen. Kara muss in jedem Schritt entweder genau ein Feld nach links oder nach rechts gehen. Eine zusammenhängende Folge von n Blättern stellt die Zahl n ∈ N dar. Turing-Addition Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara soll die Zahlen auf dem Band "addieren". Dabei dürfen beliebig viele Zahlen – jeweils durch genau ein Leerfeld getrennt – auf dem Band stehen. Kara mit Java Ausblick Das obige Band sollte etwa folgendes Resultat liefern: Maschinentabellen Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Die einzelnen Zustände einer Turing-Maschine werden mit den Zahlen 1, 2, 3, . . . , n bezeichnet. Die 0 steht für den Haltezustand. Turing-Maschinen kann man durch Maschinentabellen beschreiben. Ein einfaches Beispiel einer Maschinentabelle: Z0 1 1 B0 0 1 B1 1 1 L/R R R Z1 1 0 Maschinentabellen Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Die einzelnen Zustände einer Turing-Maschine werden mit den Zahlen 1, 2, 3, . . . , n bezeichnet. Die 0 steht für den Haltezustand. Turing-Maschinen kann man durch Maschinentabellen beschreiben. Ein einfaches Beispiel einer Maschinentabelle: Z0 1 1 B0 0 1 B1 1 1 L/R R R Z1 1 0 Die zugehörige Maschine wird nie anhalten, sonder fortlaufend nach Rechts gehend Einsen schreiben. Wie viele Einsen kann eine haltende TM mit n Zuständen höchstens auf ein leeres Band schreiben? Weitere Beispiele Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Analysieren Sie die folgenden Turing-Maschinen für den Fall, dass sie mit einem leeren Band gestartet werden. Z0 1 BB2 : 1 2 2 B0 0 1 0 1 B1 1 1 1 1 L/R R L L L Z1 2 2 1 0 Z0 1 1 BB3 : 2 2 3 3 B0 0 1 0 1 0 1 B1 1 1 1 1 1 0 L/R R L R R L L Z1 2 3 3 0 1 2 Lösungen Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick BB2 Diese Maschine schreibt auf das leere Band vier Einsen nebeneinander und bleibt über der am weitesten links stehenden Eins nach 6 Schritten stehen. BB3 Diese Maschine schreibt auf das leere Band sechs Einsen nebeneinander und bleibt über der dritten Eins von links nach 11 Schritten stehen. Lösungen Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick BB2 Diese Maschine schreibt auf das leere Band vier Einsen nebeneinander und bleibt über der am weitesten links stehenden Eins nach 6 Schritten stehen. BB3 Diese Maschine schreibt auf das leere Band sechs Einsen nebeneinander und bleibt über der dritten Eins von links nach 11 Schritten stehen. Rado’s Σ-Funktion Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Tibor Rado hat 1962 die folgende Funktion Σ : N 7→ N definiert: Definition Σ(n) ist die maximale Anzahl von Einsen, die eine haltende Turingmaschine mit n Zuständen und dem Bandalphabet {0, 1} beim Start mit einem leeren Band schreiben kann. Rado’s Σ-Funktion Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Tibor Rado hat 1962 die folgende Funktion Σ : N 7→ N definiert: Definition Σ(n) ist die maximale Anzahl von Einsen, die eine haltende Turingmaschine mit n Zuständen und dem Bandalphabet {0, 1} beim Start mit einem leeren Band schreiben kann. Fleißige Biber Kara mit Java Ausblick Damit ist in der Tat eine Funktion im mathematischen Sinn definiert, denn die Anzahl der Turingmaschinen mit n Zuständen ist endlich, insbesondere auch die Anzahl der haltenden Turingmaschinen mit n Zuständen. Das in der Definition angesprochene Maximum existiert daher. Eine TM mit n Zuständen, die Σ(n) Einsen schreibt, nennt man einen fleißigen Bieber Beispiele Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Sowohl bei BB2 als auch bei BB3 handelt es sich um fleißige Bieber. Es gilt Σ(2) = 4 und Σ(3) = 6 Die folgende Turingmaschine BB4 ist ebenfalls ein fleißiger Biber: Z0 1 1 2 2 3 3 4 4 B0 0 1 0 1 0 1 0 1 B1 1 0 1 1 1 1 1 0 L/R L L R L L L R R Z1 2 3 1 1 0 4 4 2 Verkettung von Turing-Maschinen Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Man kann zwei Turing-Maschinen T1 und T2 verketten, so dass sie hintereinander ausgeführt werden: Sei T1 eine Maschine mit n Zuständen. Man benennt man die Zustände von T2 um, indem man zu jeder Zustandsnummer n addiert. Fleißige Biber Kara mit Java Ausblick In der der Tabelle von T1 ersetzt man den Zustand 0 in der fünften Spalte durch n + 1. Dann hängt man die neue Tabelle von T2 an die neue Tabelle von T1 an. Die dadurch definierte neue Maschine nennt man T1 ◦ T2 (T2 nach T1 ). Σ ist streng monoton wachsend Kara Gerhard Bitsch Satz Σ wächst streng monoton. Problemstellung Kara im Anfängerunterricht Beweis. TuringMaschinen mit Kara Man definiert eine Turingmaschine T+1 durch: Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Z0 1 1 B0 0 1 B1 1 1 L/R L L Z1 0 1 T+1 läuft nach links bis zur ersten Null, schreibt dort eine Eins, geht nach links und bleibt stehen. Sei nun TΣn ein fleißiger Bieber mit n Zuständen. TΣn ◦ T+1 hat n + 1 Zustände und schreibt eine Eins mehr als TΣn . Damit gilt: Σ(n) < Σ(n + 1). Σ ist streng monoton wachsend Kara Gerhard Bitsch Satz Σ wächst streng monoton. Problemstellung Kara im Anfängerunterricht Beweis. TuringMaschinen mit Kara Man definiert eine Turingmaschine T+1 durch: Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Z0 1 1 B0 0 1 B1 1 1 L/R L L Z1 0 1 T+1 läuft nach links bis zur ersten Null, schreibt dort eine Eins, geht nach links und bleibt stehen. Sei nun TΣn ein fleißiger Bieber mit n Zuständen. TΣn ◦ T+1 hat n + 1 Zustände und schreibt eine Eins mehr als TΣn . Damit gilt: Σ(n) < Σ(n + 1). Die Maschinen B4 und B40 Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Man kann aus BB4 zwei Maschinen konstruieren, die jeweils 12 aufeinander folgende Einsen schreiben: B4 : Man ersetzt in BB4 die Zeile 3, 0, 1, L, 0 durch 3, 0, 0, L, 0. Die so erhaltene Maschine B4 schreibt 12 aufeinanderfolgende Einsen aufs Band (2 davon rechts vom Startfeld) und bleibt auf dem dritten leeren Feld links von diesen Einsen stehen. B40 : Man ersetzt in BB4 die Zeile 3, 0, 1, L, 0 durch 3, 0, 0, R, 0. Die so erhaltene Maschine B40 schreibt 12 aufeinanderfolgende Einsen aufs Band (2 davon rechts vom Startfeld) und bleibt auf dem ersten leeren Feld links von diesen Einsen stehen. Die Maschinen B4 und B40 Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Man kann aus BB4 zwei Maschinen konstruieren, die jeweils 12 aufeinander folgende Einsen schreiben: B4 : Man ersetzt in BB4 die Zeile 3, 0, 1, L, 0 durch 3, 0, 0, L, 0. Die so erhaltene Maschine B4 schreibt 12 aufeinanderfolgende Einsen aufs Band (2 davon rechts vom Startfeld) und bleibt auf dem dritten leeren Feld links von diesen Einsen stehen. B40 : Man ersetzt in BB4 die Zeile 3, 0, 1, L, 0 durch 3, 0, 0, R, 0. Die so erhaltene Maschine B40 schreibt 12 aufeinanderfolgende Einsen aufs Band (2 davon rechts vom Startfeld) und bleibt auf dem ersten leeren Feld links von diesen Einsen stehen. Die Maschine T12n Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick B4 ◦ B4 erzeugt 24 aufeinander folgende Einsen und hält drei Felder links von der ersten Eins. Dies lässt sich beliebig oft wiederholen. Die Maschine T12n Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick B4 ◦ B4 erzeugt 24 aufeinander folgende Einsen und hält drei Felder links von der ersten Eins. Dies lässt sich beliebig oft wiederholen. B4 ◦ B40 erzeugt 24 aufeinander folgende Einsen und hält auf dem Feld links von der ersten Eins. Die Maschine T12n Kara Gerhard Bitsch Kara im Anfängerunterricht B4 ◦ B4 erzeugt 24 aufeinander folgende Einsen und hält drei Felder links von der ersten Eins. Dies lässt sich beliebig oft wiederholen. TuringMaschinen mit Kara B4 ◦ B40 erzeugt 24 aufeinander folgende Einsen und hält auf dem Feld links von der ersten Eins. Problemstellung Einfache Turing-Programme Fleißige Biber Für jedes n > 2 definiert man: Kara mit Java Ausblick T12n = B4 ◦ · · · ◦ B4 ◦B40 | {z } n−1 Diese Maschine hat 4n Zustände, schreibt 12n aufeinander folgende Einsen auf das Band und hält auf dem Feld links von der ersten Eins. Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Satz Es gibt keine Turingmaschine TΣ , die Σ(n) für alle n ∈ N berechnet. Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ(12n0 ) > Σ(4n0 + k) ≥ Σ(12n0 ). Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ(12n0 ) > Σ(4n0 + k) ≥ Σ(12n0 ). Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ(12n0 ) > Σ(4n0 + k) ≥ Σ(12n0 ). Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ(12n0 ) > Σ(4n0 + k) ≥ Σ(12n0 ). Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ(12n0 ) > Σ(4n0 + k) ≥ Σ(12n0 ). Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ(12n0 ) > Σ(4n0 + k) ≥ Σ(12n0 ). Σ ist nicht berechenbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Beweis. Angenommen, eine solche Maschine TΣ existiere. Die Anzahl ihrer Zustände sei k. Sei Dn = T12n ◦ TΣ . Dn hat 4n + k Zustände und schreibt Σ(12n) auf das Band. Daher gilt: Σ(4n + k) ≥ Σ(12n) für n ≥ 1. Für n0 > k 8 gilt 12n0 > 4n0 + k Aus der Monotonie von Σ folgt: Σ(12n0 ) > Σ(4n0 + k). Aus beiden Ungleichungen folgt der Widerspruch: Σ(12n0 ) > Σ(4n0 + k) ≥ Σ(12n0 ). Das Halteproblem ist nicht entscheidbar Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Gibt es eine berechenbare Funktion, die für jede Turingmaschine und jede Anfangsbeschriftung des Bandes entscheidet, ob diese Maschine mit diesem Band anhält? Plausibilitätsbetrachtungen Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Einfache Turing-Programme Fleißige Biber Kara mit Java Ausblick Es gibt (4 · (n + 1))2n Turingmaschinen mit n Zuständen. Zustände 2 3 4 5 6 10 Mögliche Maschinen 20736 1,68 · 107 2,56 · 1010 6,34 · 1013 2,32 · 1017 7,40 · 1032 Σ(3) = 6 (1963, Lin und Rado) Σ(4) = 13 (1975, Brady) Σ(5) ≥ 4098 (1989, Marxen und Buntrock) Σ(6) ≥ 4,6 · 101439 (2007, T. und S. Ligocki) JavaKara Programmierumgebung Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Die JavaKara-Umgebung Einfache Java-Programme Ausblick Methoden Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Methoden für Kara haben das Präfix kara. move() turnRight() putLeaf() turnLeft() removeLeaf() treeFront() mushroomFront() treeLeft() onLeaf() treeRight() Die JavaKara-Umgebung Einfache Java-Programme Ausblick Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Die JavaKara-Umgebung Einfache Java-Programme Ausblick Einbettung in eclipse Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Die JavaKara-Umgebung Einfache Java-Programme Ausblick import javakara.JavaKaraProgram; public class sucheBaum1 extends JavaKaraProgram { public void myMainProgram() { action();} private void action(){ if (kara.onLeaf()){ kara.removeLeaf();} else{ kara.putLeaf(); } if (!kara.treeFront()){ kara.move(); action();}} public static void main(String[] args) { JavaKaraProgram program = new sucheBaum1(); program.run("C:/KARA/jkara01.world"); }} Literatur Kara Gerhard Bitsch Problemstellung Kara im Anfängerunterricht TuringMaschinen mit Kara Kara mit Java Ausblick Kara: R. Reichert, J. Nievergelt, W. Hartmann: Programmieren mit Kara, 2004, Springer, Berlin. http://www.swisseduc.ch/informatik/karatojava/kara/ Busy Beaver: W. Brauer: Grenzen maschineller Berechenbarkeit, Informatik-Spektrum 13 (1990), S. 61-70 http://en.wikipedia.org/wiki/Busy_beaver * http://drb9.drb.insel.de/ heiner/BB/ http://grail.cba.csuohio.edu/∼somos/bb.html http://users.informatik.hawhamburg.de/∼voeller/th/thinf/node16.html http://www.logique.jussieu.fr/∼michel/ha.html#tm42 http://www.cs.rpi.edu/∼kelleo/busybeaver/