Mächtigkeit von WHILE-Programmen



Ähnliche Dokumente
Mächtigkeit von WHILE-Programmen

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP Programme

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme

Berechenbarkeit und Komplexität Vorlesung 10

Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Die Komplexitätsklassen P und NP

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

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

Berechenbarkeit und Komplexität Vorlesung 11

Übung Theoretische Grundlagen

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

Grundlagen der Theoretischen Informatik, SoSe 2008

Informationsblatt Induktionsbeweis

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Theoretische Grundlagen der Informatik

Algorithmen und Berechnungskomplexität I

Algorithmen II Vorlesung am

Grundlagen der Künstlichen Intelligenz

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Einführung in die Programmierung

Theoretische Informatik SS 04 Übung 1

Grundlagen der Theoretischen Informatik

Grundbegriffe der Informatik

Satz. Für jede Herbrand-Struktur A für F und alle t D(F ) gilt offensichtlich

LOOP-Programme: Syntaktische Komponenten

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

W-Rechnung und Statistik für Ingenieure Übung 11

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Programmierkurs Java

Entwurf von Algorithmen - Kontrollstrukturen

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Grammatiken. Einführung

Kapitel 1: Einführung. Was ist Informatik? Begriff und Grundprobleme der Informatik. Abschnitt 1.1 in Küchlin/Weber: Einführung in die Informatik

Wortproblem für kontextfreie Grammatiken

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Aufgabe 5 Excel 2013 (Fortgeschrittene)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Registermaschine (RAM), Church-Turing-These

Erfüllbarkeit und Allgemeingültigkeit

Analysis I für Studierende der Ingenieurwissenschaften

Statuten in leichter Sprache

Webseiten sind keine Gemälde. Webstandards für ein besseres Web. Webstandards für ein besseres Web

Grundbegriffe der Informatik

Angebot. UVV-Prüfungen und Wartungen von mobilen Abfallpressen

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

AutoTexte und AutoKorrektur unter Outlook verwenden

Übung - Datensicherung und Wiederherstellung in Windows Vista

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Registermaschine (RAM), Church-Turing-These. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Definition und Begriffe

Informatik Grundlagen, WS04, Seminar 13

3. Ziel der Vorlesung

WS 2013/14. Diskrete Strukturen

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Java-Programmierung mit NetBeans

IBM SPSS Statistics Version 23. Einführung in Installation und Lizenzierung

Wir machen neue Politik für Baden-Württemberg

IT-Basics 2. DI Gerhard Fließ

Formale Sprachen und Grammatiken

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Kurzeinführung LABTALK

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

ecommerce Deshalb ist es für Unternehmen jeder Grösse wichtig, den Schritt in den Online-Verkauf nicht zu verpassen.

BEDIENUNG ABADISCOVER

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Erfahrungen mit Hartz IV- Empfängern

Theorie der Informatik

Finanzwirtschaft. Teil II: Bewertung

Computeranwendung und Programmierung (CuP)

Leitfaden Internet-Redaktion kursana.de

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Die richtigen Partner finden, Ressourcen finden und zusammenführen

Logik für Informatiker

teischl.com Software Design & Services e.u. office@teischl.com

LOOP-Programme: Syntaktische Komponenten

Angebot. UVV-Prüfungen und Wartungen von mobilen Abfallpressen

1 Mathematische Grundlagen

7 Rechnen mit Polynomen

Versand Etiketten / Endlosdruck

R ist freie Software und kann von der Website.

Drei Fragen zum Datenschutz im. Nico Reiners

1 Vom Problem zum Programm

Die Größe von Flächen vergleichen

Beweisbar sichere Verschlüsselung

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Sudoku-Informatik oder wie man als Informatiker Logikrätsel löst

effektives Verfahren ~ Algorithmus (Al Chwarismi) Regelsystem, Methode, Rezept, Gebrauchsanleitung Programm (griech. προγραφω, vor-schreiben)

Evident VDDS-Anbindung von MIZ

Kontrollstrukturen - Universität Köln

