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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 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: WS 2017, RWTH BuK/WS 2017 VL-11: LOOP und WHILE Programme I 1/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 2/46 Wdh.: Berechenbarkeitslandschaft Wiederholung PCP rekursiv aufzählbare Probleme H Hɛ D MPCP Dioph Entscheidbare Probleme Probleme mit rekursiv aufzählbarem Komplement D H ɛ H Unentscheidbare Probleme mit unentscheidbarem Komplement H tot BuK/WS 2017 VL-11: LOOP und WHILE Programme I 3/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 4/46

2 Wdh.: Turing-mächtige Rechnermodelle Wdh.: Turing-Mächtigkeit Definition Ein Rechnermodell wird als Turing-mächtig bezeichnet, wenn jede Funktion, die durch eine TM berechnet werden kann, auch durch dieses Rechnermodell berechnet werden kann. Da die Registermaschine (RAM) die Turingmaschine simulieren kann, ist sie Turing-mächtig Auch die Mini-RAM (eine viel schwächere Variante der RAM mit stark eingeschränktem Befehlssatz) ist Turing-mächtig Reines HTML (ohne JavaScript; ohne Browser) ist nicht Turing-mächtig Tabellenkalkulationen (ohne Schleifen) sind nicht Turing-mächtig Der Lambda Calculus von Alonzo Church ist äquivalent zur TM, und daher Turing-mächtig Die µ-rekursiven Funktionen von Kurt Gödel sind äquivalent zur TM, und daher Turing-mächtig Alle gängigen höheren Programmiersprachen sind Turing-mächtig: Algol, Pascal, C, FORTRAN, COBOL, Java, Smalltalk, Ada, C++, Python, LISP, Haskell, PROLOG, etc. PostScript, Tex, Latex sind Turing-mächtig Sogar PowerPoint ist Turing-mächtig (wegen seiner Animated Features) BuK/WS 2017 VL-11: LOOP und WHILE Programme I 5/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 6/46 Vorlesung VL-11 LOOP und WHILE Programme I Die Programmiersprache LOOP Die Programmiersprache LOOP Die Programmiersprache WHILE WHILE versus LOOP WHILE ist Turing-mächtig BuK/WS 2017 VL-11: LOOP und WHILE Programme I 7/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 8/46

3 Programmiersprache LOOP LOOP / Syntax (1) Wir betrachten eine einfache Programmiersprache namens LOOP, deren Programme aus den folgenden syntaktischen Komponenten aufgebaut sind: Variablen: x 1 x 2 x 3... Konstanten: Symbole: Schlüsselwörter: ; := + LOOP DO ENDLOOP Die Syntax von LOOP ist induktiv definiert. Induktive Definition / Induktionsanfang: Zuweisungen Für jede Konstante c N sind die Zuweisungen x i := x j + c und x i := x j c LOOP-Programme. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 9/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 10/46 LOOP / Syntax (2) LOOP / Semantik (1): Zuweisungen Induktive Definition / Induktionsschritte: Hintereinanderausführung Falls P 1 und P 2 LOOP-Programme sind, so ist auch Die Eingabe ist in den Variablen x 1,..., x n enthalten. Alle anderen Variablen werden mit 0 initialisiert. Das Resultat eines LOOP-Programms ist die Zahl, die sich am Ende der Abbarbeitung in der Variablen x 1 ergibt. P 1 ; P 2 ein LOOP-Programm. LOOP-Konstrukt Falls P ein LOOP-Programm ist, so ist auch LOOP x i DO P ENDLOOP ein LOOP-Programm. LOOP-Programme der Form x i := x j + c sind Zuweisungen des Wertes x j + c an die Variable x i. LOOP-Programme der Form x i := x j c sind Zuweisungen des Wertes x j c an die Variable x i. Anmerkung: Die Variablen dürfen nur natürliche Werte annehmen. Daher verwenden wir die modifizierte Subtraktion: Falls x j < c gilt, so wird das Resultat x i auf 0 gesetzt. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 11/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 12/46

4 LOOP / Semantik (2): Hintereinanderausführung LOOP / Semantik (3): LOOP-Konstrukte Die Eingabe ist in den Variablen x 1,..., x n enthalten. Alle anderen Variablen werden mit 0 initialisiert. Das Resultat eines LOOP-Programms ist die Zahl, die sich am Ende der Abbarbeitung in der Variablen x 1 ergibt. Die Eingabe ist in den Variablen x 1,..., x n enthalten. Alle anderen Variablen werden mit 0 initialisiert. Das Resultat eines LOOP-Programms ist die Zahl, die sich am Ende der Abbarbeitung in der Variablen x 1 ergibt. In einem LOOP-Programm P 1 ; P 2 wird zunächst P 1 und danach P 2 ausgeführt. Das Programm LOOP x i DO P ENDLOOP hat folgende Bedeutung: P wird x i mal hintereinander ausgeführt. Anmerkung: Nur der Wert von x i zu Beginn der Schleife ist relevant. Ändert sich der Variablenwert von x i im Inneren von P, so hat dies keinen Einfluss auf die Anzahl der Wiederholungen. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 13/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 14/46 LOOP / Semantik (4) Ein LOOP-Programm P mit k Variablen berechnet eine k-stellige Funktion der Form [P]: N k N k. Ist P die Zuweisung x i := x j + c, so ist [P](r 1,..., r k ) = (r 1,..., r i 1, r j + c, r i+1,..., r k ). Ist P die Zuweisung x i := x j c, ist [P](r 1,..., r k ) = (r 1,..., r i 1, r j c, r i+1,..., r k ) falls r j c, und andernfalls [P](r 1,..., r k ) = (r 1,..., r i 1, 0, r i+1,..., r k ). LOOP: Beispiele und Macros Ist P = P 1 ; P 2 eine Hintereinanderausführung, so ist [P](r 1,..., r k ) = [P 2 ]([P 1 ](r 1,..., r k )). Ist P = LOOP x i DO Q ENDLOOP ein LOOP-Konstrukt, so gilt [P](r 1,..., r k ) = [Q] r i (r 1,..., r k ). BuK/WS 2017 VL-11: LOOP und WHILE Programme I 15/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 16/46

