Theoretische Informatik SS 03 Übung 3

Ähnliche Dokumente
LOOP-Programme: Syntaktische Komponenten

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

Theoretische Informatik SS 03 Übung 5

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

Übung zur Vorlesung Berechenbarkeit und Komplexität

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

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

Berechenbarkeit und Komplexität Vorlesung 11

Grundlagen der Theoretischen Informatik: Übung 10

Syntax von LOOP-Programmen

1.5 Turing-Berechenbarkeit

Einführung in die Theoretische Informatik

LOOP-Programme: Syntaktische Komponenten

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

1.5 Turing-Berechenbarkeit

Mächtigkeit von WHILE-Programmen

Theoretische Informatik SS 03 Übung 4

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

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

GTI. Hannes Diener. 18. Juni. ENC B-0123,

2.5 Die Ackermannfunktion

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

Grundlagen Theoretischer Informatik 2 WiSe 2009/10 in Trier. Henning Fernau Universität Trier

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

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

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

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

GOTO simuliert Turingmaschinen

Einführung in die Theoretische Informatik

Theoretische Informatik II. WS 2007/2008 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch. 1. Teilklausur Vorname:... Nachname:...

Die Ackermannfunktion

1.4 Die Ackermannfunktion

Mächtigkeit von WHILE-Programmen

THEORETISCHE INFORMATIK UND LOGIK

Halteproblem/Kodierung von Turing-Maschinen

Berechenbarkeit. Script, Kapitel 2

Funktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Alternative Berechnungsmodelle

Berechenbarkeit und Komplexität Vorlesung 10

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

THEORETISCHE INFORMATIK UND LOGIK

Einführung in die Theoretische Informatik

Theoretische Informatik

Berechenbarkeit. Serie 4. Die Seminaraufgaben werden in den Übungen vom bis besprochen.

Das zehnte Hilbertsche Problem. Seminar Arbeit von Jurij Bernhardt ( )

Ein Induktionsbeweis über Schuhgrößen

Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt. I. Einleitung Berechnungsmodelle LOOP, WHILE, GOTO, rekursive Funktionen

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

Universelle Rechner und Church sche These

Grundlagen der Theoretischen Informatik

Rekursiv aufzählbare Sprachen

THEORETISCHE INFORMATIK UND LOGIK

Def.: Die Menge der LOOP-Programme ist induktiv wie folgt definiert:

Der Satz von Rice. Dann ist C(S) eine unentscheidbare Menge.

Theorie der Informatik

Theoretische Informatik 1

Schleifeninvarianten. Dezimal zu Binär

Grundbegriffe der Informatik Tutorium 3

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Einführung in die Informatik I

Unentscheidbarkeitssätze der Logik

Vollständige Induktion

Turing-Maschinen: Ein abstrakes Maschinenmodell

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007

Auffrischung Einige (wenige) Grundlagen der Theoretischen Informatik

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Kürzeste-Wege-Algorithmen und Datenstrukturen

Vollständige Induktion

Wir haben eine Beziehung zwischen entscheidbar und rekursiv aufzählbar hergeleitet.

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

3. RAM als Rechnermodell

Typen von Programmiersprachen

Entscheidungsprobleme

Einführung in die Theoretische Informatik Tutorium IX

Theoretische Grundlagen der Informatik

Mehrband-Turingmaschinen

Theoretische Informatik II

Einführung in die Theoretische Informatik

Einführung in die Informatik Algorithms II

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (4) Eine untere Schranke für den Platzbedarf

Präsenzübung Berechenbarkeit und Komplexität

Theoretische Grundlagen der Informatik

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Einführung in Berechenbarkeit, Komplexität und Formale Sprachen

Grundbegriffe der Informatik Musterlösung zu Aufgabenblatt 2. Jeder Frosch ist glücklich, wenn alle seiner Kinder quaken können.

Mächtigkeit von WHILE-Programmen