Installationsanleitung Maschinenkonfiguration und PPs

Modellbildungssysteme: Pädagogische und didaktische Ziele

5. Tutorium zu Programmieren

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

KOSTENTRÄGER VERWALTUNG / ZUWEISUNG

Transkript:

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 und Komplexität 26. November 2009 1 / 20

Maschinenmodelle und Programmiersprachen Maschinenmodelle Turing-Maschine Registermaschine Endliche Automaten Programmiersprachen C, C++, C# Java PHP, JavaScript PostScript SQL Alle (genannten) Programmiersprachen sind nicht mächtiger als TM/RAM. Gibt es Funktionen, die sie nicht berechnen können? Was ist überhaupt ein Algorithmus? Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 2 / 20

Turing-mächtige Programmiersprachen Definition Eine Programmiersprache wird als Turing-mächtig bezeichnet, wenn jede Funktion, die durch eine TM berechnet werden kann, auch durch ein Programm in dieser Programmiersprache berechnet werden kann. Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 3 / 20

Die Programmiersprache WHILE Syntax Elemente eines WHILE-Programms Variablen x 0 x 1 x 2... Konstanten 1 0 1 Symbole ; := + Schlüsselwörter WHILE DO END Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 4 / 20

Die Programmiersprache WHILE Syntax Induktive Definition Induktionsanfang Zuweisung Für jedes c { 1, 0, 1} ist die Zuweisung x i := x j + c ein WHILE-Programm. Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 5 / 20

Die Programmiersprache WHILE Syntax Induktive Definition Induktionsschritte: Hintereinanderausführung Falls P 1 und P 2 WHILE-Programme sind, dann ist auch ein WHILE-Programm. P 1 ; P 2 WHILE-Konstrukt Falls P ein WHILE-Programm ist, dann ist auch ein WHILE-Programm. WHILE x i 0 DO P END Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 6 / 20

Die Programmiersprache WHILE Semantik Ein While-Programm P berechnet eine k-stellige Funktionen der Form f : N k N. Die Eingabe ist in den Variablen x 1,..., x k enthalten. Alle anderen Variablen werden mit 0 initialisiert. Das Resultat eines WHILE-Programms ist die Zahl, die sich am Ende der Rechnung in der Variable x 0 ergibt. Programme der Form x i := x j + c sind Zuweisungen des Wertes x j + c an die Variable x i. In einem WHILE-Programm P 1 ; P 2 wird zunächst P 1 und dann P 2 ausgeführt. Das Programm WHILE x i 0 DO P END hat die Bedeutung, dass P solange ausgeführt wird, bis x i den Wert 0 erreicht. Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 7 / 20

Beispiel eines WHILE-Programms Was berechnet dieses WHILE-Programm? WHILE x 2 0 DO x 1 := x 1 + 1; x 2 := x 2 1 END; x 0 := x 1 + 0 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 8 / 20

Die Programmiersprache WHILE Mächtigkeit Satz Die Programmiersprache WHILE ist Turing-mächtig. Lemma I (vgl. Übungsaufgabe 2.3) Eine TM kann durch eine RAM mit konstant vielen Registern und eingeschränktem Befehlssatz simuliert werden. Lemma II LOAD, CLOAD, STORE, CADD, CSUB, GOTO, IF c(0) 0 GOTO, END Ein WHILE-Programm kann eine eingeschränkte RAM (s. o.) simulieren. Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 9 / 20

Simulation von TM durch eingeschränkte RAM Beweisidee: Annahme: Σ = {0, 1}, Γ = {0, 1, B} Speicherung von Konfiguration w 1 w j 1 q k w j w n Register 1 Zustand der TM: k Register 2 Bandinschrift links vom Kopf: j 1 i=1 code(w i) 3 j i 1 Register 3 Bandinschrift rechts vom Kopf: n i=j code(w i) 3 i j code(b) = 0 code(0) = 1 code(1) = 2 Zugriff auf das Band mittels CADD, CMULT, CDIV, CMOD (einfach mit vorhandenen Befehlen zu implementieren). Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 10 / 20

