11. Übungsblatt. x y(top(push(x, y)) = y)

Ähnliche Dokumente
Auffrischung Einige (wenige) Grundlagen der Theoretischen Informatik

1.5 Turing-Berechenbarkeit

Turing-Maschinen: Ein abstrakes Maschinenmodell

1.5 Turing-Berechenbarkeit

ALP I Turing-Maschine

a b b a Vom DFA zur TM Formale Grundlagen der Informatik 1 Kapitel 9 Turing-Maschinen Der Lese-/Schreibkopf Bedeutung der TM

Einige Beispiele zur Turingmaschine

Berechenbarkeit. Script, Kapitel 2

Kontextsensitive und Typ 0 Sprachen Slide 2. Die Turingmaschine

Turingmaschinen Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen

Turing-Maschinen. Definition 1. Eine deterministische Turing-Maschine (kurz DTM) ist ein 6- Dem endlichen Alphabet Σ von Eingabesymbolen.

Fragen 1. Muss eine DTM ein Wort zu Ende gelesen haben, um es zu akzeptieren? a) Ja! b) Nein!

Halteproblem/Kodierung von Turing-Maschinen

Berechenbarkeit und Komplexität: Probleme, Sprachen, Maschinen

Proseminar Komplexitätstheorie P versus NP Wintersemester 2006/07. Nichtdeterministische Turingmaschinen und NP

4 Die Turing-Maschine

Einführung in die Theoretische Informatik

Die mathematische Seite

Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p.

Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 27. Juni HA-Lösung. TA-Lösung

Einführung in die Informatik Turing Machines

Einführung in die Informatik Turing Machines

1936 von Alan Turing zum theoretischen Studium der Berechenbarkeit eingeführt Besteht aus

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Theoretische Grundlagen der Informatik

Grundlagen der Theoretischen Informatik

Theoretische Informatik. Berechenbarkeit

VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Weitere universelle Berechnungsmodelle

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Einfache Turing Maschine. Formale Spezifikation einer einfachen Turing Maschine. M = (Σ,Γ,#,Q,s,F, ) Σ

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Grundlagen der Theoretischen Informatik

Das Informatik-Kochstudio Sortieren Alltagsalgorithmen Komplexe Algorithmen... 55

Typ-0-Sprachen und Turingmaschinen

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

11.3 Eindimensionale Turingmaschinen

LOOP-Programme: Syntaktische Komponenten

Theoretische Informatik 1

Unentscheidbarkeit. 1. Wann sind Sprachen unentscheidbar? 1, A 0, A } = {

ALP I Turing-Maschine

Ein formales Berechnungsmodell: Turingmaschinen. Turingmaschinen 26 / 62

Theoretische Grundlagen der Informatik. Vorlesung am 07. November INSTITUT FÜR THEORETISCHE INFORMATIK

Einführung in die Theoretische Informatik

ADS-EI 5.2 Struktur einer Turing-Maschine 120/451 ľernst W. Mayr

Rekursiv aufzählbare Sprachen

Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung

2.4 Kontextsensitive und Typ 0-Sprachen

Theoretische Informatik II

4.2 Varianten der Turingmaschine. 4 Turingmaschinen

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

4 Kontextsensitive und Typ 0 Sprachen

Algorithmentheorie 2. Vorlesung

Schreib- Lesekopf S 1

Komplexitätstheorie WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Berechenbarkeit. Script, Kapitel 2

8. Turingmaschinen und kontextsensitive Sprachen

Turing-Maschine. Berechenbarkeit und Komplexität Turing-Maschinen. Turing-Maschine. Beispiel

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}

Beispiele akzeptierender Turingmaschinen

Turingmaschinen. und eine kleine Einführung in Bereiche der theoretischen Informatik

Algorithmus. Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion.

1 Prädikatenlogik: Korrektheit, Vollständigkeit, Entscheidbarkeit

Grundbegriffe der Informatik Tutorium 13

Übungsblatt Nr. 4. Lösungsvorschlag

Heute: Was ist eigentlich das da?

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004

Theoretische Informatik und Logik Übungsblatt 1 (2016S) Lösung

Unentscheidbarkeit von Problemen mittels Turingmaschinen

Universelle Turingmaschinen

Berechenbarkeit und Komplexität Vorlesung 3

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

6. Varianten des Turingmaschinen-Konzeptes II: Varianten der Speicherstruktur

Turing Maschinen II Wiederholung

Mächtigkeit von WHILE-Programmen

VL-03: Turing Maschinen II. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

THEORETISCHE INFORMATIK UND LOGIK

Berechenbarkeit und Komplexität

Sprachen und Automaten. Tino Hempel

Sprachen und Grammatiken