5 LOOP-Programme / Beispiele (1) LOOP-Programme / Beispiele (2) Das folgende Programm simuliert die Zuweisung x j := x i. Beispiel A x j := x i + 0 Beispiel C x 1 := x 2 ; LOOP x 3 DO x 1 := x ENDLOOP Dieses Programm berechnet die Addition x 1 := x 2 + x 3 Es sei x zero eine Dummy-Variable, die mit 0 initialisiert wird und deren Wert nie verändert wird. Das folgende Programm simuliert dann die Zuweisung x j := c eines konstanten Wertes an eine Variable. Beispiel B Beispiel D x 1 := 0; LOOP x 3 DO x 1 := x 1 + x 2 ENDLOOP x j := x zero + c Dieses Programm berechnet die Multiplikation x 1 := x 2 x 3 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 17/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 18/46 LOOP-Programme / Beispiele (3) Übung Skizzieren Sie LOOP-Programme, die die folgenden Operationen berechnen: Die modifizierte Subtraktion x 1 := x 2 x 3 (die für x 2 < x 3 den Wert 0 ergibt) Die Division ohne Rest x 1 := x 2 DIV x 3 Die Modulooperation x 1 := x 2 MOD x 3 LOOP-Programme / Beispiele (4) Es seien P 1 und P 2 LOOP-Programme, in denen die drei Variablen x 1, x 2 und x 3 nicht vorkommen. Beispiel E x 2 := 1; x 3 := 0; LOOP x 1 DO x 2 := 0; x 3 := 1 ENDLOOP; LOOP x 2 DO P 1 ENDLOOP; LOOP x 3 DO P 2 ENDLOOP Dieses Programm entspricht dem Konstrukt: IF x 1 = 0 THEN P 1 ELSE P 2 ENDIF Übung Skizzieren Sie ein LOOP-Programm, das IF x 1 = c THEN P 1 ELSE P 2 ENDIF simuliert. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 19/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 20/46

6 Programmiersprache WHILE Die Programme der Programmiersprache WHILE sind aus den folgenden syntaktischen Komponenten aufgebaut: Die Programmiersprache WHILE Variablen: x 1 x 2 x 3... Konstanten: Symbole: ; := + Schlüsselwörter: WHILE DO ENDWHILE BuK/WS 2017 VL-11: LOOP und WHILE Programme I 21/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 22/46 WHILE / Syntax WHILE / Semantik Die Eingabe ist in den Variablen x 1,..., x n enthalten. Die Syntax von WHILE ist induktiv definiert, und stimmt weitgehend mit der Syntax von LOOP überein. Zuweisungen x i := x j + c und x i := x j c und Hintereinanderausführung P 1 ; P 2 sind genau wie in LOOP definiert. Der Hauptunterschied zu LOOP besteht im Schleifen-Konstrukt. WHILE-Konstrukt Falls P ein WHILE-Programm ist und x i eine Variable, so ist auch WHILE x i 0 DO P ENDWHILE ein WHILE-Programm. Alle anderen Variablen werden mit 0 initialisiert. Das Resultat eines WHILE-Programms ist die Zahl, die sich am Ende der Abbarbeitung in der Variablen x 1 ergibt. Das Programm WHILE x i 0 DO P ENDWHILE hat folgende Bedeutung: P wird solange ausgeführt, bis x i den Wert 0 erreicht. Ein WHILE-Programm P mit k Variablen berechnet eine k-stellige Funktion der Form [P]: N k N k. Ist P = WHILE x i 0 DO Q ENDWHILE ein WHILE-Konstrukt, so ist [P](r 1,..., r k ) = [Q] l (r 1,..., r k ) für die kleinste Zahl l, für die die i-te Komponente von [Q] l (r 1,..., r k ) gleich 0 ist. Falls solch ein l nicht existiert, so ist [P](r 1,..., r k ) undefiniert. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 23/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 24/46