Simulation von TM durch eingeschränkte RAM TM Zustand: q 13 Bandinschrift: B B B 1 1 0 1 1 0 1 B B RAM c(1) = 13 c(2) = (000221) 3 c(3) = (002122) 3 Ablauf eines Simulationsschrittes: IF-Abfrage, welcher Zustand, welches Zeichen unter dem Kopf Aktualisierung des Zustands Änderung des Zeichens unter dem Kopf, Verschieben des Kopfes Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 11 / 20

Simulation von TM durch eingeschränkte RAM TM Zustand: q 13 Bandinschrift: 0 0 0 2 2 1 2 2 1 2 0 0 RAM c(1) = 13 c(2) = (000221) 3 c(3) = (002122) 3 Ablauf eines Simulationsschrittes: IF-Abfrage, welcher Zustand, welches Zeichen unter dem Kopf Aktualisierung des Zustands Änderung des Zeichens unter dem Kopf, Verschieben des Kopfes Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 11 / 20

Simulation von TM durch eingeschränkte RAM TM Zustand: q 13 Bandinschrift: 0 0 0 2 2 1 2 2 1 2 0 0 RAM c(1) = 13 c(2) = (00022) 3 c(3) = (0021221) 3 Ablauf eines Simulationsschrittes: IF-Abfrage, welcher Zustand, welches Zeichen unter dem Kopf Aktualisierung des Zustands Änderung des Zeichens unter dem Kopf, Verschieben des Kopfes Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 11 / 20

Simulation von TM durch eingeschränkte RAM TM Zustand: q 13 Bandinschrift: 0 0 0 2 2 2 2 2 1 2 0 0 RAM c(1) = 13 c(2) = (0002) 3 c(3) = (00212222) 3 Ablauf eines Simulationsschrittes: IF-Abfrage, welcher Zustand, welches Zeichen unter dem Kopf Aktualisierung des Zustands Änderung des Zeichens unter dem Kopf, Verschieben des Kopfes Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 11 / 20

Beweis Turing-Mächtigkeit von WHILE-Programmen Lemma II Ein WHILE-Programm kann eine eingeschränkte RAM simulieren. Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 12 / 20

Beweis Turing-Mächtigkeit von WHILE-Programmen Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 13 / 20

Beweis Turing-Mächtigkeit von WHILE-Programmen Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 14 / 20

Beweis Turing-Mächtigkeit von WHILE-Programmen Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 15 / 20

Beweis Turing-Mächtigkeit von WHILE-Programmen Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 16 / 20

Ausblick: Die Programmiersprache LOOP Syntax Änderung im Vergleich zu WHILE-Programmen: Wir ersetzen das WHILE-Konstrukt durch ein LOOP-Konstrukt der folgenden Form: LOOP x i DO P END, wobei die Variable x i nicht in P vorkommen darf. Semantik Das Programm P wird x i mal hintereinander ausgeführt. Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 17 / 20

Ausblick: Die Programmiersprache LOOP Mächigkeit Definition Die durch LOOP-Programme berechenbaren Funktionen werden als LOOP-berechenbar oder primitiv-rekursiv bezeichnet. Vermutung von Hilbert (1926): Die Klasse der primitiv rekursiven Funktionen stimmt mit der Klasse der rekursiven (berechenbaren) Funktionen überein. Ackermann (1929): Diese Vermutung stimmt nicht! Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 18 / 20

Ausblick: Die Ackermann-Funktion Definition Definition Die Ackermannfunktion A: N 2 N ist folgendermaßen definert: A(0, n) = n + 1 für n 0 A(m + 1, 0) = A(m, 1) für m 0 A(m + 1, n + 1) = A(m, A(m + 1, n)) für m, n 0 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 19 / 20

Ausblick: Berechenbarkeit der Ackermannfunktion Beobachtung Die Ackermannfunktion ist rekursiv. Begründung? Satz Die Ackermannfunktion ist nicht primitiv rekursiv. Beweis folgt. Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und Komplexität 26. November 2009 20 / 20