Formale Grundlagen der Wirtschaftsinformatik

Frank Heitmann 2/47. 1 Ein PDA beginnt im Startzustand z 0 und mit im Keller. 2 Ist der Automat

Einführung in die Informatik

7. Übungsblatt zu Theoretische Grundlagen der Informatik im WS 2015/16

Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion

Deterministische Turing-Maschinen

Grundlagen der Theoretischen Informatik

Übungs-Klausur zur Vorlesung. Digitale Informationsverarbeitung (Magister)

Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines

11.1 Kontextsensitive und allgemeine Grammatiken

Einführung in die Informatik I

Berechenbarkeit und Komplexität: Erläuterungen zur Turingmaschine

Theoretische Informatik SS 03 Übung 3

mehreren Präzisierungen des intuitiven Begriffs des Verfahren sein muss, so legt sich nahe, dass er Der Begriff der TURING-Maschine ist eine unter

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

Theoretische Informatik Mitschrift

LOOP-Programme: Syntaktische Komponenten

10. Der Äquivalenzsatz

Transkript:

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 = {IsEmpty, nullstack, top, push, pop}, wobei IsEmpty ein einstelliges Prädikat und nullstack eine Konstante ist, top und pop einstellige Funktionen sind und push eine zweistellige Funktion ist. Man beschreibe die Operationen, die auf einem Keller erlaubt sind, durch eine Formel F L S, sodass jedes Modell I von F ein (abstrakter) Keller ist. Hinweis: Ein Bestandteil der Formel könnte z.b. sein. x y(top(push(x, y)) = y) 2. Die folgenden Tatsachen werden in der nächsten Zeit benötigt. Bitte wiederholen bzw. machen Sie sich mit den folgenden Begriffen vertraut: 1 Turingmaschinen Eine Turingmaschine (kurz TM) hat die folgenden Bestandteile: Mehrere (k 1) beidseitig unendliche, in Felder unterteilte Bänder. In jedem Feld steht ein Symbol (Buchstabe) aus einem endlichen Bandalphabet Σ. Das Leerzeichen Σ deutet an, dass in diesem Feld eigentlich nichts steht. Ein Lese- und Schreibkopf für jedes Band (kurz Kopf genannt), der sich von Feld zu Feld bewegen und den Inhalt des jeweils betrachteten Feldes lesen und ändern kann. Eine Steuereinheit, die sich in einem der Zustände aus einer endlichen Zustandsmenge Z befindet, Informationen über die von den Köpfen gelesenen Symbole bekommt und deren Aktivitäten steuert. Es gibt zwei besonders ausgezeichnete Zustände: den Startzustand und den Endzustand. Eine Turingmaschine arbeitet taktweise und kann in Abhängigkeit vom gegenwärtigen Zustand und von den durch die Köpfe gelesenen k Bandsymbole gleichzeitig

Steuereinheit Kopf 1 a 1 a 2 a 3 a n Kopf 3 Kopf 2 Band 1 Band 2 Band 3 Kopf k Band k Leersymbol Abbildung 1: Bestandteile einer Turingmaschine einen neuen Zustand annehmen die k gelesenen Bandsymbole verändern und jeden der Köpfe um maximal ein Feld bewegen. Das Verhalten einer Turingmaschine in einem Takt wird durch die (totale) Überführungfunktion δ : Z Σ k Z Σ k {L, N, R} k festgelegt. Für z Z, a 1,... a k Σ beschreibt δ(z, a 1,..., a k ) = (z, a 1,..., a k, σ 1,..., σ k ) das Verhalten der Turingmaschine im Zustand z, wenn sie auf dem Band i das Symbol a i gelesen hat und dann in den Zustand z übergegangen ist und auf Band i das Symbol a i geschrieben hat. Dannach wird der Kopf i nach links (L), nicht (N) oder rechts (R) bewegt. Der Startzustand ist z 0 und der Endzustand ist z 1. Die Turingmaschine beginnt ihre Arbeit immer im Zustand z 0 und findet die Eingabe auf dem ersten Band. Dabei befindet sich der Kopf fur die Eingabe immer ganz links auf der Eingabe. Die TM hält (stoppt), falls sie in den Zustand z 1 gelangt und schreibt die Ausgabe auch auf Band 1. Es ist folgende Aufgabe zu lösen: Erkenne ob die Eingabe ein Palindrom ist, d.h. ob die Buchstaben von links nach 2