7 WHILE versus LOOP (1) Beobachtung Die LOOP-Schleife WHILE versus LOOP LOOP x i DO P ENDLOOP kann durch die folgende WHILE-Schleife simuliert werden: y := x i WHILE y 0 DO y := y 1; P ENDWHILE Ergo: Jede LOOP-berechenbare Funktion f : N k N ist auch WHILE-berechenbar. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 25/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 26/46 WHILE versus LOOP (2) WHILE versus LOOP (3) Es gibt WHILE-Programme, die nicht terminieren: Beispiel x 1 := 1; WHILE x 1 0 DO x 1 := x ENDWHILE LOOP-Programme terminieren immer: Satz Jedes LOOP-Programm hält auf jeder möglichen Eingabe nach endlich vielen Schritten an. Beweis: Durch Induktion über den Syntax-Baum. Hintereinanderausführung P = P 1; P 2 LOOP-Konstrukt P = LOOP x i DO Q ENDLOOP Wir werden zeigen: Satz (wird heute bewiesen) Die Programmiersprache WHILE ist Turing-mächtig. (In anderen Worten: Jede berechenbare Funktion kann von einem WHILE-Programm berechnet werden.) Satz (wird in der nächsten Vorlesung bewiesen) Die Programmiersprache LOOP ist nicht Turing-mächtig. (In anderen Worten: Es existiert eine berechenbare Funktion, die von keinem LOOP-Programm berechnet werden kann.) BuK/WS 2017 VL-11: LOOP und WHILE Programme I 27/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 28/46

8 Mächtigkeit von WHILE Mächtigkeit von WHILE Satz Die Programmiersprache WHILE ist Turing-mächtig. Beweis: Wir zeigen, dass jede Funktion, die durch eine TM berechnet werden kann, auch durch ein WHILE-Programm berechnet werden kann. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 29/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 30/46 Simulation von TM durch WHILE (1) Wir betrachten eine TM M. Zustandsmenge Q = {q 0,..., q t } Simulierte Turingmaschine M: B B B B δ 1 2 B Der Anfangszustand ist q 1, und der Endzustand ist q 0 TM im Zustand q i WHILE Variable Zustand = i q 1 q 2 q 3 (q 2, 1, R) q 3 Bandalphabet Γ = {1, 2, B} WHILE kodiert Buchstaben 1 durch Dezimalziffer 1, Buchstaben 2 durch Dezimalziffer 2, und Buchstaben B durch Dezimalziffer 0. Alle WHILE Variablen enthalten im Folgenden Dezimalzahlen Entsprechende Konfiguration: 1122 q Drei entsprechende Variablen im WHILE-Programm: Band-vor-Kopf 1122 Variable BandVorKopf Zustand 3 Variable Zustand pfok-ba-danb Variable BandAbKopf BuK/WS 2017 VL-11: LOOP und WHILE Programme I 31/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 32/46

9 Simulation von TM durch WHILE (2) Simulation von TM durch WHILE (3A) Jeder Rechenschritt von M wird durch einige WHILE-Befehle simuliert. Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus (A) Update von Zustand (B) Update von Symbol unterm Kopf (C) Bewegung des Kopfes L,R,N Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus (A) Update von Zustand (B) Update von Symbol unterm Kopf (C) Bewegung des Kopfes L,R,N Beginn der Rechenschritt Simulation Aktueller Zustand steht in der Variablen Zustand Das Symbol unterm Kopf erhalten wir durch den Befehl UntermKopf := BandAbKopf MOD 10 Der Zustand wird auf neuen Zustand q i gesetzt, indem man die Zuweisung Zustand := i ausführt BuK/WS 2017 VL-11: LOOP und WHILE Programme I 33/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 34/46 Simulation von TM durch WHILE (3B) Simulation von TM durch WHILE (3C-links) Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus (A) Update von Zustand (B) Update von Symbol unterm Kopf (C) Bewegung des Kopfes L,R,N Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus (A) Update von Zustand (B) Update von Symbol unterm Kopf (C) Bewegung des Kopfes L,R,N Das Symbol unterm Kopf wird auf σ {0, 1, 2} gesetzt, indem man das folgende Programmstück ausführt: BandAbKopf := BandAbKopf DIV 10; BandAbKopf := 10 BandAbKopf + σ; UntermKopf := σ; Der Kopf wird einen Schritt nach links (L) bewegt, indem man: UntermKopf := BandVorKopf MOD 10; BandVorKopf := BandVorKopf DIV 10; BandAbKopf := 10 BandAbKopf + UntermKopf; BuK/WS 2017 VL-11: LOOP und WHILE Programme I 35/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 36/46

