Einführung in die Programmierung
|
|
- Anke Brandt
- vor 7 Jahren
- Abrufe
Transkript
1 Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg
2 URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg
3 Einordnung Programmier-Paradigma: Maschinen- nah, sehr kleinschrittig (Assemblersprachen prozedural, strukturiert (imperative Sprachen, z.b. Pascal deklarativ (funktionale Programmierung, z.b. LISP regelbasiert (logische Programmierung, z.b. Prolog objektorientiert (z.b. Java Frage: Sind die verschiedenen Programmiersprachen unterschiedlich mächtig? Antwort: (Curch sche These Nein! Universelle Registermaschine (URM: theoretisches Modell, in dem man mit (sehr! wenigen Befehlen bereits alle berechenbaren Funktionen programmieren kann 3
4 URM URM = Universelle Registermaschine Formales Modell, um mathematisch exakt Algorithmen angeben zu können und Eigenschaften beweisen zu können. Sehr einfaches Computer-Modell Programme für die URM lassen sich sehr einfach in Programme in C oder Java übertragen Kann nur Funktionen f : N n ---> Nberechnen 4
5 Aufbau der URM URM enthält: 1. Unendliche viele Register r 1, r 2,... : Können jeweils genau einen Wert n N enthalten 2. Programmspeicher: Programmspeicherplätze 1,...,p können jeweils genau einen Befehl aufnehmen (p beliebig; für ein URM-Programm fest. Der i-te Befehl β i steht auf dem Programmspeicherplatz i. 3. Befehlszähler: Hat Wert aus N + und gibt die Nummer des nächsten auszuführenden Befehls an Programmspeicher 1: Befehl 1 2: Befehl 2 3: Befehl p: Befehl p r0: r1: r2: r3: Befehlszähler Register... URM 5
6 r i 0 (i N + Register r i auf 0 setzen Befehle der URM r i r i + 1 (i N + Wert des Registers r i um 1 erhöhen r i r i -1 (i N + Wert des Registers r i um 1 erniedrigen (0 bleibt unverändert goto l (l N + Befehlszähler auf l setzen if r i = 0 goto l (i N +, l N + Befehlszähler auf l setzen, falls Register r i den Wert 0 hat Die ersten drei Befehle sind arithmetische Befehle, die letzten beiden Sprungbefehle. 6
7 URM-Programm URM-Programme bestehen aus drei Teilen: Eingabe in(r i1,...,r in : Die Eingabedaten werden auf die in einer in-vereinbarung spezifizierten Register geschrieben, alle übrigen Register auf 0 gesetzt und der Befehlszähler auf 1 gesetzt. Befehlsteil b: Folge von Befehlen β 1... β p Ausgabe out(r i : Für den Fall, dass die Berechnung abbricht, steht die Ausgabe in dem durch die out-vereinbarung angegebenen Register. Für den Fall, dass die Berechnung nicht abbricht, ist die Ausgabe nicht definiert. 7
8 Ausführung des Befehlsteils Sei q der Wert des Befehlsregisters. Der q-te Befehl ist der Befehl im q-ten Befehlsspeicher. Falls der q-te Befehl ein: arithmetischer Befehl ist, wende ihn entsprechend an und erhöhe anschließend den Programmzähler um 1. Sprungbefehl der Form goto l ist, so setze den Befehlszähler auf l. Sprungbefehl der Form if r i = 0 goto l ist, so wird der Befehlszähler auf den Wert l gesetzt, falls r i den Wert 0 enthält. Ansonsten wird der Befehlszähler um 1 erhöht. Dieses Vorgehen wird wiederholt. Es sind zwei Fälle möglich: Nach endlich vielen Programmschritten weist der Programmzähler auf eine leere Programmspeicherstelle. In diesem Fall bricht die Berechnung ab. Nach jeder Anwendung eines Befehls ist ein weiterer Befehl ausführbar. In diesem Fall bricht die Berechnung nicht ab. 8
9 Beispiel 1 in(r 1 1: r 2 0 2: if r 1 = 0 goto 6 3: r 1 r 1-1 4: r 2 r : goto 2 out(r 2 Frage: Was berechnet dieses URM-Programm? 9
10 Beispiel 1 in(r 1 1: r 2 0 2: if r 1 = 0 goto 6 3: r 1 r 1-1 4: r 2 r : goto 2 out(r 2 Frage: Was berechnet dieses URM-Programm? Es wird der Inhalt von r 1 nach r 2 kopiert, r 1 auf den Wert 0 gesetzt und der kopierte Wert ausgegeben. 10
11 Beispiel 2 in(r 1 1: r 2 0 2: goto 1 out(r 2 Frage: Was berechnet dieses URM-Programm? 11
12 Beispiel 2 in(r 1 1: r 2 0 2: goto 1 out(r 2 Frage: Was berechnet dieses URM-Programm? Die Berechnung bricht nicht ab! 12
13 Beispiel 3 in(r1, r2 1: r 3 0 2: if r 1 = 0 goto 6 3: r 1 r 1-1 4: r 3 r : goto 2 6: if r 2 = 0 goto 10 7: r 2 r 2-1 8: r 3 r : goto 6 out(r3 "r 3 r 3 + r 1 " r 1 0 "r 3 r 3 + r 2 " r 2 0 Wiederkehrendes Muster Frage: Was berechnet dieses URM-Programm? 13
14 Beispiel 3 in(r1, r2 1: r 3 0 2: if r 1 = 0 goto 6 3: r 1 r 1-1 4: r 3 r : goto 2 6: if r 2 = 0 goto 10 7: r 2 r 2-1 8: r 3 r : goto 6 out(r3 "r 3 r 3 + r 1 " r 1 0 "r 3 r 3 + r 2 " r 2 0 Wiederkehrendes Muster Frage: Was berechnet dieses URM-Programm? Berechnet x+y 14
15 Beispiel 4 Wie kann man das Maximum zweier Zahlen x 1 und x 2 bestimmen? in(r1, r2 1: r 3 0 2:... out(r3 Wie sieht der Befehlsteil aus? Hinweis: Wenn x1-x2 >= 0, dann ist x1 das Maximum, sonst x2 15
16 Maximum zweier Zahlen 1: if r 1 =0 goto 7 /* Minimum bilden */ 2: if r 2 =0 goto 11 3: r 1 r 1 1 4: r 2 r 2 1 5: r 3 r : goto 6 7: if r 2 =0 goto 15 /* r 1 war kleiner oder gleich als r 2 */ 8: r 3 r : r 2 r : goto 7 11: if r 1 =0 goto 15 /* r 1 war größer als r 2 */ 12: r 3 r : r 1 r : goto 11 15: 16
17 Aufgabe Schreiben Sie ein URM-Programm, das die modifizierte Differenz x1-x2 von zwei Eingabewerten berechnet! modifiziert bedeutet: Das Ergebnis soll 0 sein, wenn x1<x2 (oder x1=x2. 17
18 Zustand Ein Zustand z : N N der URM beschreibt mit: z(0 den Inhalt des Befehlszählers (Register 0 z(i den Inhalt des i-ten Registers (i N + Beispiele für Zustände: (Kurzschreibweise z 1 : N N mit z 1 (0=1, z 1 (1=5, z 1 (2=4711, z 1 (i=0 sonst z 1 = (1, 5, 4711, 0... z 2 : N N mit z 2 (0=2, z 2 (i=0 sonst z 2 = (2, 0,... z 3 : N N mit z 3 (3=1, z 3 (i=0 sonst z 3 = (0, 0, 0, 1, 0,... z 4 : N N mit z 4 (i=0 für alle i z 4 = (0, 0,... 18
19 Zustandsraum, Zustandstransformation Der Zustandsraum Z der URM ist definiert durch: Z := { z z : N N } als die Menge aller möglichen Zustände der URM. Jeder Befehl β bestimmt dann eine Zustandstransformation [β] : Z Z mit: [ r i 0 ] (z := z mit z (0:= z(0+1, z (i:=0, z (j:=z(j für j i [ r i r i + 1 ] (z := z mit z (0:= z(0+1, z (i:=z(i+1, z (j:=z(j für j i [ r i r i -1] (z := z mit z (0:= z(0+1, z (i:=z(i-1, z (j:=z(j für j i [ goto l ] (z := z mit z (0:= l, z (j=z(j sonst [ if r i = 0 goto l ] (z := z mit z (0:=l, z (j:=z(j sonst, falls z(i = 0 bzw. z (0:=z (0+1, z (j:=z(j sonst, falls z(i 0 19
20 Beispiel Zustandstransformation Sei z : N N mit z(0:=1, z(1:=1, z(2:=4711, z(i:=0 sonst [ r 2 0 ] (z = z' mit z' : N N mit z'(0:=2, z'(1:=1, z'(i:=0 sonst Der Befehl r 2 0 transformiert also den Zustand z = (1, 1, 4711, 0, 0,... in den Zustand z = (2, 1, 0, 0,... 20
21 Einzelschrittfunktion Der Befehlsteil b := β 1,..., β p (p N + bestimmt eine Zustandstransformation δ(b : Z - - -> Z die sogenannte Einzelschrittfunktion von b mit: δ(β 1,..., β p (z := [ β i ] (z falls z(0 = i {1,..., p} undef. z(0 > p 21
22 Iterierte Zustandstransformation Für die iterierte Zustandstransformation [ b ] des Befehlsteils b = (β 1,..., β p gilt: (1 Falls die Berechung abbricht: δ(b (z 0 = z 1 δ(b (z 1 = z 2... δ(b (z s-1 = z s mit z s (0 > p Dann gilt: [ b ] (z 0 := z s (2 Falls die Berechnung nicht abbricht, d.h. für jeden Folgezustand z i+1 gilt: δ(b (z i = z i+1 mit 1 z i+1 (0 p Dann gilt: [ b ] (z 0 := undef. 22
23 Ein-/Ausgabevereinbarung Für die Eingabevereinbarung in (r i1,...,r in gilt: [ in (r i1,...,r in ] : N n Z (x 1,...,x n z 0 (Startzustand mit: z 0 (0 = 1 z 0 (i k = x k (k=1,...,n z 0 (j = 0 sonst Beispiel: [ in(r 1,r 3 ] (5,7 = z 0 mit z 0 (0=1, z 0 (1=5, z 0 (3=7, z 0 (i=0 sonst also z 0 = ( 1, 5, 0,7, 0,... Für die Ausgabevereinbarung out (r i gilt: [ out (r i ] : Z N z z(i Beispiel: [ out (r 1 ] (z 0 = 5 23
24 URM-Programm Definition: Ein URM-Programm besteht aus einer Eingabevereinbarung in(r i1,...,r in (n N, einem Befehlsteil b = (β 1,..., β p (p N + und einer Ausgabevereinbarung out(r i (i N + : P = in (r i1,...,r in ; β 1,..., β p ; out(r i. Dabei berechnet P eine partiell arithmetische Funktion [ P ] : N n ---> N mit [P] := [out (r i ] [ b ] [ in (r i1,...,r in ] 24
25 URM-berechenbar Definition: f : N n - - -> N heißt URM-berechenbar, wenn ein URM-Programm P existiert mit [ P ] = f. [ in (r i1,...,r in ] [ P ] N n > N Z [ b ] [out (r i ] Z [ P ] Eingabewerte - - -> Ausgabewert [ in (r i1,...,r in ] [out (r i ] Startzustand [ b ] Endzustand 25
26 Beispiel (3 Es sollen zwei Zahlen x 1 und x 2 addiert werden. P = in(r 1, r 2 ; b; out(r 3 berechnet die Addition mit [ P ] : N > N, [ P ] (x,y = x+y wobei b= 1: r 3 0 2: if r 1 = 0 goto 6 3: r 1 r 1-1 4: r 3 r : goto 2 6: if r 2 = 0 goto 10 7: r 2 r 2-1 8: r 3 r : goto 6 26
27 Beispiel (3 [ P ] (2,1 = [ out(r3 ] [ b ] [ in(r 1,r 2 ] (2,1 = [ out(r3 ] [ b ] (z 0 mit: z 0 (0=1, z 0 (1=2, z 0 (2=1, z 0 (j=0 sonst [ b ] (z 0 ist definiert als die iterierte Zustandstransformation von b = (β 1,..., β p angewandt auf den Startzustand z 0. In Kurzschreibweise: Startzustand z 0 = (1,2,1,0,0,... 27
28 Beispiel (3 δ(b (1,2,1,0,0,... = [ r 3 0 ] (1,2,1,0,0,... = (2,2,1,0,0,... δ(b (2,2,1,0,0,... = [ if r 1 = 0 goto 6 ] (2,2,1,0,0,... = (3,2,1,0,0... δ(b (3,2,1,0,0... = [ r 1 r 1 1] (3,2,1,0,0... = (4,1,1,0,0... δ(b (4,1,1,0,0... = [ r 3 r ] (4,1,1,0,0... = (5,1,1,1,0,... δ(b (5,1,1,1,0,... = [ goto 2 ] (5,1,1,1,0,... = (2,1,1,1,0,... δ(b (2,1,1,1,0,... = [ if r 1 = 0 goto 6 ] (2,1,1,1,0,... = (3,1,1,1,0,... δ(b (3,1,1,1,0,... = [ r 1 r 1 1] (3,1,1,1,0,... = (4,0,1,1,0,... δ(b (4,0,1,1,0,... = [ r 3 r ] (4,0,1,1,0,... = (5,0,1,2,0,... δ(b (5,0,1,2,0,... = [ goto 2 ] (5,0,1,2,0,... = (2,0,1,2,0,... δ(b (2,0,1,2,0,... = [ if r 1 = 0 goto 6 ] (2,0,1,2,0,...= (6,0,1,2,0,... δ(b (6,0,1,2,0,... = [ if r 2 = 0 goto 10 ] (6,0,1,2,0,... = (7,0,1,2,0,... δ(b (7,0,1,2,0,... = [ r 2 r 2 1](7,0,1,2,0,... = (8,0,0,2,0,... δ(b (8,0,0,2,0,... = [ r 3 r ] (8,0,0,2,0,... = (9,0,0,3,0,... δ(b (9,0,0,3,0,... = [ goto 6 ] (9,0,0,3,0,... = (6,0,0,3,0,... δ(b (6,0,0,3,0,... = [ if r 2 = 0 goto 10 ] (6,0,0,3,0,... = (10,0,0,3,0,... 28
29 Beispiel (3 Die iterierte Zustandstransformation bricht an dieser Stelle ab, so dass gilt: [ b ] (z 0 = (10,0,0,3,0,... (Endzustand Setzen wir dies in die ursprüngliche Berechnung ein, so ergibt sich: [ P ] (2,1 = [ out(r3 ] [ b ] [ in(r 1,r 2 ] (2,1 = [ out(r3 ] [ b ] ((1, 2, 1, 0,... = [out(r3 ] (10, 0, 0, 3, 0,... = 3 29
30 Aufgabe Bestimmen Sie mit Hilfe der iterierten Zustandstransformation die Werte [P](2, 1 und [P](1, 2 für P = in(r1, r2; b; out(r1 mit b = 1: if r 2 = 0 goto 5 2: r 1 r 1-1 3: r 2 r 2-1 4: goto 1 30
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
MehrGrundlagen der Theoretischen Informatik: Übung 10
Grundlagen der Theoretischen Informatik: Übung 10 Joachim Selke Fachgebiet Theoretische Informatik Universität Hannover 20. Januar 2005 Turing-Maschinen als Rechenmaschinen gegeben sei eine Funktion f
MehrEinführung in die Informatik Turing Machines
Einführung in die Informatik Turing Machines Eine abstrakte Maschine zur Präzisierung des Algorithmenbegriffs Wolfram Burgard 1 Motivation und Einleitung Bisher haben wir verschiedene Programmiersprachen
MehrDank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung
Dank Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Diese Vorlesungsmaterialien basieren zum Teil auf den Folien zu den Vorlesungen von Katrin Erk (gehalten an der Universität
MehrTheoretische 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
MehrEinführung in die Informatik Turing Machines
Einführung in die Informatik Turing Machines Eine abstrakte Maschine zur Präzisierung des Algorithmenbegriffs Wolfram Burgard Cyrill Stachniss 1/14 Motivation und Einleitung Bisher haben wir verschiedene
MehrKapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren
Kapitel 1: Einleitung Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Gliederung Zum Begriff Informatik
MehrAuffrischung 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
Mehr3. RAM als Rechnermodell
3. RAM als Rechnermodell Motivation Wir möchten Berechnungsvorschriften (Algorithmen) formal beschreiben und deren Eigenschaften wie Korrektheit und Laufzeit analysieren Rechnermodell abstrahiert vom verwendeten
MehrEinführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
MehrEinführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Johannes Köbler Institut für Informatik Humboldt-Universität zu Berlin WS 2011/12 Die Registermaschine (random access machine, RAM) 0 I 0 1 I 1 2 I 2 m I m Programm
MehrAngewandte Mathematik am Rechner 1
Angewandte Mathematik am Rechner 1 SOMMERSEMESTER 2017 Kapitel 3 [Bildquellen: Wikipedia User David Madore, Inductiveload ] Grundlagen 2: Funktionen, Berechenbarkeit und emergente Komplexität Michael Wand
MehrEinführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einleitung Gliederung Zum Begriff Informatik Zum
MehrAlgorithmus. Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion.
Algorithmus Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion. Hier einige informelle Erklärungen zum Algorithmus P
MehrTheoretische 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
MehrBerechenbarkeit und Komplexität Vorlesung 11
Berechenbarkeit und Komplexität Vorlesung 11 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 7. Dezember 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 7.
Mehrn 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information
Mehr2. Imperative Programmierung und Berechenbarkeit - Registermaschinen -
2. Imperative Programmierung und Berechenbarkeit - Registermaschinen - 2.1 Definition 2.2 Loop-Programme 2.3 While Programme 2.4 While Programme und rekursive Funktionen Im Wesentlichen: Tafel! Maschinenmodell
MehrIII.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
MehrTuring-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
Mehr5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
5. Algorithmen K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 1. Berechne 2 n. Zu lösende Probleme 2. Berechne die Fakultät einer nat. Zahl: n! = 1 * 2 *... n 3. Entscheide,
MehrALP 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
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
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
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
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
MehrTheoretische Grundlagen der Informatik. Vorlesung am 07. November INSTITUT FÜR THEORETISCHE INFORMATIK
Theoretische Grundlagen der Informatik 0 07.11.2017 Torsten Ueckerdt - Theoretische Grundlagen der Informatik KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Frage Frage: Ist der
MehrAbschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
MehrMä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
MehrVon der Programmiersprache WHILE zum ersten Einstieg in Java
Von der Programmiersprache WHILE zum ersten Einstieg in Java Die Programmiersprache WHILE bildet den Kern jeder imperativen Programmiersprache. Man geht davon aus, dass die Ein- Ausgabe primitiv organisiert
MehrAlgorithmen 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
MehrBerechenbarkeit und Komplexität
Teil II: Berechenbarkeit und Komplexität Algorithmen und Komplexität 22. November 2016 Berechenbarkeitstheorie RAM-Maschine 1: M 1 1 2: M 0 1 3: M 0 M 0 M 1 4: M 2 M 2 M 1 5: GOTO 3 IF M 2 > 0. M 2 : M
MehrAlgorithmen und Komplexität, Teil II: Berechenbarkeit und Komplexität
Algorithmen und Komplexität, Teil II: Berechenbarkeit und Komplexität Ralph Keusch 21. November 2017 Berechenbarkeitstheorie RAM-Maschine 1: M 1 1 2: M 0 1 3: M 0 M 0 M 1 4: M 2 M 2 M 1 5: GOTO 3 IF M
MehrEinstieg imperative Programmierung auf Von-Neumann-Rechnern
Einstieg imperative Programmierung auf Von-Neumann-Rechnern Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung In diesem Kurs werden Sie die Grundlagen der Programmierung mit Java erlernen. Java ist eine imperative
Mehr11. Ü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 =
MehrÜbersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,
Vorlesung Höhere Programmiersprachen, WS 2003/04 Teil 2: Formale Semantik Axiomatische Semantik Inhaltsübersicht - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative Programmiersprachen
MehrWintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München
Informatik 1 Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München 1 0 Allgemeines Inhalt dieser Vorlesung: Einführung in Grundkonzepte der Informatik; Einführung in Denkweisen der Informatik;
Mehr6.4 Entscheidbarkeit. nein sein müssen, ist klar. THEO 6.4 Entscheidbarkeit 205/307 c Ernst W. Mayr
6.4 Entscheidbarkeit Wortproblem Leerheit Äquivalenz Schnittproblem Typ 3 ja ja ja ja DCFL ja ja ja nein (*) Typ 2 ja ja nein (*) nein Typ 1 ja nein (*) nein nein Typ 0 nein (*) nein nein nein (*) Diese
MehrBerechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme
Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität 29. November 2007 Turing-mächtige
MehrBerechenbarkeit 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
MehrGrundlagen der Modellierung und Programmierung, Übung
Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak
MehrFunktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik
Mehr8. Rekursive und primitiv rekursive Funktionen
8. Rekursive und primitiv rekursive Funktionen In diesem Abschnitt führen wir eine weitere (letzte) Formalisierung des Berechenbarkeitskonzeptes für Funktionen über den natürlichen Zahlen ein. Hatten wir
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 17.November 2011 INSTITUT FÜR THEORETISCHE 0 KIT 17.11.2011 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der
MehrÜberblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung
Teil I Einführung Überblick 1 Vorbemerkungen 2 Algorithmen 3 4 Historischer Überblick Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 1 1 Vorbemerkungen Was ist Informatik? Informatik
MehrMächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen und rekursive Funktionen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 16. November 2010 Berthold Vöcking, Informatik 1 () Vorlesung
Mehr1 Vom Problem zum Programm
1 Vom Problem zum Programm Ein Problem besteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen. mathematisch: Ein Problem beschreibt eine Funktion f : E A, mit
Mehr1 Vom Problem zum Program
Ein Problem besteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen. mathematisch: Ein Problem beschreibt eine Funktion f : E A, mit E = zulässige Eingaben und
MehrTheoretische Informatik 1
Theoretische Informatik 1 Die Komplexitätsklasse P David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Äquivalenz von RM und TM Äquivalenz, Sätze Simulation DTM
Mehr1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -
1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von
MehrTheoretische Informatik 1
Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung
Mehrn 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -
n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen l
Mehr1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Ein Zitat zu Beginn Vor der Wahl, ein theoretischer Physiker oder ein Programmierer
Mehr1936 von Alan Turing zum theoretischen Studium der Berechenbarkeit eingeführt Besteht aus
//5 Abstrakte Maschinenmodelle: Turingmaschine (TM) 96 von Alan Turing zum theoretischen Studium der Berechenbarkeit eingeführt Besteht aus einem festen Teil ( "Hardware ) einem variablen Teil ( "Software
MehrGrundlagen der theoretischen Informatik
Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber)
MehrKonzepte der Programmiersprachen
Konzepte der Programmiersprachen Lehrstuhl Prof. Plödereder Eduard Wiebe Institut für Softwaretechnologie Abteilung Programmiersprachen und Übersetzerbau Sommersemester 2007 Programm-Ausführung Programmiersprachen
MehrTheoretische Informatik II. WS 2007/2008 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch. 1. Teilklausur Vorname:... Nachname:...
Theoretische Informatik II WS 2007/2008 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch 1. Teilklausur 11. 12. 2007 Persönliche Daten bitte gut leserlich ausfüllen! Vorname:... Nachname:... Matrikelnummer:...
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrMächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen
Mächtigkeit von LOOP-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 23 Die Programmiersprache LOOP Syntax Elemente eines LOOP-Programms Variablen
MehrProgrammiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -
Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =
MehrTheoretische Informatik SS 03 Übung 3
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
MehrBerechenbarkeit. Script, Kapitel 2
Berechenbarkeit Script, Kapitel 2 Intuitiver Berechenbarkeitsbegriff Turing-Berechenbarkeit WHILE-Berechenbarkeit Church sche These Entscheidungsprobleme Unentscheidbarkeit des Halteproblems für Turingmaschinen
MehrGliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
MehrDefinition der Kolmogorov-Komplexität I
Definition der Kolmogorov-Komplexität I Definition: Die Komplexität K A (x) eines Wortes x V + bezüglich des Algorithmus A ist die Länge der kürzesten Eingabe p {0, 1} + mit A(p) = x, d.h. in formalisierter
Mehr. 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:
Laufzeit von Quicksort im Mittel. Wir wollen die erwartete Effizienz von Quicksort ermitteln. Wir nehmen an, die Wahrscheinlichkeit, dass das gewählte Pivot-Element a j das k-t kleinste Element der Folge
MehrUnentscheidbarkeitssä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
MehrÜbersicht. 3.1 Datendarstellung durch Zeichenreihen. 3.2 Syntaxdefinitionen. 3.3 Algorithmen
Übersicht 3.1 Datendarstellung durch Zeichenreihen 3.2 Syntaxdefinitionen Einführung in die Programmierung 3. Daten und Algorithmen 31 Nachdem wir bisher in Kapitel 3 die Eigenschaft eindeutige Datendarstellung
MehrAchim Feldmeier, 23. Juni : Penrose nimmt dieses Argument auf in Shadows of the Mind.
Können Menschen mehr (Mathematik) als Computer? Turing - Penrose - Searle Achim Feldmeier, 23. Juni 2008 1931: Gödel beweist den Unvollständigkeitssatz. 1937: Turing beweist das Halteproblem. 1961: Lucas
MehrFunktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
MehrWir suchen Antworten auf die folgenden Fragen: Was ist Berechenbarkeit? Wie kann man das intuitiv Berechenbare formal fassen?
Einige Fragen Ziel: Wir suchen Antworten auf die folgenden Fragen: Wie kann man das intuitiv Berechenbare formal fassen? Was ist ein Algorithmus? Welche Indizien hat man dafür, dass ein formaler Algorithmenbegriff
Mehr1.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
MehrLogik und Beweisbarkeit
Logik und Beweisbarkeit VL 08 Martin Mundhenk Univ. Jena, Institut für Informatik 11. Januar 2019 Teil 3: Berechenbarkeitstheorie 1. Aussagenlogik 2. Arithmetik 3. Berechenbarkeitstheorie VL08: URM-berechenbare
Mehr1 Algorithmische Grundlagen
1 Algorithmische Grundlagen Klocke/17.03.2003 1.1 1.1 Begriffsklärung Fragen Begriffsklärungen Abstraktionsebenen für Algorithmen und Datenstrukturen Algorithmus Qualität von Algorithmen Klocke/17.03.2003
MehrLogik und Beweisbarkeit
Logik und Beweisbarkeit VL 10 Martin Mundhenk Univ. Jena, Institut für Informatik 22. Januar 2019 Vorlesung 11: Beweissysteme 3. Berechenbarkeitstheorie VL08: URM-berechenbare Funktionen und die These
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen
MehrGierhardt. Einführung:
Informatik 13: Gierhardt Theoretische Informatik I Einführung: Neben den Problemen und Fragen der praktischen Informatik, wo es in erster Linie um die Wahl der geeigneten Algorithmen und Datenstrukturen
MehrTheoretische Informatik
Kapitel 22: Theoretische Informatik Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Minimale Rechnermodelle Maschine mit wahlfreiem Zugriff Turing-Maschine Zeitkomplexität
MehrRekursive 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
MehrTheoretische Informatik. Berechenbarkeit
Theoretische Informatik Berechenbarkeit 1 Turing Maschine Endlicher Automat mit unendlichem Speicher Ein Modell eines realen Computers Was ein Computer berechnen kann, kann auch eine TM berechnen. Was
Mehr2. JAVA-Programmierung. Informatik II für Verkehrsingenieure
2. JAVA-Programmierung Informatik II für Verkehrsingenieure Problem-Algorithmus-Umsetzung Problemstellung Algorithmus Umsetzung 2 Beispiele für Algorithmen 3 Definitionsversuch Algorithmus Anleitung, wie
MehrHalteproblem/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:
Mehr1.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
MehrFakultät Angewandte Informatik Lehrprofessur für Informatik Übungen zur Vorlesung Informatik I, Blatt 2 - Musterlösung
WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 31.10.2011 Prof. Dr. Robert Lorenz Übungen zur Vorlesung Informatik I, Blatt 2 - Musterlösung Aufgabe 5 * Wenden Sie den in der
Mehr1 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 WS 11/12 155 Überblick Zunächst einmal definieren wir formal den Begriff
MehrGrundlagen der Programmierung (Vorlesung 24)
Grundlagen der Programmierung (Vorlesung 24) Ralf Möller, FH-Wedel Vorige Vorlesung Anwendung im Bereich Compilerbau Inhalt dieser Vorlesung Turing-Maschinen Berechenbarkeitstheorie, Halteproblem Lernziele
Mehr1 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 139 Unentscheidbarkeit Überblick Zunächst einmal definieren wir formal
MehrKorrektheit imperativer Algorithmen
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Abschnitt 9 Korrektheit imperativer Algorithmen Skript zur Vorlesung Einführung in die Programmierung im Wintersemester
MehrReferat 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
Mehr3. Klausur Einführung in die Theoretische Informatik Seite 1 von 14
3. Klausur Einführung in die Theoretische Informatik Seite 1 von 14 1. Welche der folgenden Aussagen zur Verifikation nach Hoare ist richtig? A. Eine Formel, die sowohl vor der Ausführung des Programmes,
MehrKontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen
MehrAlgorithmentheorie 2. Vorlesung
Algorithmentheorie 2. Vorlesung Martin Dietzfelbinger 13. April 2006 FG KTuEA, TU Ilmenau AT 13.04.2006 Maschinenmodelle Registermaschinen (RAMs) bearbeiten Zahlen Turingmaschinen (TMn) bearbeiten Wörter/Strings/Zeichenfolgen
MehrAdventure-Problem. Vorlesung Automaten und Formale Sprachen Sommersemester Adventure-Problem
-Problem Vorlesung Automaten und Formale Sprachen Sommersemester 2018 Prof. Barbara König Übungsleitung: Christina Mika-Michalski Zum Aufwärmen: wir betrachten das sogenannte -Problem, bei dem ein Abenteurer/eine
Mehr