Theoretische Grundlagen der Informatik

2. Grundlagen. A) Mengen

Unvollständigkeit der Arithmetik

Semantik von Programmiersprachen SS 2017

Grundlagen der theoretischen Informatik

Falls H die Eingabe verwirft, so wissen wir, dass M bei Eingabe w nicht hält. M hält im verwerfenden Haltezustand. Beweis:

Mathematische Rekursion

Grundlagen der Theoretischen Informatik

Primitive Rekursion. Basisfunktionen: Konstante Funktion: const 3 3 (1,1, pr 1,3(g,h) (1,1)) Projektion: proj 3 (1,1, pr. Komposition: comp 3,2

Transkript:

Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige Anteil der Division von x durch y, also z.b. 8 DIV 3 = 2, 25 DIV 6 = 4. f(x, y) = x + y = total, da x + y für alle Werte x, y definiert ist. f(x, y) = x y = partiell, da x y für Werte x, y, x < y, falls = {0, 1, 2,...}. Für = {1, 2, 3,...} gilt sogar bei x y, x y. f(x, y) = x y = total, da x y für alle Werte x, y definiert ist. f(x, y) = x DIV y = partiell, da x DIV y für Werte x, y, x < y (somit f an dieser Stelle undefiniert), falls durch = {1, 2,...} definiert ist. Ebenfalls undefiniert ist x DIV y falls y = 0. Für = {0, 1, 2, 3,...} ist x DIV y immer noch für y = 0 undefiniert. b) Zeigen Sie unter Angabe einer Übergangsfunktion, dass die Funktion f : mit Turing-berechenbar ist. { x, x ungerade f(x) = undefiniert, x gerade δ 0 1 z 1 (z 0, 0, R) (z 0, 1, R) (z 1,, L) z 2 (z 2, 0, R) (z 3, 1, L) (z 2,, R) z 3 (z 3, 0, L) (z 3, 1, L) (z e,, R) z e - - - 1

Zunächst wird das niederwertigste Bit der Eingabe gesucht. Ist dies Eins, handelt es sich also um eine ungerade Eingabe, wird der Lese-/ Schreibkopf wieder auf das höchstwertige Eingabebit bewegt und der Endzustand z e eingenommen. Andernfalls verharrt die TM in einer Endlosschleife in Zustand z 2. Aufgabe 2 a) Warum stoppt jedes Programm in der Programmiersprache LOOP nach endlicher Zeit? x i := x j + c ist ein LOOP-Programm, für dessen Ausführung ein Rechenschritt benötigt wird, das also nach endlicher Zeit stoppt. Gegeben Sei ein LOOP-Programm P, mit endlicher Laufzeit. Dann ist die Laufzeit von LOOP x i DO P END; ebenfalls endlich, da x i mit einem Wert n i belegt ist und folglich die Schleife nur endlich oft durchlaufen wird. Sind zwei LOOP-Programme P 1 und P 2 endlicher Laufzeit gegeben, so ist die Laufzeit von P 1 ; P 2 die Summe beider Laufzeiten, also ebenfalls endlich. D.h. durch Anwendung beider Regeln können nur LOOP-Programme endlicher Laufzeit entstehen. Da jedes LOOP-Programm lediglich unter Anwendung der genannten Konzepte entsteht (endlich oft), weist jedes LOOP- Programm eine endliche Laufzeit auf. b) Geben Sie ein WHILE-Programm an, welches niemals stoppt. x := 1; WHILE x 0 DO x := 1 END; Aufgabe 3 a) Geben Sie jeweils kurze LOOP- und WHILE-Programme zur Berechnung der Funktionen x + y und x y an. Sie können hierbei die Nachfolgefunktion f(x) = x + 1 benutzen. Zuweisungen x := k, k = const., lassen sich mit Anweisungen der Form x := x l + k simulieren, wobei x l eine ungenutzte Variable ist, also nach Definition mit 0 belegt. In den folgenden Programmfragmenten kürzen wir dies durch x := k ab. 2