10 Simulation von TM durch WHILE (3C-rechts) Simulation von TM durch WHILE (3C-nichts) Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus (A) Update von Zustand (B) Update von Symbol unterm Kopf (C) Bewegung des Kopfes L,R,N Jeder Rechenschritt der TM besteht (gemäss Überführungsfunktion) aus (A) Update von Zustand (B) Update von Symbol unterm Kopf (C) Bewegung des Kopfes L,R,N Der Kopf wird einen Schritt nach rechts (R) bewegt, indem man: UntermKopf := BandAbKopf MOD 10; BandVorKopf := 10 BandVorKopf + UntermKopf; BandAbKopf := BandAbKopf DIV 10; UntermKopf := BandAbKopf MOD 10; Der Kopf wird nicht bewegt (N), indem man gar nichts macht und alle Variablen unverändert lässt: BuK/WS 2017 VL-11: LOOP und WHILE Programme I 37/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 38/46 Simulation von TM durch WHILE (4) Ausblick: Landschaft um LOOP, WHILE, TM, RAM Schlussendlich die Grobstruktur der Simulation: Initialisierung Zustand := 1; BandVorKopf := 0; BandAbKopf := Gespiegeltes Eingabewort als Dezimalzahl; UntermKopf := BandAbKopf MOD 10; Die äussere Schleife WHILE Zustand 0 DO IF Zustand=1 AND UntermKopf=0 THEN Schritt ENDIF; IF Zustand=1 AND UntermKopf=1 THEN Schritt ENDIF; IF Zustand=1 AND UntermKopf=2 THEN Schritt ENDIF; IF Zustand=2 AND UntermKopf=0 THEN Schritt ENDIF;. IF Zustand=t AND UntermKopf=2 THEN Schritt ENDIF; ENDWHILE A(m, n) Ackermann Funktion TM = RAM = WHILE = entscheidbar LOOP = primitiv rekursiv + a b a ( ) b n k BuK/WS 2017 VL-11: LOOP und WHILE Programme I 39/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 40/46

11 Ackermann Funktion: Definition Die Ackermann Funktion Definition Die Ackermann Funktion A : N 2 N ist folgendermassen definiert: 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 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 41/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 42/46 Ackermann Funktion: Beispiele (1) Ackermann Funktion: Beispiele (2) 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 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 Ein paar Beispiele für m = 1: A(1, 0) = A(0, 1) = 2 A(1, 1) = A(0, A(1, 0)) = A(1, 0) + 1 = 3 A(1, 2) = A(0, A(1, 1)) = A(1, 1) + 1 = 4 A(1, 3) = A(0, A(1, 2)) = A(1, 2) + 1 = 5 Beobachtung A(1, n) = n + 2 Ein paar Beispiele für m = 2: A(2, 0) = A(1, 1) = 3 A(2, 1) = A(1, A(2, 0)) = A(2, 0) + 2 = 5 A(2, 2) = A(1, A(2, 1)) = A(2, 1) + 2 = 7 Beobachtung A(2, n) = 2n + 3 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 43/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 44/46