rechts gelesen das gleiche Wort bilden, wie von rechts nach links gelesen. D.h. wir sollen ein Turing-Programm für die folgende Funktion angeben: Idee: { a, falls x ein Palindrom palindrom(x) = def b, sonst Merke Buchstabe links im Zustand und lösche ihn Vergleich mit Buchstaben rechts: Wenn die Buchstaben nicht übereinstimmen, dann alles löschen und b schreiben Bei Übereinstimmung letztes Zeichen löschen und ganz nach links wandern. Dann diesen Prozess wiederholen. Die Zustände haben die folgende Bedeutung: z a : Buchstabe a gemerkt z b : Buchstabe b gemerkt z a: Ein Schritt nach links und a testen z b : Ein Schritt nach links und b testen z 0 : Startzustand, d.h. Merkprozess starten z 1 : Endzustand z 2 : Test positiv, d.h. nach links laufen und Prozess wiederholen z 3 : Test negativ, alles löschen. Nun geben wir eine Turingmaschine M = (Σ, Z, f, z 0, z 1 ) an, die das Problem löst. Σ = {a, b, } Z = {z a, z b, z a, z b, z 0, z 1, z 2, z 3 } f Siehe Bild 2 z 0 Startzustand z 1 Endzustand 2 Random-Access-Maschinen Die Random-Access-Maschinen (kurz: RAM) sind ein mathematisches Modell für reale Rechner. Eine RAM besteht aus einer Steuereinheit, aus unendlich vielen durchnumerierten Registern R0, R1, R2,... und dem Befehlsregister BR. Jedes Register kann eine natürliche Zahl enthalten, wobei sich die n Eingaben am Anfang in den Registern R0,..., Rn befinden. Alle nicht benutzten Register enthalten zu Beginn 0. Das Ergebnis wird am Ende in Register R0 abgelegt. Folgende Befehle sind zulässig: 3

z 0 z 1 a N // leeres Wort z 0 a z a R // a merken nach rechts z 0 b z b R // b merken nach rechts z a a z a a R // nach rechts, a gemerkt z a b z a b R z a z a L // rechtes Ende gefunden z a a z 2 L // Vergleich positiv z a b z 3 L // Vergleich negativ z a z 1 a N // War Palindrom z b a z b a R // Nach rechts, b gemerkt z b b z b b R z b z b L // rechtes Ende gefunden z b b z 2 L // Vergleich positiv z b a z 3 L // Vergleich negativ z b z 1 a N // War Palindrom z 2 a z 2 a L // Nach links und z 2 b z 2 b L // neuen Vergleich starten z 2 z 0 R z 3 a z 3 L // Band löschen und nach links z 3 b z 3 L z 3 z 1 b N Abbildung 2: Ein Turingprogramm zum Erkennen von Palindromen 4

BR R0 R1 R2 Steuereinheit Abbildung 3: Bestandteile einer Random-Access-Maschine Befehl Wirkung Transportbefehle Ri Rj <Ri> := <Rj> <BR> := <BR> + 1 Ri RRj <Ri> := <R<Rj>> <BR> := <BR> + 1 RRi Rj <R<Ri>> := <Rj> <BR> := <BR> + 1 Arithmetische Befehle Ri k <Ri> := k <BR> := <BR> + 1 Ri Rj + Rk <Ri> := <Rj> + <Rk> <BR> := <BR> + 1 Ri Rj - Rk <Ri> := <Rj> - <Rk> <BR> := <BR> + 1 Sprungbefehle GOTO m <BR> := m IF Ri = 0 GOTO m <BR> := m falls <Ri> = 0 <BR> := <BR> + 1 IF Ri > 0 GOTO m <BR> := m falls <Ri> > 0 <BR> := <BR> + 1 Dabei bezeichnet <Ri> den Inhalt des Registers i. Gegeben sei die folgende RAM: 0 R3 1 1 IF R1 = 0 GOTO 5 falls <R1> > 0 führe Schleife durch 2 R2 R2 + R0 addiere x zu <R2> 3 R1 R1 - R3 dekrementiere R1 4 GOTO 1 5 R0 R2 Ergebnis nach R0 6 STOP 5

3 Aufgaben (a) Vollziehen Sie die Arbeitsweise der Turingmaschine nach, deren Überführungsfunktion in Abbildung 2 angegeben ist, wenn Sie mit Eingabe abaaba startet. (b) Entwickeln Sie eine Turingmaschine, die zu einer gegebenen Binärzahl 1 hinzuaddiert. Dabei befindet sich der Kopf zu Beginn auf der linken Seite der Binärzahl. (c) Simulieren Sie die Wirkungsweise des oben angegebenen RAM-Programms für die Eingaben x = 5 und y = 3. Geben Sie an, welche Funktion durch diese RAM berechnet wird. (d) Entwickeln Sie ein RAM-Programm, das die Funktion ggt(x,y) berechnet (ggt = größter gemeinsamer Teiler). Besprechnung in der Übung am 13. Juni 2012 6