Übung zur Vorlesung Berechenbarkeit und Komplexität
|
|
- Marie Roth
- vor 6 Jahren
- Abrufe
Transkript
1 RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T3 Geben Sie die Gödelnummer M der unten angegebenen Turingmaschine an. M = ({q 1,q 2,q 3,{0,1,{0,1,B,B,q 1,q 3,δ) δ 0 1 B q 1 (q 1,0,R) (q 1,1,R) (q 2,0,L) q 2 (q 2,0,L) (q 2,1,L) (q 3,B,R) Nutzen Sie dabei die Definition der Gödelnummer aus der Vorlesung. Wir kodieren Zustand q i als 0 i. Zusätzlich nummerieren wir sowohl das Alphabet durch indem wir X 1 = 0, X 2 = 1 und X 3 = B setzen, als auch die möglichen Kopfbewegungen indem wir D 1 = L, D 2 = N und D 3 = R setzen. Die Gödelnummer ist dann: Aufgabe T4 Wiederholen Sie kurz das Konzept der universellen Turingmaschine. Es sei U die universelle Turingmaschine. Wie arbeitet U auf der Eingabe U U U M w? Dabei sind M eine beliebige Turingmaschine und w ein beliebiges Eingabewort. Da die universelle Turingmaschine alle Turingmaschinen simulieren kann, kann sie sich natürlich auch selbst simulieren. Daher wird U mehrfach geschachtelt simuliert, und der innerste Aufruf simuliert M auf Eingabe w. Das Ergebnis der Berechnung wird dann nach außen weitergereicht.
2 Aufgabe T5 Sind die folgenden Sprachen rekursiv? Begründen Sie Ihre Antwort. a) L 100 = { M M hält auf der leeren Eingabe in höchstens 100 Schritten. b) L 100 = { M M besucht höchstens 100 Bandplätze auf der leeren Eingabe. a) Die Sprache ist rekursiv. Nach 100 Schritten kann M höchstens 100 Bandplätze gelesen haben. Also können wir eine TM M 100 bauen, die L 100 entscheidet. M 100 simuliert M auf der leeren Eingabe, und prüft ob Ml nach höchstens 100 Schritten hält. b) Die Sprache ist rekursiv. Es können offensichtlich nur endlich viele Konfigurationen durchlaufen werden die kein Endzustand sind und nur 100 Bandplätze nutzen ( Γ 100 ( Q 1) 100). Es werden Γ 100 ( Q 1) 100 viele Schritte von M auf der leeren Eingabe simuliert, wobei jede Zwischenkonfiguration gespeichert werden kann. Es können folgende Fälle auftreten Es werden mehr als 100 Plätze besucht, wir können also verwerfen. Eine Konfiguration wird zum zweiten mal besucht, folglich laufen wir in eine Endlosschleife. Da bis jetzt nicht mehr als 100 Plätze besucht wurden, werden auch beim nächsten mal nicht mehr besucht, daher können wir akzeptieren. Wurde nach Γ 100 ( Q 1) 100 Schritten weder eine Konfiguration zweimal besucht, noch gehalten, muss M mehr als 100 Bandplätze besucht haben, wir können also verwerfen. Aufgabe H3 (15 Punkte) Es ist sehr nützlich über einen Turingmaschinensimulator zu verfügen, wenn man Turingmaschinen entwirft. Ziel dieser Aufgabe ist es, einen solchen Simulator zu implementieren. Wir wollen genau solche Turingmaschinen simulieren, wie sie in der Vorlesung definiert wurden. Der Simulator soll als Eingabe einen Dateinamen einer Datei erhalten, welche einebeschreibungderzusimulierendenturingmaschinem = {Q,Σ,Γ,B,q 0, q,δenthält, und ein Eingabewort w Σ. Der Simulator soll dann M auf der Eingabe w simulieren und alle durchlaufenen Konfiguration in jeweils einer Zeile ausgeben. Die Beschreibung einer Turingmaschine in einer Datei ist dabei folgendermaßen aufgebaut: 1. Die erste Zeile enthält die Anzahl der Zustände n, wobei wir Q = {q 1,q 2,...,q n vorraussetzen. 2. Die zweite Zeile enthält alle Zeichen aus Σ. 3. Die dritte Zeile enthält alle Zeichen aus Γ. 4. Die vierte Zeile enthält die Nummer i des Anfangszustands q i = q Die fünfte Zeile enthält die Nummer j des Endzustands q j = q.
3 6. DiefolgendenZeilenenthaltenjeeinenÜbergangδ: (q,a) (q,b,d)derübergangsfunktion δ, wobei q,a,q,b und D in dieser Reihenfolge durch jeweils ein Leerzeichen getrennt auftreten. 7. Wir legen fest, daß das Blanksymbol B ist und nicht umdefiniert wird. Folgende Vereinbarungen vereinfachen die Implementierung und Verwendung des Simulators etwas: Sie müssen nicht überprüfen, ob die Beschreibung und das Eingabewort syntaktisch und semantisch korrekt sind. Füttert man den Simulator mit falschen Daten, dann darf etwas beliebiges passieren. Der Simulator muß daher auch nicht alle Zeilen der Eingabe berücksichtigen. Es ist beispielsweise erlaubt, die Zeilen mit Σ und Γ zu ignorieren und nur die Beschreibung von δ zu verwenden. Es ist auch erlaubt, daß δ nicht vollständig angegeben wird und einige Übergänge fehlen. Das macht zum Beispiel dann Sinn, wenn Sie wissen, daß diese Übergänge sowieso nie verwendet werden. So läßt sich viel Schreibarbeit einsparen. Sie müssen Ihr Programm nicht hocheffizient optimieren, aber es sollte auch nicht zu langsam sein. Längere Simulationen sollten mit nur kurzer Wartezeit durchgeführt werden können. Verwenden Sie eine vernünftige Programmiersprache, die halbwegs bekannt ist und deren Programme von den Tutoren verstanden werden (Java, C, C++, usw. sind alle sehr dafür geeignet. Javascript wäre wohl keine gute Idee). Zum Schluß läßt sich das gewünschte Verhalten am besten an einem kleinen Beispiel erläutern: $ head add.tm 7 01# 01#B R R 1 # 1 # R 1 B 2 B L N $./tm add.tm 10#1 [1]10#1 B1[1]0#1 B10[1]#1 B10#[1]1 B10#1[1] B10#[2]1B B10#[3]0B B10[3]#0B B1[4]0#0B B1[1]1#0B B11[1]#0B B11#[1]0B B11#0[1]B B11#[2]0B B11[2]#1B B11#[5]1B B11#B[5]B B11#[5]BB B11[5]#BB B1[6]1BBB B[6]11BBB [6]B11BBB BB[7]11BBB $ Testen Sie Ihren Simulator an verschiedenen kleinen Turingmaschinen. Erläutern Sie kurz, wie Ihr Simulator funktioniert und geben Sie Protokolle kleiner Beispielläufe und den Quelltext mit ab. Hier ist ein nicht besonders effizientes Programm in der Sprache D, welche das Gewünschte leistet:
4 import std.stdio; import std.file; import std.format; import std.stream; class TM { private int n;// number of states private string sigma, gamma;// input and tape alphabets private int q0,qbar;// initial and final state struct ta {int state;char c;char dir; private ta delta[int][char]; private int q;// state we are in privatestringleft,right;// left and right tape content // Have we reached the final state yet? bool blocked() {return q qbar; // Start simulation on word w void start(string w) { q = q0; left = ""; right = w; // Simulate one step void step() { if(blocked()) return; if(right.length 0) right = "B"; if(left.length 0) left = "B"; int nextstate = delta[q][right[0]].state; char symbol written = delta[q][right[0]].c; char dir = delta[q][right[0]].dir; q = nextstate; right = symbol written right[1..$]; if(dir L ) {right = left[$ 1] right;left = left[0..$ 1]; else if(dir R ) {left = right[0];right = right[1..$]; else assert(dir N ); // String representation of current configuration string configuration() { return left [ std.conv.to!string(q) ] right; // Initialize from a description in a file this(string filename) { assert(filename.isfile()); Stream file = new BufferedFile(filename); char line[ ] = file.readline();// read n formattedread(line,"%d",&n); line = file.readline();// read Sigma line = file.readline();// read Gamma line = file.readline();// read q0 formattedread(line,"%d",&q0); line = file.readline();// read qbar formattedread(line,"%d",&qbar); while(!file.eof) { line = file.readline(); int p,q; char char read, char write, dir; formattedread(line,"%d %c %d %c %c", &p,&char read,&q,&char write,&dir); delta[p][char read] = ta(q, char write, dir); assert(dir L dir R dir N ); void main(string args[ ]) { assert(args.length 3,"Usage: tm M w"); TM M = new TM(args[1]); M.start(args[2]); while(!m.blocked()) { writeln(m.configuration()); M.step(); writeln(m.configuration()); Aufgabe H4 (8 Punkte) Entwerfen Sie eine Turingmaschine, welche zwei durch # getrennte, binärkodierte Zahlen entgegennimmt und als Ausgabe ihre binärkodierte Summe präsentiert. Führen Sie mehrere Simulationen dieser Turingmaschine mithilfe des Simulators aus Aufgabe H3 an aussagekräftigen Beispieleingaben durch. Eine Möglichkeit, die Addition durchzuführen, ist folgende: Es werden abwechselnd die rechte Zahl um eins verringert und die linke um eins erhöht. Das ganze endet, wenn die rechte Zahl 0 war. Dann wird alles bis auf die linke Zahl gelöscht und der Kopf auf das erste Zeichen der linken Zahl gesetzt:
5 7 01# 01#B R scan right to # R 1 # 1 # R 1 B 2 B L goto rightmost digit of second word N subtract one and goto state L 2 # 5 # R if this happens the number was already L scan to rightmost digit of first word L 3 # 4 # L N add one to first word and goto L 4 B 1 1 N B R delete second word 5 B 5 B L 5 # 6 B L L return to first word and stop L 6 B 7 B R Zwei typische Simulation mit dieser Turingmaschine erzeugen folgende Ausgabe: $./tm add.tm 0#0 [1]0#0 B0[1]#0 B0#[1]0 B0#0[1] B0#[2]0B B0[2]#1B B0#[5]1B B0#B[5]B B0#[5]BB B0[5]#BB B[6]0BBB [6]B0BBB BB[7]0BBB $./tm add.tm 101#11 [1]101#11 B1[1]01#11 B10[1]1#11 B101[1]#11 B101#[1]11 B101#1[1]1 B101#11[1] B101#1[2]1B B101#1[3]0B B101#[3]10B B101[3]#10B B10[4]1#10B B1[4]00#10B B1[1]10#10B B11[1]0#10B B110[1]#10B B110#[1]10B B110#1[1]0B B110#10[1]B B110#1[2]0B B110#[2]11B B110#[3]01B B110[3]#01B B11[4]0#01B B11[1]1#01B B111[1]#01B B111#[1]01B B111#0[1]1B B111#01[1]B B111#0[2]1B B111#0[3]0B B111#[3]00B B111[3]#00B B11[4]1#00B B1[4]10#00B B[4]100#00B [4]B000#00B B[1]1000#00B B1[1]000#00B B10[1]00#00B B100[1]0#00B B1000[1]#00B B1000#[1]00B B1000#0[1]0B B1000#00[1]B B1000#0[2]0B B1000#[2]01B B1000[2]#11B B1000#[5]11B B1000#B[5]1B B1000#BB[5]B B1000#B[5]BB B1000#[5]BBB B1000[5]#BBB B100[6]0BBBB B10[6]00BBBB B1[6]000BBBB B[6]1000BBBB [6]B1000BBBB BB[7]1000BBBB $ Natürlich addiert eine solche Turingmaschine relativ langsam, wenn es sich um sehr große Zahlen handelt: $ time./tm add.tm # tail -1 BB[7] BBBBBBBBBBBBBBBBB
6 real 0m0.451s user 0m0.444s sys 0m0.028s $
Turing Maschinen II Wiederholung
Organisatorisches VL-03: Turing Maschinen II (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger Nächste Vorlesung: Mittwoch, Oktober 25, 14:15 15:45 Uhr, Roter Hörsaal Webseite: http://algo.rwth-aachen.de/lehre/ws1718/buk.php
VL-03: Turing Maschinen II. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger
VL-03: Turing Maschinen II (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger WS 2017, RWTH BuK/WS 2017 VL-03: Turing Maschinen II 1/27 Organisatorisches Nächste Vorlesung: Mittwoch, Oktober
Mehrband-Turingmaschinen und die universelle Turingmaschine
Mehrband-Turingmaschinen und die universelle Turingmaschine Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 15 Turingmaschinen mit mehreren Bändern k-band
Übung zur Vorlesung Programmierung
RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 2 4.11.2013 Übung zur Vorlesung Programmierung Aufgabe T4 Wir wollen die Klasse Liste aus der
Präsenzübung Berechenbarkeit und Komplexität
Lehrstuhl für Informatik 1 WS 2013/14 Prof. Dr. Berthold Vöcking 28.01.2014 Kamal Al-Bawani Benjamin Ries Präsenzübung Berechenbarkeit und Komplexität Musterlösung Name:...................................
ALP I Turing-Maschine
ALP I Turing-Maschine Teil I SS 2011 Äquivalenz vieler Berechnungsmodelle Alonzo Church λ-kalkül Kombinatorische Logik Alan Turing Turing-Maschine Mathematische Präzisierung Effektiv Berechenbare Funktionen
Berechenbarkeit und Komplexität Vorlesung 3
Berechenbarkeit und Komplexität Vorlesung 3 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 22. November 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 22.
Semi-Entscheidbarkeit und rekursive Aufzählbarkeit
Semi-Entscheidbarkeit und rekursive Aufzählbarkeit Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 9. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung
Probeklausur zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Probeklausur 25.01.2013 Probeklausur zur Vorlesung Berechenbarkeit und Komplexität Aufgabe 1 (1+2+6+3 Punkte)
Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung
Informatik III Christian Schindelhauer Wintersemester 2006/07 13. Vorlesung 07.12.2006 1 Überblick: Die Church- Turing-These Turing-Maschinen 1-Band Turing-Maschine Mehrband-Turing-Maschinen Nichtdeterministische
Übung zur Vorlesung Programmierung
RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 013/14 Übungsblatt 4 18.11.013 Übung zur Vorlesung Programmierung Aufgabe T8 Ein Stack ist eine Datenstruktur, die
Berechenbarkeit und Komplexität Vorlesung 10
Berechenbarkeit und Komplexität Vorlesung 10 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 27. November 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 27.
Rekursiv aufzählbare Sprachen
Kapitel 4 Rekursiv aufzählbare Sprachen 4.1 Grammatiken und die Chomsky-Hierarchie Durch Zulassung komplexer Ableitungsregeln können mit Grammatiken größere Klassen als die kontextfreien Sprachen beschrieben
Berechenbarkeit und Komplexität: Erläuterungen zur Turingmaschine
Berechenbarkeit und Komplexität: Erläuterungen zur Turingmaschine Prof. Dr. Berthold Vöcking Lehrstuhl Informatik Algorithmen und Komplexität 24. Oktober 26 Programmierung der TM am Beispiel Beispiel:
Unentscheidbarkeitssätze der Logik
Unentscheidbarkeitssätze der Logik Elmar Eder () Unentscheidbarkeitssätze der Logik 1 / 30 Die Zahlentheorie ist nicht formalisierbar Satz (Kurt Gödel) Zu jedem korrekten formalen System der Zahlentheorie
Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion
Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität 26. November 2007 Semi-Entscheidbarkeit
VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger
VL-11: LOOP und WHILE Programme I (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger WS 2017, RWTH BuK/WS 2017 VL-11: LOOP und WHILE Programme I 1/46 Organisatorisches Nächste Vorlesung: Mittwoch,
Ein formales Berechnungsmodell: Turingmaschinen. Turingmaschinen 26 / 62
Ein formales Berechnungsmodell: Turingmaschinen Turingmaschinen 26 / 62 Ein formales Rechnermodell Bisher haben wir abstrakt von Algorithmen bzw. Programmen gesprochen und uns dabei JAVA- oder C++-Programme
Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger
Organisatorisches VL-11: LOOP und WHILE Programme I (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger Nächste Vorlesung: Mittwoch, November 29, 14:15 15:45 Uhr, Roter Hörsaal Webseite: http://algo.rwth-aachen.de/lehre/ws1718/buk.php
Theoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik 0 KIT 17.05.2010 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik nationales Forschungszentrum Vorlesung in am
Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
Einführung in die Theoretische Informatik
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2011 Lösungsblatt 8 18. Juli 2011 Einführung in die Theoretische Informatik
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende
Berechenbarkeit und Komplexität: Probleme, Sprachen, Maschinen
Berechenbarkeit und Komplexität: Probleme, Sprachen, Maschinen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität 25. Oktober 2006 Was ist ein Problem? Informelle Umschreibung
Pascal Schärli
Informatik I - Übung 8 Pascal Schärli pascscha@student.ethz.ch 12.04.2019 1 Was gibts heute? Best-Of Vorlesung: Prefix / Infix EBNF Vorbesprechung Problem of the Week 2 Vorlesung 3. 1 Prefix Notation Infix
Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte
Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte while-statement erneut ausgeführt. Ist die Bedingung
Rekursive Aufzählbarkeit Die Reduktion
Rekursive Aufzählbarkeit Die Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen November 2011 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit
Auffrischung Einige (wenige) Grundlagen der Theoretischen Informatik
Logik, Berechenbarkeit und Komplexität Sommersemester 2008 Fachhochschule Wiesbaden Prof. Dr. Steffen Reith Auffrischung Einige (wenige) Grundlagen der Theoretischen Informatik 1 Turingmaschinen - Ein
Berechenbarkeit und Komplexität Vorlesung 2
Berechenbarkeit und Komplexität Vorlesung 2 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 17. Oktober 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 17.
7. Übungsblatt zu Theoretische Grundlagen der Informatik im WS 2015/16
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders L. Hübschle-Schneider, T. Maier 7. Übungsblatt zu Theoretische Grundlagen der Informatik im WS 2015/16 http://algo2.iti.kit.edu/tgi2015.php
Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p.
Thorsten Timmer SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke Turing Maschine SS 2005 p. 1/35 Inhalt Einführung Formale Definition Berechenbare Sprachen und Funktionen Berechnung ganzzahliger
Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache
Software Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
Übung zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein
Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion
Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität 7. Dezember 2006 Rekursiv vs. rekursiv
Klassenvariablen, Klassenmethoden
Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben
Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Alexander Lochmann, Iman Kamehkhosh, Marcel Preuß, Dominic Siedhoff Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Lexikalische Programmanalyse der Scanner
Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung
Turingmaschinen Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen
Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: und effiziente Algorithmen Wintersemester 2011/12 Schematische Darstellung einer Turing-Maschine: Kopf kann sich nach links und
2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen
Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen
Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)
Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya
Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben
Dieses Dokument soll mehr dazu dienen, Beispiele für die formal korrekt mathematische Bearbeitung von Aufgaben zu liefern, als konkrete Hinweise auf typische Klausuraufgaben zu liefern. Die hier gezeigten
2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Mächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 23 Turingmaschine (TM) M = (Q, Σ, Γ, B, q 0, q, δ) Unendliches Band... 0 c
2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
1.5 Turing-Berechenbarkeit
A.M. Turing (1937): Maschinenmodell zur exakten Beschreibung des Begriffs effektiv berechenbar Stift Mensch a c b b Rechenblatt a b b c Lese-/Schreibkopf endliche Kontrolle Turingmaschine Eine Turingmaschine
Einstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung
Theoretische Informatik und Logik Übungsblatt 1 (2016S) Lösung
Theoretische Informatik und Logik Übungsblatt (26S) en Aufgabe. Sei L = {w#w r w {, } }. Geben Sie eine deterministische Turingmaschine M an, welche die Sprache L akzeptiert. Wählen Sie mindestens einen
Unentscheidbarkeit des Halteproblems: Unterprogrammtechnik
Unentscheidbarkeit des Halteproblems: Unterprogrammtechnik Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen Oktober 2011 Berthold Vöcking, Informatik 1 () Vorlesung
Theoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 18. Januar 2018 INSTITUT FÜR THEORETISCHE 0 18.01.2018 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität
11. Übungsblatt. x y(top(push(x, y)) = y)
Logik, Berechenbarkeit und Komplexität Sommersemester 2012 Hochschule RheinMain Prof. Dr. Steffen Reith 11. Übungsblatt 1. Ein Keller (engl. stack) ist eine bekannte Datenstruktur. Sei die Signatur S =
ALP I Turing-Maschine
ALP I Turing-Maschine Teil I WS 2012/2013 Äquivalenz vieler Berechnungsmodelle Alonzo Church λ-kalkül Kombinatorische Logik Alan Turing Turing-Maschine Mathematische Präzisierung Effektiv Berechenbare
Interaktive Programme mit Scanner
2.X Input 191 Interaktive Programme mit Scanner 193 Input und System.in Interaktives Programm: Liest Input von der Konsole ( console ). Während das Programm ausgeführt wird fragt das Programm den Benutzer
Fragen 1. Muss eine DTM ein Wort zu Ende gelesen haben, um es zu akzeptieren? a) Ja! b) Nein!
4 Turingmaschinen Eingabeband nicht nur lesen, sondern auch schreiben kann und die zudem mit ihrem Lese-Schreib-Kopf (LSK) nach links und rechts gehen kann. Das Eingabeband ist zudem in beide Richtungen
Algorithmen mit konstantem Platzbedarf: Die Klasse REG
Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August
Praktische Informatik I WS 1999/2000
Universität Mannheim Lehrstuhl für Praktische Informatik IV Prof. Dr. W. Effelsberg Christoph Kuhmünch, Gerald Kühne Praktische Informatik I WS 999/2 Übungsblatt 2 Ausgabe: Mi, 26.. Abgabe: Di,.2., 8 Uhr
1.5 Turing-Berechenbarkeit
A.M. Turing (1937): Maschinenmodell zur exakten Beschreibung des Begriffs effektiv berechenbar Stift Mensch a c b b Rechenblatt a b b c Lese-/Schreibkopf endliche Kontrolle Turingmaschine Eine Turingmaschine
LOOP-Programme: Syntaktische Komponenten
LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=
11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n!
Mathematische Rekursion 11. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration, Lindenmayer Systeme Viele mathematische Funktionen sind sehr natürlich
12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! =
Lernziele Sie verstehen, wie eine Lösung eines rekursives Problems in Java umgesetzt werden kann. Sie wissen, wie Methoden in einem Aufrufstapel abgearbeitet werden. 12. Rekursion Mathematische Rekursion,
Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 27. Juni HA-Lösung. TA-Lösung
Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 27. Juni 2016 HA-Lösung TA-Lösung Einführung in die theoretische Informatik Aufgabenblatt 9 Beachten Sie: Soweit
15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen
453 15. Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen Mathematische Rekursion 454 Viele mathematische Funktionen sind sehr natürlich rekursiv
Übungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 10 Ausgegeben am: Abgabe bis: 13.01.2006 24.1.2006 (Theorie) 27.1.2006 (Praktisch) Thema:
Das Postsche Korrespondenzproblem
Das Postsche Korrespondenzproblem Eine Instanz des PKP ist eine Liste von Paaren aus Σ Σ : (v 1, w 1 ),..., (v n, w n ) Eine Lösung ist eine Folge i 1,..., i k von Indizes 1 i j n mit v i1... v ik = w
Übungsblatt 1. Lorenz Leutgeb. 30. März 2015
Übungsblatt Lorenz Leutgeb 30. März 205 Aufgabe. Annahmen ohne Einschränkungen: P Σ und P Γ. Per Definitionem der Reduktion: P P 2 f : Σ Γ wobei f total und berechenbar, genau so, dass: w Σ : w P f(w)
2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Halteproblem/Kodierung von Turing-Maschinen
Halteproblem/Kodierung von Turing-Maschinen Unser Ziel ist es nun zu zeigen, dass das sogenannte Halteproblem unentscheidbar ist. Halteproblem (informell) Eingabe: Turing-Maschine M mit Eingabe w. Frage:
Einführung in die Informatik I
Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing
Universelle Turingmaschinen
Universelle Turingmaschinen bisher: zum Erkennen einer rekursiven Sprache L wurde jeweils eine spezielle dtm M L angegeben jetzt: konstruieren feste dtm ( universelle Turingmaschine ), die als Eingabe
Tutoraufgabe 1 (Implementierung eines ADTs):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT
Algorithmentheorie 9. Vorlesung
Algorithmentheorie 9. Vorlesung Martin Dietzfelbinger 8. Juni 2006 Turingtafel von M: Gödelnummern TM-Codes (q 0, 0,q 2, 1,R), (q 0, 1,q 0, 0,R), (q 0,B,q 1, 1,N), (q 2, 0,q 2, 0,R), (q 2, 1,q 2, 1,R),
Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18
Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 6 Vorlesung Theoretische Grundlagen der Informatik im WS 17/18 Ausgabe 10. Januar 2018 Abgabe 23. Januar 2018, 11:00 Uhr (im
Allgemeines Halteproblem Hilberts 10. Problem
Allgemeines Halteproblem Hilberts 10. Problem Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen November 2011 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit
Grundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Turingmaschinen und rekursiv aufzählbare Sprachen (II) 2.07.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Übersicht 1. Motivation 2. Terminologie
Übung zur Vorlesung Programmierung
RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 7 09.12.2013 Übung zur Vorlesung Programmierung Aufgabe T14 In dieser Aufgabe sollen Sie die
Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht
Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante
Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich
252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung
Falls H die Eingabe verwirft, so wissen wir, dass M bei Eingabe w nicht hält. M hält im verwerfenden Haltezustand. Beweis:
1 Unentscheidbarkeit 2 Grundlagen der Theoretischen Informatik Till Mossakowski Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Wintersemester 2014/15 #include char *s="include
Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Akzeptierbarkeit und Entscheidbarkeit. Teil V.
Dank Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Bernhard Beckert Diese Vorlesungsmaterialien basieren ganz wesentlich auf den Folien zu den Vorlesungen
Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I
Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Bernhard Beckert Institut für Informatik Sommersemester 2007 B. Beckert Grundlagen d. Theoretischen Informatik:
Berechenbarkeit. Serie 4. Die Seminaraufgaben werden in den Übungen vom bis besprochen.
Universität Leipzig Institut für Informatik Sommersemester 2018 Prof. Dr. Andreas Maletti Gustav Grabolle Mirko Schulze Aufgaben zur Lehrveranstaltung Berechenbarkeit Serie 4 Hinweise: Abgabeschluss für
Berechenbarkeitstheorie 14. Vorlesung
1 Berechenbarkeitstheorie Dr. Institut für Mathematische Logik und Grundlagenforschung WWU Münster WS 15/16 Alle Folien unter Creative Commons Attribution-NonCommercial 3.0 Unported Lizenz. Erinnerung
Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09
Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2008/09 23. Februar 2009 Aufgabe 1 2 3 4 5 5 5 Summe mögliche Punkte 10 15 25 20 20 15 15 120 erreichte Punkte Note: Hinweise: Diese
Mächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit
Turing-Maschinen: Ein abstrakes Maschinenmodell
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt, eine Elementaroperation ist maschinell ausführbar? Was verstehen
ALP I Turing-Maschine
ALP I Turing-Maschine Simulator WS 2012/2013 Haskell-Implementierung eines TM-Simulators module Turing (sim, start) data Move = L R S deriving (Show, Eq) type State = Int type Input = Char type Output
Wiederholung. Organisatorisches. VL-09: Das Postsche Correspondenzproblem. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger
Organisatorisches VL-09: Das Postsche Correspondenzproblem (Berechenbarkeit und Komplexität WS 2017) Gerhard Woeginger Nächste Vorlesung: Mittwoch November 22 14:15 15:45 Uhr Roter Hörsaal Webseite: http://algo.rwth-aachen.de/lehre/ws1718/buk.php
VL-02: Turing Maschinen II. (Berechenbarkeit und Komplexität, WS 2018) Gerhard Woeginger
VL-02: Turing Maschinen II (Berechenbarkeit und Komplexität, WS 2018) Gerhard Woeginger WS 2018, RWTH BuK/WS 2018 VL-02: Turing Maschinen II 1/33 Organisatorisches Nächste Vorlesung (morgen): Freitag,
Theoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik 0 KIT 07.11.2014 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik nationales Forschungszentrum Vorlesung in am
Kontextsensitive und Typ 0 Sprachen Slide 2. Die Turingmaschine
Kontextsensitive und Typ 0 Sprachen Slide 2 Die Turingmaschine DTM = Deterministische Turingmaschine NTM = Nichtdeterministische Turingmaschine TM = DTM oder NTM Intuitiv gilt: DTM = (DFA + dynamischer
Grundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Turingmaschinen und rekursiv aufzählbare Sprachen (V) 7.07.2016 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Übersicht 1. Motivation 2. Terminologie
Übung zur Vorlesung Programmierung
RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 2013/14 Übungsblatt 8 16.12.2013 Übung zur Vorlesung Programmierung Aufgabe T15 Betrachten Sie folgende Klassen:
1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie
1 Einführung 2 Typ-0- und Typ-1-Sprachen 3 Berechnungsmodelle 4 Unentscheidbarkeit 5 Unentscheidbare Probleme 6 Komplexitätstheorie 15 Ziele vgl. AFS: Berechnungsmodelle für Typ-0- und Typ-1-Sprachen (Nicht-)Abschlußeigenschaften