12 Ackermann Funktion: Beispiele (3) Ackermann Funktion: Beispiele (4) 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 Und ein paar Beispiele für m = 3: A(3, 0) = A(2, 1) = 5 A(3, 1) = A(2, A(3, 0)) = 2 A(3, 0) + 3 = 13 A(3, 2) = A(2, A(3, 1)) = 2 A(3, 1) + 3 = 29 A(3, 3) = A(2, A(3, 2)) = 2 A(3, 2) + 3 = 61 Beobachtung A(3, n) = 2 n+3 3 Zusammenfassung der Beispiele Wenn man den ersten Parameter fixiert... A(1, n) = n + 2 A(2, n) = 2n + 3 A(3, n) = 2 n+3 3 A(4, n) = 2 2 } 2 {{} 3 n + 3 viele Zweien Bereits der Wert A(4, 2) = ist grösser als die Anzahl aller Atome im Weltraum. BuK/WS 2017 VL-11: LOOP und WHILE Programme I 45/46 BuK/WS 2017 VL-11: LOOP und WHILE Programme I 46/46

Mächtigkeit von WHILE-Programmen

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

Mehr

Syntax von LOOP-Programmen

Syntax von LOOP-Programmen LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:

Mehr

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 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

Mehr

Zusammenfassung Grundzüge der Informatik 4

Zusammenfassung Grundzüge der Informatik 4 Zusammenfassung Grundzüge der Informatik 4 Sommersemester 04 Thorsten Wink 21. September 2004 Version 1.2 Dieses Dokument wurde in L A TEX 2εgeschrieben. Stand: 21. September 2004 Inhaltsverzeichnis 1

Mehr

2.4 Kontextsensitive und Typ 0-Sprachen

2.4 Kontextsensitive und Typ 0-Sprachen Definition 2.43 Eine Typ 1 Grammatik ist in Kuroda Normalform, falls alle Regeln eine der folgenden 4 Formen haben: Dabei: A, B, C, D V und a Σ. Satz 2.44 A a, A B, A BC, AB CD. Für jede Typ 1 Grammatik

Mehr

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

Turing-Maschinen. Definition 1. Eine deterministische Turing-Maschine (kurz DTM) ist ein 6- Dem endlichen Alphabet Σ von Eingabesymbolen. Turing-Maschinen Nachdem wir endliche Automaten und (die mächtigeren) Kellerautomaten kennengelernt haben, werden wir nun ein letztes, noch mächtigeres Automatenmodell kennenlernen: Die Turing-Maschine

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Turing-Maschine, Berechenbarkeit INSTITUT FÜR THEORETISCHE 0 KIT 07.11.2011 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen

Mehr

11.1 Kontextsensitive und allgemeine Grammatiken

11.1 Kontextsensitive und allgemeine Grammatiken Theorie der Informatik 7. April 2014 11. Kontextsensitive und Typ-0-Sprachen Theorie der Informatik 11. Kontextsensitive und Typ-0-Sprachen 11.1 Kontextsensitive und allgemeine Grammatiken Malte Helmert

Mehr

Rekursiv aufzählbare Sprachen

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

Mehr

Berechenbarkeit und Komplexität

Berechenbarkeit und Komplexität Berechenbarkeit und Komplexität Prof. Dr. Dietrich Kuske FG Theoretische Informatik, TU Ilmenau Wintersemester 2010/11 1 Organisatorisches zur Vorlesung Informationen, aktuelle Version der Folien und Übungsblätter

Mehr

2. Berechnungsmächtigkeit von Zellularautomaten. Ziele Simulation von Schaltwerken Simulation von Turingmaschinen

2. Berechnungsmächtigkeit von Zellularautomaten. Ziele Simulation von Schaltwerken Simulation von Turingmaschinen 2. Berechnungsmächtigkeit von Zellularautomaten Ziele Simulation von Schaltwerken Simulation von Turingmaschinen Beispiel WIREWORLD Elektronen laufen über Drähte von einem Gatter zum nächsten 2.3 Satz

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

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

Mehr

Ausgewählte unentscheidbare Sprachen

Ausgewählte unentscheidbare Sprachen Proseminar Theoretische Informatik 15.12.15 Ausgewählte unentscheidbare Sprachen Marian Sigler, Jakob Köhler Wolfgang Mulzer 1 Entscheidbarkeit und Semi-Entscheidbarkeit Definition 1: L ist entscheidbar

Mehr

Rekursive Funktionen Basisfunktionen

Rekursive Funktionen Basisfunktionen Rekursive Funktionen Basisfunktionen die nullstellige Funktion Z, die den konstanten Wert 0 liefert, die Funktion S : N N, bei der jeder natürlichen Zahl ihr Nachfolger zugeordnet wird, die Funktion P

Mehr

Formale Sprachen und Automaten

Formale Sprachen und Automaten Formale Sprachen und Automaten Kapitel 5: Typ 1 und Typ 0 Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Kapitel 5 Typ 1

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

GTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de

GTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 6. Juni - 13. Juni 1 / 49 Die Turingmaschine war das erste (bzw. zweite) formale Modell der Berechenbarkeit. Sie wurden bereits 1936 (also lange

Mehr

8. Turingmaschinen und kontextsensitive Sprachen

8. Turingmaschinen und kontextsensitive Sprachen 8. Turingmaschinen und kontextsensitive Sprachen Turingmaschinen (TM) von A. Turing vorgeschlagen, um den Begriff der Berechenbarkeit formal zu präzisieren. Intuitiv: statt des Stacks bei Kellerautomaten

Mehr

Berechenbarkeitstheorie 17. Vorlesung

Berechenbarkeitstheorie 17. Vorlesung Berechenbarkeitstheorie Institut für Mathematische Logik und Grundlagenforschung WWU Münster WS 13/14 Alle Folien unter Creative Commons Attribution-NonCommercial 3.0 Unported Lizenz. Satz 30 I CFL = {

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 1-12. Sitzung Dennis Felsing dennis.felsing@student.kit.edu http://www.stud.uni-karlsruhe.de/~ubcqr/2010w/tut gbi/ 2011-01-24 Überblick 1 Reguläre Ausdrücke Wiederholung

Mehr

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

Einführung in Berechenbarkeit, Komplexität und formale Sprachen Johannes Blömer Skript zur Vorlesung Einführung in Berechenbarkeit, Komplexität und formale Sprachen Universität Paderborn Wintersemester 2011/12 Inhaltsverzeichnis 1 Einleitung 2 1.1 Ziele der Vorlesung...................................

Mehr

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 5 Formale Algorithmenmodelle A&P (WS 14/15): 05 Formale Algorithmenmodelle 1 Überblick Motivation Formale Algorithmenmodelle Registermaschine Abstrakte Maschinen

Mehr

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen Berechenbarkeit und Komlexität Entscheidbarkeit und Unentscheidbarkeit Wolfgang Schreiner Wolfgang.Schreiner@risc.uni-linz.ac.at Research Institute for Symbolic Comutation (RISC) Johannes Keler University,

Mehr

Referat rekursive Mengen vs. rekursiv-aufzählbare Mengen

Referat rekursive Mengen vs. rekursiv-aufzählbare Mengen Kapitel 1: rekursive Mengen 1 rekursive Mengen 1.1 Definition 1.1.1 informal Eine Menge heißt rekursiv oder entscheidbar, wenn ihre charakteristische Funktion berechenbar ist. 1.1.2 formal Eine Menge A

Mehr

ALP I Rekursive Funktionen

ALP I Rekursive Funktionen ALP I Rekursive Funktionen SS 2011 Äquivalenz vieler Berechnungsmodelle Effektiv Berechenbare Funktionen Mathematische Modelle Maschinelle Modelle Text λ-kalkül Kombinatorische Logik Allgemein rekursive

Mehr

Vorlesung Berechenbarkeit und Komplexität. Motivation, Übersicht und Organisatorisches

Vorlesung Berechenbarkeit und Komplexität. Motivation, Übersicht und Organisatorisches Berechenbarkeit und Komplexität: Motivation, Übersicht und Organisatorisches Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen Berechenbarkeit die absoluten Grenzen

Mehr

Lösungen zur 3. Projektaufgabe TheGI1

Lösungen zur 3. Projektaufgabe TheGI1 Marco Kunze (makunze@cs.tu-berlin.de) WS 2001/2002 Sebastian Nowozin (nowozin@cs.tu-berlin.de) 21. 1. 2002 Lösungen zur 3. Projektaufgabe TheGI1 Definition: Turing-Aufzähler Ein Turing-Aufzähler einer

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Theoretische Informatik Testvorbereitung Moritz Resl

Theoretische Informatik Testvorbereitung Moritz Resl Theoretische Informatik Testvorbereitung Moritz Resl Bestandteile einer Programmiersprache: a) Syntax (Form): durch kontextfreie Grammatik beschrieben b) Semantik (Bedeutung) 1.) Kontextfreie Sprachen

