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
|
|
- Lilli Förstner
- vor 7 Jahren
- Abrufe
Transkript
1 Primitive Rekursion Basisfunktionen: Konstante Funktion: const Stelligkeit. Wert des Ergebnisses. Unabhängig von den Parametern. const (,, pr,(g,h) (,)) Stelligkeit. Projektion: proj Gibt die Komponente an, auf die abgebildet wird. proj (,, pr,(g,h) (,)) Komposition: comp, Gibt die Anzahl der Funktionen an, die miteinander verknüpft werden. Stelligkeit: ist immer gleich der Stelligkeit der verwendeten Funktionen. comp, (proj, proj, add) (,,) = add (proj (,,), proj (,,)) = add (,) =
2 Beispiel dafür, daß die Additionsfunktion primitiv rekursiv ist Die Additionsfunktion add: x, (n, m) n + m ist primitiv rekursiv, denn die folgende durch primitive Rekursion definierte Funktion ist aus der Klasse der primitiv rekursiven Funktionen, und berechnet add: add(0,m) = m+0 = m = g(m) g(m) = proj add(n+,m) = m+n+ = h(n, m, add(n,m)) h(n, m, add(n,m)) = comp, (proj, proj ; succ) [n+m und davon den Nachfolger =: +] Klasse der primitiv rekursiven Funktionen Die Klasse der primitiv rekursiven Funktionen ist aufgebaut aus drei Grundfunktionen und zwei Erzeugungsstrategien. Definition: Uwe Schöning: Theoretische Informatik kurzgefasst,. Auflage, S.09. Die Klasse der primitiv rekursiven Funktionen auf den natürlichen Zahlen ist induktiv wie folgt definiert: ) Alle konstanten Funktionen sind primitiv rekursiv. ) Alle identischen Abbildungen (Projektionen) sind primitiv rekursiv. ) Die Nachfolgerfunktion succ(n) = n+ auf den natürlichen Zahlen ist primitiv rekursiv. 4) Jede Funktion, die durch Einsetzung (Komposition) von primitiv rekursiven Funktionen entsteht, ist selber auch primitiv rekursiv. 5) Jede Funktion, die durch primitive Rekursion aus primitiv rekursiven Funktionen entsteht, ist primitiv rekursiv. Für eine primitiv rekursive Funktion f gilt: Primitive Rekursion Primitive Rekursion bedeutet, daß die Definition von f(n+,...) zurückgeführt wird auf f(n,...). Formal: f muss das Gleichungssystem der folgenden Form erfüllen: f (0,... ) = g (... ) f (n+,... ) = h (f(n,... ),...) wobei g und h bereits primitiv rekursive Funktionen sind. Dabei gilt: ist f n-stellig, so ist g n--stellig und h n+-stellig. Falls f durch eine primitive Rekursion definiert ist, hat sie die folgende allgemeine Form bzw. entspricht sie dem folgenden Schema: f(0, x,..., x r ) = g(x,..., x r ) f(n+, x,..., x r ) = h(f(n, x,..., x r ), n, x,..., x r ) Rekursive Funktion Eine rekursive Funktion ist eine Funktion, die durch eine endliche Menge von Regeln definiert und für verschiedenen Argumente mit Hilfe folgender Komponenten spezifiziert ist: Variablen, nichtnegativen ganzzahligen Konstanten, der Nachfolger-Funktion, der Funktion selbst sowie einem durch Komposition von Funktionen aus diesen erzeugtem Ausdruck. Die Klasse der rekursiven Funktionen ist identisch zur Klasse der partiell rekursiven Funktionen.
3 Primitiv rekursive Funktion Eine Funktion heißt primitiv rekursiv, wenn sie aus einer endlichen Anzahl von Anwendungen der Komposition und der primitiven Rekursion, angewandt auf die Konstante 0, die Nachfolger-Funktion oder eine Projektion P i (x,...,x n ) = x i, besteht. Jede primitiv rekursive Funktion ist eine total rekursive Funktion. Klasse der μ -rekursiven Funktionen: Uwe Schöning: Theoretische Informatik kurzgefasst,. Auflage, S.5: Definition: Die Klasse der μ -rekursiven Funktionen ist die kleinste Klasse von (eventuell partiellen) Funktionen, die die Basisfunktionen (konstante Funktionen, identische Abbildung, Nachfolgerfunktion) enthält und abgeschlossen ist unter Einsetzung, primitiver Rekursion und Anwendung des μ -Operators. k μ - Operator: μ f: Funktionen, die Funktionen in Funktionen abbilden, heißen Funktionale oder auch Operatoren. Durch den μ -Operator wird eine (durch das erste Argument einer Funktion f) beschränkten Suche nach einer Nullstelle der Funktion f realisiert. Eine echte Erweiterung der Klasse der primitiv rekursiven Funktionen wird durch Hinzunahme des μ -Operators erreicht. Sei f eine gegebene k+-stellige Funktion. Die durch Anwendung des μ -Operators auf f entstehende Funktion ist g: k mit g(x,...,x k ) = min n f(n, x,...,x k ) = 0 f(m, x,...,x k ) falls m n falls m < n Hierbei wird min = undefiniert gesetzt. Das heißt, durch Anwendung des μ -Operators können wirklich partielle Funktionen entstehen. Beispielsweise entsteht durch Anwendung des μ -Operators auf die zweistellige, konstante Funktion f(x,y) = die vollständig undefinierte Funktion Ω. k Mit μ f: bezeichnen wir die solcherart über die (k+)-stellige Funktion f definierte Funktion. Der μ -Operator minimalisiert das Rekursionsargument und prüft, ob das Rekursionsargument schon den Wert Null angenommen hat. Der μ -Operator ist ein Minimierungsoperator min(f(x)), der als das kleinste x definiert ist, für das f(x) = 0 gilt. Durch den μ -Operator können auch partielle Funktionen erzeugt werden. Die Anwendung des μ -Operator auf eine berechenbare Funktion führt wieder zu einer berechenbaren Funktion.
4 Primitiv rekursive Funktionen entsprechen den loop-algorithmen. Zur Definition rekursiver Funktionen, die den while-algorithmen entsprechen, vergegenwärtigen wir uns noch mal, daß bei Verwendung des Rekursionsschemas zur Berechnung von f(m,...) der Wert m die Rolle des Zählers für die Anzahl der Rekursionsschritte spielt. m entspricht bei der Umsetzung in einen loop-algorithmus dem Schleifenzähler. Die Verallgemeinerung zu while- Algorithmen erreichen wir, wenn wir m solange hochzählen, bis eine bestimmte Bedingung, z.b. f(m,...) = 0, erfüllt ist. Genau dazu wird der μ -Operator definiert. μ m: f(m, n,..., n k ) = min f(m, n,..., n k ) = 0 und m alle f(j, n,..., n k ) mit 0 j < m sind definiert μ m: f(m, n,..., n k ) ist undefiniert, wenn es kein solches m gibt, oder wenn beim Hochzählen m = 0,,,... zuerst ein Argument-Tupel (m, n,..., n k ) erreicht wird, für das f nicht definiert ist. Der μ-operator μ m: f(m, n,..., n k ) definiert im allgemeinen eine partielle Funktion. h(n,..., n k ). h ist zum Beispiel dann total, wenn f eine totale Funktion ist und es für jedes k- Tupel (n,..., n k ) mindestens einen Wert m mit f(m, n,..., n k ) = 0 gibt. Satz von Kleene Uwe Schöning: Theoretische Informatik kurzgefasst,. Auflage, S.6. Für jede n-stellige μ -rekursive Funktion f gibt es zwei (n+)-stellige, primitiv rekursive Funktionen p und q, so daß sich f darstellen lässt als f(x,...,x n ) = p(x,...,x n, μ q( x,...,x n )) Hierbei ist μ q die durch Anwendung des μ -Operators auf q entstehende (n-stellige) Funktion. P: Klasse der primitiv rekursiven Funktionen Erweiterung durch den μ - Operator R: Klasse der μ - rekursiven Funktionen P R R: Klasse der μ -rekursiven Funktionen P: Klasse der primitiv rekursiven Funktionen 4
5 Korollar Eine totale Funktion f:, für die nur an endlich vielen Stellen f(n) 0 gilt, ist primitiv rekursiv. Alle Funktionen aus der Klasse der primitiv rekursiven Funktionen sind total, weil die drei Grundfunktionen total sind, und die Erzeugungsstrategien Einsetzung und primitive Rekursion von totalen Funktionen wieder zu totalen Funktionen führen. Die Klasse der primitiv rekursiven Funktionen ist für die Charakterisierung der im intuitiven Sinn (Churche These) berechenbaren Funktionen nicht geeignet, weil die partiellen Funktionen ausgeschlossen sind Tatsächlich gibt es sogar totale Funktionen, die im intuitiven Sinn berechenbar, aber nicht primitiv rekursiv sind. Bekanntestes Beispiel dafür ist die Ackermann Funktion. Ackermann Funktion Die Ackermann Funktion ist nicht primitiv rekursiv, aber μ-rekursiv! Definition a(0,y) = y+ a(x,0) = a(x-,), x > 0 a(x,y) = a(x-, a(x,y-)), x, y > 0 Die Ackermann Funktion ist nicht primitiv rekursiv, aber μ -rekursiv. Für den Beweis braucht man mehrere Lemmata:. Lemma: y < a(x,y). Lemma: a(x,y) < a(x,y+). Lemma: a(x,y+) a(x+,y 4. Lemma: a(x,y) < a(x+,y) 5. Lemma: Für jedes LOOP-Programm gibt es eine Konstante k, so daß für alle n gilt : f P (n) < a(k,n). Die Ackermann Funktion ist nicht LOOP-berechenbar, sonder WHILE-berechenbar. Die Ackermann Funktion ist ein Beispiel dafür, daß es totale, berechenbare Funktionen gibt, die nicht primitiv rekursiv sind, denn es läßt sich zeigen, daß die Ackermann Funktion schneller wächst als jede primitiv rekursive Funktion. In einem loop-algorithmus ist die Anzahl der ineinander geschachtelten Schleifen konstant und aus dem Programmtext ersichtlich. Mit while-algorithmen und allgemein mit jeder Turing-mächtigen Sprache lassen sich jedoch auch Schleifen formulieren, die eine variable Anzahl geschachtelter for-schleifen simulieren. a(, n) = n+ a(, n) = n+ eine for-schleife a(, n) = n+ zwei geschachtelte for-schleifen a(4, n) =.. drei geschachtelte for-schleifen 5
6 Das erste Argument charakterisiert die Schachtelungstiefe, denn es gilt für m : a(m,n) = a(m-, a(m-,... a(m-,)...)) Die Schachtelungstiefe von for-schleifen liefert zusammen mit der maximalen Eingabe eine Schranke für die größte von einem loop-algorithmus berechenbare Zahl. Es läßt sich zeigen, daß die Ackermann Funktion schneller wächst als alle Ergebnisse von loop-algorithmen bei gleicher Eingabe. Die Ackermann Funktion stellt also selbst eine solche Schranke dar. Die Ackermann Funktion ist nicht primitiv rekursiv. Beweis durch Widerspruch: Wir nehmen an, daß die Ackermann Funktion primitiv rekursiv ist. Dann ist auch die Funktion f(n) = ack(n,n) primitiv rekursiv, denn f entsteht aus ack durch Einsetzung (f(n) = ack(proj (n), proj (n))). Es gibt eine Konstante c mit f(n) < ack(c,n) für alle n. Betrachtet man nun speziell n = c, so folgt ack(c,c) = f(c) < ack(c,c), was ein Widerspruch ist. Ein einfaches Programm in Java. zur Berechnung der Ackermann Funktion. Die Parameter können über die Konsole eingegeben werden. import java.io.*; public class Ackermann { static int a, b; static int Ack(int m, int n) { if ((m==0) && (n>0)) return (n+); else if((n==0) && (m>0)) return (Ack(m-,)); else return (Ack(m-, Ack(m, n-))); public static void main (String args[]) { InputStreamReader in = new InputStreamReader(System.in); BufferedReader puffer = new BufferedReader (in); System.out.println("\nBitte geben Sie zwei natuerliche Zahlen ein."); try { int x, y; System.out.println("\nDer erste Parameter ist:"); a = new Integer(puffer.readLine()).intValue(); System.out.println("\nDer zweite Parameter ist:"); b = new Integer(puffer.readLine()).intValue(); System.out.println("\nDas Ergebnis von Ack("+a+","+b+") ist:"); System.out.println(Ack(a,b)); catch (IOException e) { e.printstacktrace(); 6
7 Minimalisierung Bei der Minimalisierung ist das Rekursionsargument gesucht, für das die Funktion Null ergibt. Eine Minimalisierung durchführen heißt, zu prüfen, ob die Funktion den Wert Null hat. Bekannte primitiv rekursive Funktionen add(n,m) sub(n,m) mult(n,m) succ(n) hoch(n,m) turm(n,m) minus(n,m) m(n) Imperative Programmierung in Modula von primitiv rekursiven Funktionen PROC const 0 (n : CARD) : CARD; RETURN 0 PROC proj (n, n, n : CARD) : CARD; RETURN n PROC proj (n, n, n : CARD) : CARD; RETURN n PROC P (n, n, n : CARD) : CARD; RETURN n add (proj (n, n, n ), proj (n, n, n ) n n P: add (n, n ) PROC P (n, n : CARD) : CARD; VAR x, i : CARD; x : = const (n 0 ); FOR i := TO n DO x := P ( I-, n, x) 7
8 PROC proj (n : CARD) : CARD; RETURN n PROC suc (n : CARD) : CARD; RETURN n + PROC P (n, n, n : CARD) : CARD; RETURN suc (proj (n, n, n )) PROC P4 (n, n : CARD) : CARD; VAR x, i : CARD; x : = proj (n ); FOR i := TO n DO x := P ( i -, n, x) PROC P (n, n, n : CARD) : CARD; RETURN n + PROC P4 (n, n : CARD) : CARD; VAR x, i : CARD; x : = n ; FOR i := TO n DO x := x + PROC P (n, n : CARD) : CARD; VAR x, i : CARD; x : = 0; FOR i := TO n DO x := P4 ( n, x) PROC P (n, n : CARD) : CARD; VAR x, i, i, x, n, n : CARD; x : = 0; 8
9 FOR i := TO n DO n := n ; n := x; x := n `; FOR i` := TO n` DO x` := x` + x := x` Beispiel Gegeben ist die primitiv rekursive Funktion in Termdarstellung: f = pr, (const, comp,(comp, (proj, const ;add),proj ;mult)) mult ist hierbei definiert als mult(n,m) = n m und add sei add(n,m) = n+m; beide Funktionen können als bekannte primitiv rekursive Funktionen genutzt werden. a) Geben Sie eine Abwicklung des Schemas für das Argumentpaar (,) an. f(,) = pr, (g,h) (,) = pr, (const, comp,(comp, (proj, const ;add),proj ;mult)) (,) = comp, (comp, (proj, const ;add), proj ;mult) (,, pr,(g,h) (,)) = mult (comp, (comp, (proj, const ;add)) (,, pr,(g,h) (,), proj (,, pr,(g,h) (,)) = mult (add (proj (,, pr,(g,h) (,)), const (,, pr,(g,h) (,)), proj (,, pr,(g,h) (,)) = mult (add (,), pr, (g,h)(,)) = mult (4, pr, (g,h)(,)) = 4 pr, (g,h)(,) pr, (g,h)(,) = pr, (const, comp,(comp, (proj, const ;add),proj ;mult)) (,) = comp, (comp, (proj, const ;add),proj ;mult)) (0,, pr,(g,h) (0,)) = mult (comp, (proj, const ;add) (0,, pr,(g,h) (0,), proj (0,, pr,(g,h) (0,))) = mult ( add (proj (0,, pr,(g,h) (0,)), const ), proj (0,, pr,(g,h) (0,))) = mult (add(,), pr, (g,h) (0,))) = mult (4, pr, (g,h) (0,)) = 4 pr, (g,h)(0,)) pr, (g,h)(0,) = pr, (const, comp,(comp, (proj, const = const (0,) = ;add),proj ;mult)) (0,) 4 pr, (g,h)(,) = 4 4 pr, (g,h)(0,) = 4 4 = 4 = (+) 9
Primitiv rekursive und µ-rekursive Funktionen
Primitiv rekursive und µ-rekursive Funktionen Loop-, While- und Goto-Programme sind vereinfachte imperative Programme und stehen für imperative Programmiersprachen, bei denen Programme als Folgen von Befehlen
Mehr1.3 Primitiv rekursive und µ-rekursive Funktionen
Definition 1.11 Die Klasse der primitiv rekursiven Funktionen (a) Basisfunktionen: (1.) die konstanten Funktionen c (c N) (2.) die Projektionen Π m i (x 1,...,x m ) = x i (1 i m) (3.) die Nachfolgerfunktion
MehrRekursive und primitiv rekursive Funktionen. Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen
Rekursive und primitiv rekursive Funktionen Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen IDEE: Definiere eine Klasse von (partiell) berechenbaren Funktionen über N induktiv
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
MehrPrimitiv rekursive und µ-rekursive Funktionen
Primitiv rekursive und µ-rekursive Funktionen Slide 1 Primitiv rekursive und µ-rekursive Funktionen Hans U. Simon (RUB) Email: simon@lmi.rub.de Homepage: http://www.ruhr-uni-bochum.de/lmi Primitiv rekursive
MehrTheorie der Informatik
Theorie der Informatik 15. primitive Rekursion und µ-rekursion Malte Helmert Gabriele Röger Universität Basel 22. April 2015 Überblick: Vorlesung Vorlesungsteile I. Logik II. Automatentheorie und formale
MehrPrimitiv rekursive Funktionen
Primitiv rekursive Funktionen Primitiv rekursive Funktionen Historisch: Die Einführung der primitiven Rekursivität war ein erster (und erfolgloser) Versuch, den Begriff der Berechenbarkeit (oft synonym
MehrTheoretische Informatik II
Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Wintersemester 2007/2008 B. Beckert Theoretischen Informatik II: WS 2007/08 1 / 175 Dank Diese Vorlesungsmaterialien basieren
MehrFunktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I µ-rekursive Funktionen WS 2012/2013 Primitiv-rekursive Funktionen Jede primitiv-rekursive Funktion ist Loop-berechenbar. Das bedeutet, dass jede PR-Funktion in der Loop-Programmiersprache formuliert
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
MehrLOOP-Programme: Syntaktische Komponenten
LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=
Mehr1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit
Die Programmiersprache LOOP (i) Syntaktische Komponenten: Variable: x 0, x 1, x 2,... Konstanten: 0, 1, 2,... Trennsymbole: ; := Operationszeichen: + Schlüsselwörter: LOOP DO END (ii) LOOP-Programme: Wertzuweisungen:
MehrGTI. Hannes Diener. 18. Juni. ENC B-0123,
GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.
MehrProseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt. I. Einleitung Berechnungsmodelle LOOP, WHILE, GOTO, rekursive Funktionen
Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt I. Einleitung Berechnungsmodelle LOOP, WHILE, GOTO, rekursive Funktionen Berechenbarkeitsmodelle Welchen Sinn haben diese? Wie kann man effizient
MehrTheorie der Informatik Einleitung. Theorie der Informatik Basisfunktionen und Einsetzung Primitive Rekursion. 14.
Theorie der Informatik 16. April 2014 14. primitive Rekursion und µ-rekursion Theorie der Informatik 14. primitive Rekursion und µ-rekursion 14.1 Einleitung 14.2 Basisfunktionen und Einsetzung Malte Helmert
MehrALP I Primitiv-Rekursive Funktionen
ALP I Primitiv-Rekursive Funktionen WS 2012/2013 Äquivalenz vieler Berechnungsmodelle Effektiv Berechenbare Funktionen Mathematische Modelle Maschinelle Modelle λ-kalkül Kombinatorische Logik Allgemein
MehrMitschrift BFS WS 13/14
Mitschrift BFS WS 13/14 Stand: 4. Juni 2014 Dieses Skript zum Teil Primitive und µ-rekursion der Vorlesung Berechenbarkeit und Formale Sprachen im Wintersemester 2013/14 bei Prof. Wanka wurde von untenstehenden
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
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
Mehr6. Rekursive und primitiv rekursive Funktionen. Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen
6. Rekursive und primitiv rekursive Funktionen Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen IDEE: Definiere eine Klasse von (partiell) berechenbaren Funktionen über N
MehrTypen von Programmiersprachen
Typen von Programmiersprachen Berechenbarkeitstheorie: Formalisierung des intuitiven Berechenbarkeitsbegriffs man kann vier Typen von Programmiersprachen zum Berechnen von Zahlenfunktionen unterscheiden:
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 13. November 2006 Turing-mächtige
MehrBerechenbarkeits- und Komplexitätstheorie
Berechenbarkeits- und Komplexitätstheorie Verschiedene Berechenbarkeitsbegriffe, Entscheidbarkeit von Sprachen, Wachstumsordnungen und Komplexitätsklassen Inhaltsübersicht und Literatur Verschiedene Berechenbarkeitsbegriffe:
MehrSyntax 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:
MehrDie primitiv rekursiven Funktionen
Priv.-Doz. Dr.rer.nat.habil. Karl-Heinz Niggl Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Theoretische Informatik Fachgebiet Komplexitätstheorie und Effiziente
MehrLOOP-Programme: Syntaktische Komponenten
LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=
MehrTheorie der Informatik
Theorie der Informatik 15. Ackermannfunktion Malte Helmert Gabriele Röger Universität Basel 28. April 2014 Überblick: Vorlesung Vorlesungsteile I. Logik II. Automatentheorie und formale Sprachen III. Berechenbarkeitstheorie
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
MehrALP 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
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
MehrEinführung in die Theoretische Informatik
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2011 Lösungsblatt 9 25. Juli 2011 Einführung in die Theoretische Informatik
MehrTheoretische Informatik II
Theoretische Informatik II Einheit 4.2 Rekursive Funktionen 1. Primitiv- und µ-rekursive Funktionen 2. Analyse und Programmierung 3. Äquivalenz zu Turingmaschinen Berechenbarkeit auf N ohne Maschinenmodelle
MehrKlassenvariablen, Klassenmethoden
Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden
MehrZuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte
Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte while-statement erneut ausgeführt. Ist die Bedingung
MehrGrundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier
Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Grundlagen Theoretischer Informatik 2 Gesamtübersicht Organisatorisches; Einführung Ersetzungsverfahren:
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
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:...
MehrKapitel 5. Entscheidbarkeit und Berechenbarkeit. 5.1 Entscheidbarkeit
Kapitel 5 Entscheidbareit und Berechenbareit Wir wenden uns nun grundsätzlichen Fragen zu, nämlich den Fragen nach der prinzipiellen Lösbareit von Problemen. Dazu stellen wir auch einen Zusammenhang zwischen
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrEinführung in die Informatik I
Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing
MehrInstitut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar
MehrEinführung in die Theoretische Informatik
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2011 Lösungsblatt 8 18. Juli 2011 Einführung in die Theoretische Informatik
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 13. März 2017 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrPrimitiv rekursive Codier- und Decodierfunktionen
Primitiv rekursive Codier- und Decodierfunktionen Paarungsfunktionen, Codierung von Zahlenfolgen 6.26 Definition Die Cauchysche Paarungsfunktion, : N 2 N wird definiert durch x, y = ((x + y)(x + y + 1)
MehrVariablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 10.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 10.12.07 1 / 15
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende
MehrProgrammieren für Fortgeschrittene
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme Wintersemester 2011/12 Programmieren für Fortgeschrittene Rekursive Spezifikationen Die folgende
MehrInformatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17
Informatik 1 - Translation Studies in Information Technology INF1 TSIT MUSTERLÖSUNG: PFLICHTÜBUNG 1 Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17 Praktikum zur Vorlesung
MehrErste Java-Programme (Scopes und Rekursion)
Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
Mehr2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen
Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen
MehrTheoretische Informatik SS 03 Übung 5
Theoretische Informatik SS 03 Übung 5 Aufgabe 1 Im Buch von Schöning ist auf S. 106-108 beschrieben, wie eine Turing-Maschine durch ein GOTO-Programm simuliert werden kann. Zeigen Sie, wie dabei die Anweisungen
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben
Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Alexander Lochmann, Iman Kamehkhosh, Marcel Preuß, Dominic Siedhoff Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester
MehrTheoretische Informatik
Theoretische Informatik Prof. Meer, Dr. Gengler Aufgabenblatt 12 Besprechung in KW 03 / Abgabe in KW 04 Heften Sie unbedingt alle Blätter Ihrer Lösung zusammen und geben Sie oben auf dem ersten Blatt Ihren
MehrAusgewählte Kapitel Diskreter Mathematik mit Anwendungen
Wahlpflichtfach Bachelor Informatik 4. Semester Ausgewählte Kapitel Diskreter Mathematik mit Anwendungen Kurt-Ulrich Witt Sommersemester 2011 Kurt-Ulrich Witt Diskrete Mathematik Lektion 4 1/33 Inhaltsverzeichnis
MehrII.1.1. Erste Schritte - 1 -
! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrDie primitiv rekursiven Funktionen
Priv.-Doz. Dr.rer.nat.habil. Karl-Heinz Niggl Technische Universität Ilmenau Fakultät IA, Institut für Theoretische Informatik Fachgebiet Komplexitätstheorie und Effiziente Algorithmen J Die primitiv rekursiven
MehrEinführung in die Informatik I
Einführung in die Informatik I Berechenbarkeit und Komplexität Prof. Dr. Nikolaus Wulff Berechenbarkeit Im Rahmen der Turingmaschine fiel zum ersten Mal der Begriff Berechenbarkeit. Ein Funktion f heißt
Mehr6. REKURSIVE FUNKTIONEN Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen
EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK Prof. Dr. Klaus Ambos-Spies Sommersemester 2012 6. REKURSIVE FUNKTIONEN Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen Theoretische
MehrGOTO simuliert Turingmaschinen
GOTO simuliert Turingmaschinen Wir wissen bisher: LOOP ( GOTO = WHILE TM Jetzt zeigen wir, dass auch WHILE = TM gilt: Die Turingmaschine M =(Z,,,,z 1,, E) berechne f. Wir simulieren M mit einem GOTO-Programm
MehrLOOP-Programme 1. Def (Meyer/Ritchie). LOOP-Programme werden induktiv aufgebaut aus den (Basis-) Anweisungen. Führe P X-mal aus ) LOOP-Programme 2
LOOP-Programme 1 LOOP-Programme verwenden (jeweils) endlich viele Variablen aus VAR := {X 0,X 1,X 2,...}, oft nur mit X,Y,Z,U,V,W bezeichnet, die als Register fungieren. Slide 1 Def (Meyer/Ritchie). LOOP-Programme
MehrInstitut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 12. März 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrTheoretische Informatik II
Theoretische Informatik II Einheit 5.2 Rekursive Funktionen 1. Primitiv- und µ-rekursive Funktionen 2. Analyse und Programmierung 3. Äquivalenz zu Turingmaschinen Berechenbarkeit ohne Maschinen Welche
MehrGTI. µ-rekursive Funktionen. Hannes Diener. 20. Juni 2. Juli. ENC B-0123,
GTI µ-rekursive Funktionen Hannes Diener ENC B-0123, diener@math.uni-siegen.de 20. Juni 2. Juli 1 / 31 µ-rekursive Funktionen Kommen wir als nächstes zu unserem dritten Ansatz zur Berechenbarkeit. Diesmal
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
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
MehrEinstieg in die Informatik mit Java
1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden
MehrCoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.
CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)
MehrDie Klasse MiniJava ist in der Datei MiniJava.java definiert:
Die Klasse MiniJava ist in der Datei MiniJava.java definiert: import javax.swing.joptionpane; import javax.swing.jframe; public class MiniJava { public static int read () { JFrame f = new JFrame (); String
MehrTheoretische Informatik. Ackermann-Funktion. Ali Eyerta
Theoretische Informatik Ackermann-Funktion Ali Eyerta Inhalt Entstehungsgeschichte Bedeutung in der Theoretischen Informatik Ackermanns Idee Ackermann-Funktion Anwendungen Benchmark für rekursive Aufrufe
MehrProgrammierung für Mathematik HS11
software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren
MehrDef.: Die Menge der LOOP-Programme ist induktiv wie folgt definiert:
3. LOOP-, WHILE- und GOTO-Berechenbarkeit 3.1 LOOP-Programme Komponenten: Variablen: x 0, x 1, x 2,, y, z, Konstanten: 0, 1, 2, Trennsymbole: ; := Operationszeichen: +, - Schlüsselwörter: LOOP, DO, END
MehrJava Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.
Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 17 Aufgabe 1 Umwandeln von do while in for Schleife. Listing 1: aufgabe3 1.java 1 public
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrEinführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Teil 9: Ausnahmebehandlung Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 8. Dezember
MehrRekursive Funktionen
Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 8. September 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrBeispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme
Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,
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
MehrInformatik B von Adrian Neumann
Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000
Mehr2 Eine einfache Programmiersprache
2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir
MehrFakultät IV Elektrotechnik/Informatik
Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)
MehrHallo Welt für Fortgeschrittene
Hallo Welt für Fortgeschrittene Zahlentheorie, Arithmetik und Algebra II Benjamin Fischer Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Lineare Rekursion BigInteger Chinesischer
MehrPrimitive Rekursion. Alexander Hölzle
Primitive Rekursion Alexander Hölzle 14.01.2007 Inhaltsverzeichnis Motivation i 1 Rekursive Funktionen 1 1.1 Nicht berechenbare Funktionen........................ 1 1.2 Primitiv rekursive Funktionen.........................
MehrMathematische Rekursion
Rekursion Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die Funktion erscheint in ihrer eigenen Definition. Mathematische Rekursion o Viele mathematische
MehrTheoretische Informatik SS 03 Übung 4
Fakten aus Übung 3 Theoretische Informatik SS 03 Übung 4 In Übung 3 wurden einigen Fakten bewiesen, die für diese Übung benötigt werden. Folgende Konstrukte können mit LOOP-Programmen simuliert werden:
MehrOOP Aufgabenblatt 4 2. November 2013
1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 4 2. November 2013 Aufgabe 1 1. Wenn eine Funktion f in der Mathematik, Physik oder sonst wo definiert ist als f(x) = 2 x + 5 kann man dann f(5), f(x), f(2 x),
MehrVorkurs Informatik WiSe 17/18
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann
MehrKlausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09
Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2008/09 23. Februar 2009 Aufgabe 1 2 3 4 5 5 5 Summe mögliche Punkte 10 15 25 20 20 15 15 120 erreichte Punkte Note: Hinweise: Diese
MehrMusterlösung Stand: 5. Februar 2009
Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)
Mehr3. Grundlegende Sprachkonstruktionen imperativer Programme
3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 4. Nov. 2015 2 Schwerpunkte
Mehr