x + y als LOOP-Programm: LOOP y DO x := x + 1 END; Das Resultat der Berechnung ergibt sich als Wert der Variablen x. x y als LOOP-Programm: z := 0; LOOP y DO LOOP x DO z := z + 1 END; END; Das Resultat der Berechnung ergibt sich als Wert der Variablen z. x + y als WHILE-Programm: WHILE y 0 DO x := x + 1; y := y 1 END Das Resultat der Berechnung ergibt sich als Wert der Variablen x. x y als WHILE-Programm: t := x; z := 0; WHILE y 0 DO WHILE x 0 DO z := z + 1; x := x 1; END; x := t; y := y 1; END; Das Resultat der Berechnung ergibt sich als Wert der Variablen z. b) Geben Sie ein LOOP-Programm an, welches das Konstrukt simuliert. IF x = 0 THEN A END ELSE B END 3

y := 1; z := 1; LOOP x DO y := 0 END; LOOP y DO A; z:=0 END; LOOP z DO B END; Aufgabe 4 Die Ackermann-Funktion a(x, y) ist definiert durch a(0, y) = y + 1 a(x, 0) = a(x 1, 1), x > 0 a(x, y) = a(x 1, a(x, y 1)), x, y > 0 Weisen Sie die folgenden Eigenschaften nach: a) y < a(x, y) Beweis: Wir führen Induktion nach x: IA: IV: IB: 0 < y + 1 = a(0, y) y < a(x, y), y y < a(x + 1, y), y IS: 1 (IV ) < a(x, 1) 1 Def. < a(x + 1, 0) 0 < a(x + 1, 0) Dies ist der Induktionsanfang für einen Induktionsbeweis über y, innerhalb dieses Induktionsschlusses: IA(y): IV(y): 0 < a(x + 1, 0) y < a(x + 1, y) 4

IB(y): y + 1 < a(x + 1, y + 1) IS(y): In IA setzen wir für y den Wert a(x + 1, y) ein. Es gilt also: a(x + 1, y) < a(x, a(x + 1, y)) Def. = a(x + 1, y + 1) Damit gilt jedoch: y IV (y) < a(x + 1, y) < a(x + 1, y + 1) Da alle Werte ganzzahlig sind, gilt also: y + 1 < a(x + 1, y + 1) = Gilt y < a(x, y) für festes x und alle y, so gilt auch y < a(x + 1, y) für alle y. Folglich gilt y < a(x, y) für alle x, y. b) a(x, y) < a(x, y + 1) Beweis: Wir führen Induktion über x: IA: IV: IB: a(0, y) Def. = y + 1 < y + 2 Def. = a(0, y + 1) a(x, y) < a(x, y + 1) a(x + 1, y) < a(x + 1, y + 1) IS: y < a(x, y) wurde in Teilaufgabe a) bereits gezeigt. Wir setzen für x den Wert x 1 ein und für y den Wert a(x, y): a(x, y) < a(x 1, a(x, y)) Def. < a(x, y + 1) c) a(x, y + 1) a(x + 1, y) Beweis: Induktion nach y: IA: IV: a(x, 1) Def a(x + 1, 0) a(x, y + 1) a(x + 1, y) 5

IB: a(x, y + 2) a(x + 1, y + 1) IS: Bereits unter Teilaufgabe a) wurde gezeigt: y + 1 < a(x, y + 1) = y + 2 a(x, y + 1) IV a(x + 1, y) Ebenfalls bereits bewiesen wurde unter b): a(x, y) < a(x, y + 1) = a(x, y + 2) a(x, a(x + 1, y)) Def = a(x + 1, y + 1) d) a(x, y) = a(x + 1, y) Beweis: a(x, y) b) < a(x, y + 1) c) a(x + 1, y) 6