Mehr

Wie viel Mathematik kann ein Computer?

Wie viel Mathematik kann ein Computer? Wie viel Mathematik kann ein Computer? Die Grenzen der Berechenbarkeit Dr. Daniel Borchmann 2015-02-05 Wie viel Mathematik kann ein Computer? 2015-02-05 1 / 1 Mathematik und Computer Computer sind schon

Mehr

Zahlen in Haskell Kapitel 3

Zahlen in Haskell Kapitel 3 Einführung in die Funktionale Programmiersprache Haskell Zahlen in Haskell Kapitel 3 FH Wedel IT-Seminar: WS 2003/04 Dozent: Prof. Dr. Schmidt Autor: Timo Wlecke (wi3309) Vortrag am: 04.11.2003 - Kapitel

Mehr

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 Einführung in die Programmierung WS 2014/15 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 2. Alg., Ber. & PS Inhalt 1. Algorithmen 2. Programmiersprachen Algorithmus und Programm(iersprache)

Mehr

Funktionale Programmierung (in Clojure)

Funktionale Programmierung (in Clojure) Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen

Mehr

Probeklausur zur Vorlesung Berechenbarkeit und Komplexität

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)

Mehr

Die Programmiersprache Scheme... DrRacket: Die Programmierumgebung http://www.racket-lang.org/ Sprache: Semantik. Sprache: Syntax

Die Programmiersprache Scheme... DrRacket: Die Programmierumgebung http://www.racket-lang.org/ Sprache: Semantik. Sprache: Syntax Informatik I 21. Oktober 2010 2. Informatik I 2. Jan-Georg Smaus 2.1 2.2 Albert-Ludwigs-Universität Freiburg 21. Oktober 2010 Jan-Georg Smaus (Universität Freiburg) Informatik I 21. Oktober 2010 1 / 40

Mehr

Sprachen und Automaten. Tino Hempel

Sprachen und Automaten. Tino Hempel Sprachen und Automaten 11 Tino Hempel Bisherige Automaten Automat mit Ausgabe/Mealy-Automat Akzeptor, Sprache eines Akzeptors Grenze: L = {a n b n } Kellerautomat erkennt L = {a n b n } Grenze:? T. Hempel

Mehr

Statt (r s) schreiben wir in Zukunft meistens rs, gelegentlich auch (r; s).

Statt (r s) schreiben wir in Zukunft meistens rs, gelegentlich auch (r; s). 14 2 REGULÄRE AUSDRÜCKE 2 Reguläre Ausdrücke Wir wollen (i.a. unendliche) Sprachen mit endlichen Mitteln darstellen, z.b. durch Grammatiken, nach denen die Sätze der Sprache gebildet werden dürfen. Es

Mehr

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

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395 Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395 Turing-Machine Wir suchen ein Modell zur formalen Definition der Berechenbarkeit von Funktionen und deren Zeit- und Platzbedarf. Verschiedene Modelle

Mehr

C.3 Funktionen und Prozeduren

C.3 Funktionen und Prozeduren C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

Informatik II. Registermaschinen. Registermaschinen. Registermaschinen. Rainer Schrader. 7. Dezember 2005

Informatik II. Registermaschinen. Registermaschinen. Registermaschinen. Rainer Schrader. 7. Dezember 2005 Informatik II Rainer Schrader Zentrum für Angewandte Informatik Köln 7. Dezember 25 / 82 2 / 82 Gliederung Aufbau und Eigenschaften universelle RAM s RAM-Berechenbarkeit Nichtentscheidbarkeit Reduzierbarkeit

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Induktive Beweise und rekursive Definitionen

Induktive Beweise und rekursive Definitionen Induktive Beweise und rekursive Definitionen Vorlesung Logik in der Informatik, HU Berlin 1. Übungsstunde Beweis durch vollständige Induktion über N Aufgabe 1 Zeige, dass für alle n N gilt: n 2 i = 2 n+1

Mehr

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

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik Grundlagen der Informatik II Teil I: Formale Modelle der Informatik 1 Einführung GdInfoII 1-2 Ziele/Fragestellungen der Theoretischen Informatik 1. Einführung abstrakter Modelle für informationsverarbeitende

Mehr

Ideen der Informatik. Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann

Ideen der Informatik. Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann Ideen der Informatik Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann Was ist ein Computer? 2 Übersicht Was ist ein Computer, ein Programm? Turings Antwort

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung

Mehr

Automaten, Spiele, und Logik

Automaten, Spiele, und Logik Automaten, Spiele, und Logik Woche 2 25. April 2014 Inhalt der heutigen Vorlesung 1. Reguläre Ausdrücke 2. der Satz von Kleene 3. Brzozowski Methode 4. grep und perl Reguläre Ausdrücke Rekursive Definition,

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri 2009-10-30 (Folien basieren auf dem gemeinsamen Kurs mit Stefan Thater, der für diese Vorlesung auf Alexander Kollers Java-Kurs basierte) Organisatorisches Wöchentliche

Mehr

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE: FORMALISIERUNG VON ALGORITHMEN Wegen der beobachteten Zusammenhänge zwischen Berechnungs-, Entscheidungs- und Aufzählungsverfahren genügt es Berechnungsverfahren zu formalisieren. Weiter genügt es Verfahren

Mehr

Infovorkurs, Teil III: Maschinenabstraktion & Ausblick

Infovorkurs, Teil III: Maschinenabstraktion & Ausblick Infovorkurs, Teil 09.10.2015 Webseite Die neuen Folien, die Übungen und Umfrageergebnisse stehen online; außerdem die Turingmaschinen-Quelltexte. www.geile-hirnbude.de/vorkurs Algorithmen Laufzeitabschätzung

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

1 Varianten von Turingmaschinen

1 Varianten von Turingmaschinen 1 Varianten von Turingmaschinen Es gibt weitere Definitionen für Turingmaschinen. Diese haben sich aber alle als äquivalent herausgestellt. Ein wiederkehrendes Element der Vorlesung: Äquivalenz von Formalismen

Mehr

Übung Theoretische Grundlagen

Übung Theoretische Grundlagen Übung Theoretische Grundlagen Berechenbarkeit/Entscheidbarkeit Nico Döttling November 26, 2009 INSTITUT FÜR KRYPTOGRAPHIE UND SICHERHEIT KIT University of the State of Baden-Wuerttemberg and National Laboratory

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Dr. Tom Kamphans 1. Vorlesung 12.10.2016 1 Organisatorisches Vorlesung: Mittwochs 14:00 15:30, Raum F 201 Übung: Mittwochs 15:45 19:00, Raum F 225 Übung: alle zwei Wochen

Mehr

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie Wiederholung FORMALE SYSTEME 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie Markus Krötzsch Formale Sprachen sind in Praxis und Theorie sehr wichtig Ein Alphabet ist eine nichtleere, endliche Menge

Mehr

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013 Übung zu Grundbegriffe der Informatik Simon Wacker 15. November 2013 Vollständige Induktion über die Wortlänge Es sei B ein Alphabet. Dann ist B = n N 0 B n. Für jedes Wort w B sei A w eine Aussage, die

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 4.1

Algorithmen und Datenstrukturen 1 Kapitel 4.1 Algorithmen und Datenstrukturen 1 Kapitel 4.1 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 4: Maschinenmodelle [Dieses Kapitel hält sich eng an

Mehr

Algorithmen und ihre Programmierung

Algorithmen und ihre Programmierung Veranstaltung Pr.-Nr.: 10 10 V Wirtschaftsinformatik für Wirtschaftwissenschaftler Algorithmen und ihre Programmierung -Teil 1 - Dr. Chris Bizer WS 007/008 Einführung Definition: Algorithmus Ein Algorithmus

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,

Mehr

Wortproblem für kontextfreie Grammatiken

Wortproblem für kontextfreie Grammatiken Wortproblem für kontextfreie Grammatiken G kontextfreie Grammatik. w Σ w L(G)? Wortproblem ist primitiv rekursiv entscheidbar. (schlechte obere Schranke!) Kellerautomat der L(G) akzeptiert Ist dieser effizient?

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln, Theorie der Informatik 8. März 25 8. Reguläre Sprachen I Theorie der Informatik 8. Reguläre Sprachen I 8. Reguläre Grammatiken Malte Helmert Gabriele Röger 8.2 DFAs Universität Basel 8. März 25 8.3 NFAs

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Reduzierbarkeit und das Post'sche Korrespondenzproblem

Reduzierbarkeit und das Post'sche Korrespondenzproblem Reduzierbarkeit und das Post'sche Korrespondenzproblem Agenda Motivation Reduzierbarkeit Definition Bedeutung Post'sches Korrespondenzproblem (PKP) Modifiziertes Post'sches Korrespondenzproblem (MPKP)

Mehr

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

Rekursionsanfang, Rekursionsschritt oder äquivalente Antworten. (z.b.: Abbruchbedingung (= Basisfall), eigentliche Rekursion (= Selbstaufruf))

Rekursionsanfang, Rekursionsschritt oder äquivalente Antworten. (z.b.: Abbruchbedingung (= Basisfall), eigentliche Rekursion (= Selbstaufruf)) Formale Methoden der Informatik WS / Lehrstuhl für Datenbanken und Künstliche Intelligenz Prof.Dr.Dr.F.J.Radermacher H. Ünver T. Rehfeld J. Dollinger 8. Aufgabenblatt Besprechung in den Tutorien vom..

Mehr

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie Stefan Schmid TU Berlin & T-Labs, Berlin, Germany Reduktionen in der Berechenbarkeitstheorie Problem: Wie komme ich von hier zum Hamburger Hbf? 2 Beispiel P1 Wie komme ich von hier zum Hamburger Hbf? kann

Mehr

Formale Methoden 1. Gerhard Jäger 16. Januar Uni Bielefeld, WS 2007/2008 1/19

Formale Methoden 1. Gerhard Jäger 16. Januar Uni Bielefeld, WS 2007/2008 1/19 1/19 Formale Methoden 1 Gerhard Jäger Gerhard.Jaeger@uni-bielefeld.de Uni Bielefeld, WS 2007/2008 16. Januar 2008 2/19 Reguläre Ausdrücke vierte Art (neben Typ-3-Grammatiken, deterministischen und nicht-deterministischen

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)

Mehr

BuK 2000 Lösungen Übungen

BuK 2000 Lösungen Übungen BuK 2000 Lösungen Übungen Dies sind private Lösungen, KEINE Musterlösungen, und somit nicht unbedingt korrekt! Trotzdem helfen Sie vielleicht. Wenn jemand die Musterlösungen hat her damit! http://s-inf.de

Mehr

Kontextsensitive und Typ 0 Sprachen

Kontextsensitive und Typ 0 Sprachen Kontextsensitive und Typ 0 Sprachen Slide 1 Kontextsensitive und Typ 0 Sprachen Hans U. Simon (RUB) Email: simon@lmi.rub.de Homepage: http://www.ruhr-uni-bochum.de/lmi Kontextsensitive und Typ 0 Sprachen

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 10.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

Teil V. Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie

Teil V. Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie Teil V Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie Zwei Sorten von Grammatiken Kontextsensitive Grammatik (CSG) (Σ, V, P, S), Regeln der Form αaβ αγβ α, β (Σ V ),

Mehr

Wissensbasierte Systeme

Wissensbasierte Systeme WBS4 Slide 1 Wissensbasierte Systeme Vorlesung 4 vom 03.11.2004 Sebastian Iwanowski FH Wedel WBS4 Slide 2 Wissensbasierte Systeme 1. Motivation 2. Prinzipien und Anwendungen 3. Logische Grundlagen 4. Suchstrategien

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

Automaten, Spiele und Logik

Automaten, Spiele und Logik Automaten, Spiele und Logik Woche 13 11. Juli 2014 Inhalt der heutigen Vorlesung Linearzeit Temporale Logik (LTL) Alternierende Büchi Automaten Nicht-Determinisierung (Miyano-Ayashi) Beschriftete Transitionssysteme

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Theoretische Informatik 2

Theoretische Informatik 2 Theoretische Informatik 2 Johannes Köbler Institut für Informatik Humboldt-Universität zu Berlin WS 2009/10 Die Chomsky-Hierarchie Definition Sei G = (V, Σ, P, S) eine Grammatik. 1 G heißt vom Typ 3 oder

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik - das Quiz zur Vorlesung Teil I - Grundzüge der Logik In der Logik geht es um... (A) die Formen korrekten Folgerns (B) die Unterscheidung von wahr und falsch (C) das Finden von

Mehr

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in

Mehr

5 Der Begriff Berechnungsmodell

5 Der Begriff Berechnungsmodell 5 Der Begriff Berechnungsmodell Die Lernumgebung Kara bietet nicht nur einen Einstieg in die Grundlagen von Algorithmen und Programmen, sondern auch eine intuitive Einführung des zentralen Begriffs Berechnungsmodell.

Mehr

SWP Prüfungsvorbereitung

SWP Prüfungsvorbereitung 20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c

Mehr

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls 4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls δ(q, a, Z) + δ(q, ɛ, Z) 1 (q, a, Z) Q Σ. Die von einem DPDA, der mit leerem Keller akzeptiert,

Mehr

Proseminar Funktionales Programmieren. Stephan Kreutzer

Proseminar Funktionales Programmieren. Stephan Kreutzer Proseminar Funktionales Programmieren Die Programmiersprache LISP Stephan Kreutzer Teil I: Funktionales Programmieren Imperative Sprachen Imperative Sprachen: Befehlsorientiert Imperative Sprachen orientieren

Mehr

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Wintersemester 2009/10, Prof. Dr. Udo Hahn, Erik Fäßler Übungsblatt 3 vom 19.11.2009 Abgabe bis 26.11.2009, 14:30 Uhr; per

Mehr

Theoretische Informatik 2

Theoretische Informatik 2 Theoretische Informatik 2 Johannes Köbler Institut für Informatik Humboldt-Universität zu Berlin WS 2009/10 Entscheidbare und semi-entscheidbare Sprachen Definition Eine NTM M hält bei Eingabe x, falls

Mehr

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo

1. LPC - Lehmanns Programmier Contest - Lehmanns Logo Aufgabe ist die Entwicklung einer vereinfachten Variante der beliebten Programmiersprache Logo. Die Aufgabe ist in drei Stufen zu erledigen, von der wir zunächst nur die erste Stufe bekannt geben. Die

Mehr