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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 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 etwas nachweisen? - ndet Turingmaschine,... Modell / Reduktion mit berechenbaren Problemen Hilfsmittel - natürliche Zahlen, einfache Konzepte darauf (Wiederholung, Schachtelung, Variablen, Wertemanipulation) -> einfache Beweise für Machbarkeit Problem -> Lösung findbar? Existiert überhaupt? -> Einfacher Nachweis, wenn Lösung gefunden oder bewiesen dass es eine gibt. Kann man wissen, ob es eine Lösung gibt? Usw.

2 Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt II. LOOP, WHILE, GOTO Definition der LOOP Sprache Variablen: x 0, x 1, x 2,... Konstanten: 0, 1, 2,... Trennsymbole: ( ; ), ( := ) Operationszeichen: + - Schlüsselwörter: LOOP, DO, END induktive Definition der Syntax: 1. Eine Wertzuweisung der Form x i := x j ± c, wobei c eine Konstante ist, ist ein LOOP-Programm. 2. Falls P 1 und P 2 LOOP-Programme sind, so ist auch P 1 ; P 2 ein LOOP-Programm. 3. LOOP x i DO P END, wobei P ein LOOP-Programm ist und x i eine Variable, ist ein LOOP-Programm. Semantik: Das Programm startet mit Eingabevariablen n 1,..., n k aus N in den Variablen x 1,... x k, während alle anderen Variablen des Programms mit Null starten. Das Ergebnis der Berechnungen steht am Ende in x 0. Die Wirkweise der Semantik erschließt sich weitgehend intuitiv, die Loop-Schleife allerdings benutzt den Wert von x i vor dem Ausführen von P und führt das Programm so oft aus, d.h. Es gibt keine Kontrollmöglichkeit dynamischer Natur, die Zahl der Wiederholungen kann nicht aus der Schleife selbst heraus beeinflußt werden. Definition (LOOP-berechenbar): Eine Funktion f : N k -> N heißt LOOP-berechenbar, wenn es ein LOOP-Programm P gibt, dass für alle x aus N k als Eingabewert(e) mit f(x) in x 0 stoppt. Feststellungen: Alle LOOP-berechenbaren Funktionen sind total. Es gibt totale intuitiv berechenbare Funktionen, die nicht LOOP-berechenbar sind. ( vgl. Ackermannfunktion, letzter Vortrag )

3 Die WHILE Sprache Die WHILE-Sprache erweitert die LOOP-Sprache um das Konzept der WHILE- Schleife : WHILE x i 0 DO P END ( Das WHILE-Programm P wird sooft ausgeführt, wie der Variablen-Wert x i nicht Null ist. ) Ansonsten sind alle Konzepte aus LOOP in WHILE übertragen. ( Die Folgerungen allerdings ändern sich, LOOP... END wird eigentlich hinfällig. ) Definition ( WHILE-berechenbar ): Eine Funktion f : N k -> N heißt WHILE-berechenbar, falls es ein WHILE- Programm P gibt, dass für alle x aus N k als Eingabewert(e), für die f definiert ist, mit f(x) in x 0 hält, und nicht hält für alle x, für die f nicht definiert ist. Endlosschleifen sind mit dem WHILE-Konstrukt offensichtlich möglich. Satz: Turingmaschinen können WHILE-Programme simulieren, also ist jede WHILE-berechenbare Funktion auch Turing-berechenbar. [ Beweis / eher nicht, keine Zeit dafür ] Die GOTO Sprache Ein GOTO-Programm besteht aus einer Folge von Anweisungen, die jeweils einer eigenen Marke zugeordnet sind: M 1 : A 1 ; M 2 : A 2 ;... ; M k : A k Für A 1..k sind folgende Anweisungen möglich: Wertzuweisungen: x i := x j ± c ( c ist Konstante ) unbedingter Sprung: GOTO M i bedingter Sprung: IF x i = c THEN GOTO M j Stopanweisung: HALT Die Semantik erschließt sich intuitiv, das Programm startet mit A 1, bei einem Sprung wird an der entsprechenden Marke fortgefahren, ohne Sprung an der nächsten. HALT beendet das Programm. Endlosschleifen sind offensichtlich möglich.

4 Definition ( GOTO-berechenbar ): [ analog zu WHILE-berechenbar ] Eine Funktion f : N k -> N heißt GOTO-berechenbar, falls es ein GOTO-Programm P gibt, dass für alle x aus N k als Eingabewert(e), für die f definiert ist, mit f(x) in x 0 hält, und nicht hält für alle x, für die f nicht definiert ist. Satz: Jedes WHILE-Programm kann durch ein GOTO-Programm simuliert werden. D.h., Jede WHILE-berechenbare Funktion ist auch GOTO-berechenbar. [ Beweis, eher Skizze, einfacher] Satz: Jedes GOTO-Programm kann durch ein WHILE-Programm simuliert werden. D.h., Jede GOTO-berechenbare Funktion ist auch WHILE-berechenbar. ( Anmerkung: Das geht mit nur einer WHILE-Schleife ) [ Beweis, geht mit einer WHILE-Schleife ] Satz ( Kleenesche Normalform für WHILE-Programme ): Jede WHILE-berechenbare Funktion kann durch ein WHILE-Programm mit nur einer WHILE-Schleife berechnet werden. [ Beweis, nach vorherigem Beweis WHILE->GOTO->WHILE] Satz: GOTO-Programme können Turingmaschinen simulieren. Damit ist jede Turing-berechenbare Funktion auch GOTO-berechenbar. Beweis (mit 2-Zähler Maschine, siehe Vortrag 2 Zähler sind universell ): Problem: Wir brauchen Funktion c( x, y ) zur bijektiven Codierung zweier natürlicher Zahlen in eine und ihre Umkehrfunktionen e( n ) und f( n ) aus dem Teil rekursive Funktionen, sowie die Darstellung < x 1, x 2,..., x k > = c( x 1, c( x 2,..., c( x k, 0 )... ) ), und dessen Umkehrfunktionen d i, welche dort ausführlicher beschrieben sind. Die Funktionen c, e, f sind LOOP-berechenbar, wie später gezeigt wird. Wir drücken die Funktionalität der Maschine durch GOTO-Ausdrücke aus. Das Eingabeband wird über eine Eingabevariable x = < x 1, x 2,..., x k > simuliert, wobei x i die Zeichen des Eingabealphabets sind. Die beiden Zähler sind durch zwei Variablen p 1, p 2 repräsentiert. Es gibt eine Variable q um den Zustand anzugeben (Zahl, 0 = Start). Es gibt eine Variable c, die das zuletzt gelesene (aktuelles) Zeichen enthält. Eine Variable a, die angibt, ob der Zustand akzeptierend ist. Dazu eine gewisse Menge an Hilfsvariablen. Die d Zustände q i des Automaten und ihre Übergänge werden als codiertes verschachteltes Tupel in der Eingabevariable z mitgeliefert:

5 z = < cq 1, cq 2,..., cq d >, wobei cq i jetzt wieder ein Tupel ist, dass die nötigen Informationen enthält: ( Akzeptierend 0 1, ( u 1, u 2,..., u m ) ) u i geben die Übergänge an, also wieder ein Tupel mit: ( ( Eingabezeichen, p 1 = 0, p 2 = 0 ), Ziel-Zustand, Δ p 1, Δ p 2 ). Das Programm simuliert jetzt die 2-Zählermaschine, die als codiertes Tupel eingegeben wurde. Der Startzustand muss am Anfang stehen, daher ist q auf 0 gesetzt ( aktueller Zustand ). a wird gesetzt über e( d 0 ( z ) ). Skizze: Das Programm wird initialisiert mit q = 0 und geht dann in eine Hauptschleife: Hilfsvariable(Übergangsfunktionen) wird gesetzt: f( d q ( z ) ) a wird gesetzt mit e( d q ( z ) ) Gibt es ein Eingabezeichen so wird c = e( x ) und x = f( x ) gesetzt. Gibt es keins ( x = 0 ): Die Ausgabe wird gesetzt ( nach Wunsch, auf a oder auf < p 1, p 2 > ), wenn das Programm bei nicht-akzeptieren nicht halten soll, dann gehe in Endlosschleife. ( c, p 1 = 0, p 2 = 0 ) wird codiert und der Reihe nach mit den Übergangsfunktionen d.h. e( Übergangsfunktion[ Schleifenvariable ] ) verglichen, bei Übereinstimmung werden Δ p 1, Δ p 2 ausgelesen d 2,3 ( f( Ü...) ) und angewendet. Q wird auf den Zielzustand gesetzt d 1 ( f( Ü...) ). Fazit: Die Klassen der GOTO- / WHILE- / Turing-berechenbaren Funktionen sind gleich. Die Klasse der (totalen) WHILE-berechenbaren Funktionen enthält die Klasse der LOOP-berechenbaren Funktionen als echte Teilmenge.

6 Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt III.Rekursive Funktionen Induktive Definition der Klasse der primitiv rekursiven Funktionen: (1) Alle Konstanten Funktionen sind primitiv Rekursiv. (2) Alle identischen Abbildungen (Projektionen) sind primitiv rekursiv. (3) Die Nachfolgerfunktion s(n) = n + 1 auf den natürlichen Zahlen ist primitiv rekursiv. (4) Funktionen, die durch Einsetzung (Komposition) von primitiv rekursiven Funktionen entstehen, sind primitiv rekursiv. (5) Funktionen die durch primitive Rekursion aus primitiv rekursiven Funktionen entstehen, sind primitiv rekursiv. D.h. So eine Funktion f erfüllt das Gleichungssystem: f( 0,... ) = g (... ) f( n + 1,... ) = h( f( n,... ),... ) Mit primitiv rekursiven Funktionen g und h. Hier geht also generell um Funktionen von N k nach N. Die Funktionen unter 1. bis 3. werden Basisfunktionen genannt. Feststellungen: Addition, Multiplikation und modifizierte Subtraktion sind primitiv rekursiv (siehe Vorlesung). Primitiv rekursive Funktionen sind total. Satz: Die Klasse der primitiv rekursiven Funktion stimmt genau mit der Klasse der LOOPberechenbaren Funktion überein. [ Beweis weiter unten ] Natürliche Zahlen (Hilfsmittel für Beweis): Wir benutzen eine Funktion, die zwei natürliche Zahlen bijektiv auf eine abbildet. Diese geht auf Cantor zurück ( Abzählen von N 2 über die Diagonalen ) und wird auch Cantorsche Paarungsfunktion genannt (Wikipedia). c( x, y ) = ( x + y + 1 ) * ( x + y ) / 2 + x [ Folie / Tafel zur Veranschaulichung] [Beweis der Bijektivität hier nicht ] c ist primitiv rekursiv ( Addition, Multiplikation ).

7 Dieses ermöglicht uns sofort beliebig viele natürliche Zahlen in einer zu kodieren, und zwar durch Mehrfachanwendung von C, für ein k+1-tupel: < n 0, n 1,..., n k > := c( n 0, c( n 1,..., c( n k, 0 )... ) ) Also immer c( Argument, Kodierung des Rests durch c ). Da c bijektiv ist, können wir unter der Bedingung, dass c(x,y) = n gelte, die Umkehrfunktionen e und f zu c benutzen: e( n ) = x und f( n ) = y, also c( e(n), f(n) ) = n. Und damit auch die Umkehrfunktionen d 0,..., d k für ein n = < n 0, n 1,..., n k > angeben, die uns die Komponenten liefern: d 0 (n) = e( n ) = n 0 d 1 (n) = e( f(n) ) = n 1... d k (n) = e( f k (n) ) = n k [ f wird k-mal angewendet auf n ] Vorsicht mit d k+1 (n), das liefert wieder Null, es ist also eine Prüfung [f(n)=0] nötig, wenn man nicht weiß, wie lang das Tupel ist, welches in der Zahl n kodiert ist. (!) Diese Kodierung hat die Folge, dass man k-stellige Funktionen als einstellige Funktion darstellen kann, so dass es überhaupt erst sinnvoll ist Berechenbarkeit allgemein mit Funktionen auf den Natürlichen Zahlen beschreiben zu wollen. Wichtige Feststellung: Die Umkehrfunktionen von c ist auch primitiv rekursiv! Daraus folgt auch schnell, dass d i primitiv rekursiv sind, und wir haben ein gutes Hilfsmittel für folgende Beweise. Begriff der primitiven Rekursivität auf Prädikate erweitern (zunächst einstellig, mehrstellig ist aber plausibel), eigentlich über die charakteristische Funktion ( schreiben Prädikat stattdessen). Für ein einstelliges Prädikat P( x ) definieren wir den beschränkten max-operator, q( n ) := max{ x n P( x ) } Falls das Maximum nicht existiert soll q(n) einfach Null liefern, damit q total ist. q( 0 ) = 0 q( n + 1 ) = q( n ) + P( n + 1 ) * ( n + 1 q( n ) ) [Dieses entspricht: falls P(n + 1 ) : q( n + 1 ) = n+1, sonst: q( n + 1 ) = q( n ) ] Analog: beschränkter Existenzquantor... Für ein gegebenes Prädikat P( x ) soll Q( n ) wahr sein ( Q(n)=1 ), genau dann wenn es ein x n gibt, mit P( x ) : Q( 0 ) = P( 0 ) Q( n + 1 ) = P( n + 1 ) + Q( n ) - P( n + 1 ) * Q( n ) Q und q sind primitiv rekursiv, wenn die verwendeten Prädikate P auch primitiv rekursiv sind. Erweiterung auf mehrstellige Prädikate ist denkbar, wenn die weiteren Argumente auch in q/q dann vorkommen. Umkehrfunktionen zu e und f angeben: e ( n, m, k ) = max( x n y k : c( x, y ) = m } e( n ) = e ( n, n, n )

8 f ( n, m, k ) = max( y n x k : c( x, y ) = m } f( n ) = f ( n, n, n ) Damit sind e und f primitiv rekursiv. Beweis zum Satz ( primitiv rekursiv <-> LOOP-berechenbar ): <- : Sei f : N r -> N LOOP-berechenbar. P sei ein LOOP-Programm, das f berechnet. Die Programmvariablen von P seien x 0, x 1,..., x k (k r). Wir zeigen, dass es eine primitiv rekursive Funktion g P : N -> N gibt, die die Wirkung von P auf die Werte der Programmvariablen beschreibt, wie folgt: Wenn a 0, a 1,..., a k die Werte der Programmvariablen vor Ausführung sind, und b 0, b 1,..., b k deren Werte nach Ausführung des Programms, so gilt: g P ( < a 0, a 1,..., a k > ) = < b 0, b 1,..., b k > Das ganze induktiv über den Aufbau von P: Falls P die Form x i := x j ± c, so ist g P ( n ) = < d 0 ( n ),..., d i-1 ( n ), d j ( n ) ± c, d i+1 ( n ),..., d k ( n ) > Falls P die Form hat Q ; R, so ist g P ( n ) = g R ( g Q ( n ) ). g Q und g R gibt es nach Induktionsvoraussetzung, daher ist das eine Komposition von primitiv rekursiven Funktionen. Falls P die Form LOOP x i DO Q END hat: Nach I.V. Gibt es eine Funktion g Q, die Q berechnet. Wir definieren eine Hilfsfunktion h: h( 0, x ) = x h( n + 1, x ) = g Q ( h( n, x ) ) h gibt den Zustand der Programmvariablen x = < x 0, x 1,..., x k > nach n Anwendungen von Q wieder, damit ist g P wie folgt gefunden: g P ( n ) = h( d i ( n ), n ) Damit können wir f ausdrücken: f( n 1,..., n r ) = d 0 ( g P ( < 0, n 1,..., n r, 0,..., 0 > ) ). (Am Ende stehen k-r Nullen.) -> : Induktiv über den Aufbau der primitiv rekursiven Funktionen: Basisfunktionen: einfach, fast nach Definition. Einsetzung: durch Hintereinanderausführung von LOOP Programmen für die anderen primitiv rekursiven Funktionen, die ja nach Induktionsvoraussetzung existieren. Dabei werden die Zwischenergebnisse jeweils in separaten Variablen gespeichert ( Adapter -Programm ). f entstand durch primitive Rekursion und hat die Form: f( 0, x 1,..., x r ) = g( x 1,..., x r ) f( n + 1, x 1,..., x r ) = h( f( n, x 1,..., x r ), n, x 1,..., x r ) f kann durch ein LOOP-Programm mit einer Schleife berechnet werden: y := g( x 1,..., x r ) ; k := n ; LOOP n DO k := k 1 ; y := h( y, k, x 1,..., x r ) END ( Hier verkürzt: für g und h existieren bereits LOOP-Programme, nach I.V. )

9 Der μ-operator und die Klasse der μ-rekursiven Funktionen Sei f eine k+1-stellige Funktion. Der μ-operator bildet f auf eine k-stellige Funktion g ab: g( x 1,..., x k ) = min{ n f( n, x 1,..., x k ) = 0 und f.a. m<n ist f( m, x 1,..., x k ) definiert } Zusätzlich soll min Ø als undefiniert gesetzt sein. Damit können echte partielle Funktionen entstehen! (Beispiel: Konstante Funktionen die nicht Null sind) Definition ( Klasse der μ-rekursiven Funktionen ): Die Klasse der μ-rekursiven Funktionen ist die kleinste Klasse von Funktionen, die die Basisfunktionen ( konstante Funktionen, Projektionen, Nachfolgerfunktion ) enthält und abgeschlossen ist unter Einsetzung, primitiver Rekursion und Anwendung des μ-operators. Satz: Die Klasse der μ-rekursiven Funktionen stimmt genau mit der Klasse der WHILEberechenbaren Funktionen überein ( damit auch mit GOTO-, Turing- ). Beweis: Dieser Beweis funktioniert analog zum Beweis für LOOP-Berechenbarkeit gegenüber primitiver Rekursivität, und führt daher nur das Konzept für die WHILE-Schleife und den μ-operator vor: <- : Falls P ein WHILE-Programm der Form WHILE xi 0 DO Q END ist, benutzen wir wieder eine Hilfsfunktion h( n, x ), die den Zustand der Programmvariablen x = < x 1,..., x k > nach n Ausführungen von Q wiedergibt: g P = h( μ( d i h )( x ), x ) [ μ( d i h )( x ) gibt gerade die minimale Wiederholungszahl des Programms Q wieder, für die x i den Wert 0 liefert. ] -> : g sei die durch Anwendung des μ-operators auf eine Funktion f entstandene Funktion. Also g = μf, so berechnet das folgende Programm g: x 0 := 0 ; y := f( 0, x 1,..., x n ) ; WHILE y 0 DO x 0 := x ; y := f( x 0, x 1,..., x n ) END ( Für f existiert nach I.V. Bereits ein WHILE-Programm ) Satz (Kleene): Für jede n-stellige μ-rekursive Funktion f gibt es zwei (n+1)-stellige, primitiv rekursive Funktionen p und q, so dass sich f darstellen lässt als: f( x 1,..., x n ) = p( x 1,..., x n, μq( x 1,..., x n ) ) [ μq ist die n-stellige, durch Anwenden des Operators auf q entstandene Funktion. ] ~ ohne Beweis.

10 Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt IV.Die Ackermannfunktion Ackermann gab 1928 eine Funktion an, die intuitiv berechenbar ist und sogar total, aber nicht LOOP-berechenbar. [ siehe letzter Vortrag ] Vereinfachte Form der Definition: a( 0, y ) = y + 1 a( x, 0 ) = a( x - 1, 1 ) a( x, y ) = a( x 1, a( x, y -1 ) ) Die Idee war, eine Folge zu kreieren, die wächst, wie etwa: a+b, a*b, a b,... (...?). Die Tabelle zeigt für x,y den Wert und die Zahl der benötigten rekursiven Aufrufe. Am Beispiel a( 4,1 ) sieht man gut die Definition und das Wachstum. a( 4, 1 ) = a( 3, a( 4, 0 ) ) = a( 3, 13 ) = a( 4, 4 ) ist größer als die Zahl der Atome im ganzen Universum (wie war sie noch?).

11 Zusammenfassung aus dem letzten Vortrag: Die Ackermannfunktion ist total. Lemma A: y < a( x, y ) Lemma B: a( x, y ) < a( x, y + 1 ) Lemma C: a( x, y + 1 ) a( x + 1, y ) Lemma D: a( x, y ) < a( x + 1, y ) Allgemeine Monotonie-Eigenschaft: Für x, x, y, y mit x x und y y gilt: a( x, y ) a( x, y ) Definition: Wir ordnen jedem LOOP-Programm P eine Funktion f P zu, so dass gilt: f P : N -> N, f(n) = max{ i ( n i ) i ( n i ) } i durchläuft die Indizes der in P vorkommenden Variablen. n i seien die Werte der im Programm benutzten Variablen x i mit n i =x i und zwar vor Ausführung des Programms, das ist also die Summe der Eingaben, da alle anderen Variablen dann Null sind. n i seien analog die Variablenwerte nach Ausführung des Programms. f P (n) berechnet also die maximal mögliche Summe der im Programm vorkommenden Variablen nach Ausführung, für alle Eingabevarianten, für die die Summe der Eingabevariablen kleiner oder gleich n ist. Lemma E: Für jedes LOOP-Programm P gibt es eine Konstante k,so dass für alle n gilt: f P (n) < a( k, n ) Satz: Die Ackermannfunktion ist nicht LOOP-berechenbar. [ Beweiskonzept: annehmen a sei LOOP-berechenbar, P berechne g(n) := a(n,n)... LEMMA E: g(n) f P (n) < a(k,n) => g(k) f P (k) < a(k,k) = g(k) Widerspruch.]

12 Satz: Es gibt totale, WHILE-berechenbare Funktionen, die nicht LOOP-berechenbar sind. (Beweis zum obigen Satz:) Die Ackermannfunktion ist WHILE-berechenbar. Wir benutzen eine Mischung aus WHILE-Sprache und dem Formalismus der μ- rekursiven Funktionen, also eine Art von Pseudocode, von dem wir aber sicher sein können, dass wir ihn zu einem streng formal gesehen korrekten WHILE- Programm umformen können, da wir wissen, dass μ-rekursiv = WHILE = GOTO = TM gilt. Damit wird auch deutlich, dass die verschiedenen Konzepte als Hilfsmittel taugen, um z.b. Diesen Beweis übersichtlich gestalten zu können. Als erstes benutzen wir einen Stack, den wir über die primitiv rekursiven Funktionen c( x, y ) und ihre Umkehrfunktionen e( n ) und f( n ) realisieren (aus dem letzten Abschnitt rekursive Funktionen ) Ein Stack s mit sei realisiert durch eine natürliche Zahl als Datum: n = < n 1, n 2,..., n k > = c( n 1, c( n 2,..., C( n k, 0 )... ) ) Folgende Operationen werden auf dem Stack implementiert: INIT( s ) durch n := 0, wobei n die Variable ist, die den Stackinhalt trägt PUSH( a, s ) durch n := c( a, n ) POP( s ) durch r := e( n ) ; n := f( n ), wobei r die Ausgabe ist. Diese Operationen sind mit primitiv rekursiven Funktionen umgesetzt also in WHILE-Code umsetzbar. Die Variablennamen werden lesefreundlich angegeben, daher das Schlüsselwort INPUT, das angibt, welches die Eingabevariablen sind, OUTPUT, das die Ausgabevariable bestimmt und das Programm beendet. INPUT( x, y ); INIT( stack ); PUSH( x, stack ); PUSH( y, stack ); WHILE size( stack ) 1 DO y := POP( stack ) x := PUSH( stack ) IF x = 0 THEN PUSH( y + 1, stack ) ELSEIF y = 0 THEN PUSH( x 1, stack ); PUSH( 1, stack ) ELSE PUSH( x 1, stack ); PUSH( x, stack ) ; PUSH( y 1, stack ); END { IF } END { WHILE } result := POP( stack ); OUTPUT( result )

13 Die Abfrage size( stack ) 1 wird mit f( n ) 0 umgesetzt (WHILE-gerecht). Dieses Programm ist in WHILE-Syntax umwandelbar, entweder durch elementare Schritte ( x := y + c -> WHILE y 0 DO x := x + 1 END ; x := x + c ), oder durch Umwandlung der primitiv rekursiven Funktionen c, e, f in WHILE-Programme. Streng genommen bleibt noch zu zeigen, dass dieses Programm wirklich die Ackermannfunktion berechnet, aber es ist schnell klar, dass es die vereinfachte Definition direkt umsetzt.

14 Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt V. Ausklang Es gibt Funktionen, die man nicht angeben kann, obwohl sie wohldefiniert sind. Fleißiger Biber -> Entscheidbarkeit

15 Quellen: Uwe Schöning Theoretische Informatik-kurzgefaßt Spektrum Akad. Verlag 1995, 2. Auflage und 4.Auflage 2003 ( korrigierter Nachdruck ) ( aktuell, ) ( Vorträge aus der Veranstaltung )

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

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

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

Theorie der Informatik (CS206) Fortsetzung LOOP-Programme, primitiv-rekursive Funktionen

Theorie der Informatik (CS206) Fortsetzung LOOP-Programme, primitiv-rekursive Funktionen Theorie der Informatik (CS206) Fortsetzung LOOP-Programme, primitiv-rekursive Funktionen 26. März 2012 Proff Malte Helmert und Christian Tschudin Departement Mathematik und Informatik, Universität Basel

Mehr

SOI 2013. Die Schweizer Informatikolympiade

SOI 2013. Die Schweizer Informatikolympiade SOI Die Schweizer Informatikolympiade Lösung SOI Wie schreibe ich eine gute Lösung? Bevor wir die Aufgaben präsentieren, möchten wir dir einige Tipps geben, wie eine gute Lösung für die theoretischen

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

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

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

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

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

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Vorlesung. Funktionen/Abbildungen 1

Vorlesung. Funktionen/Abbildungen 1 Vorlesung Funktionen/Abbildungen 1 1 Grundlagen Hinweis: In dieser Vorlesung werden Funktionen und Abbildungen synonym verwendet. In der Schule wird eine Funktion häufig als eindeutige Zuordnung definiert.

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

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

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

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur

5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur 5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur In der Literatur findet sich eine Vielzahl von Varianten des Turingmaschinen-Konzeptes, die sich alle als äquivalent zum Grundkonzept

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle.

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle. Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik Seminar Entscheidungsverfahren für logische Theorien Tobias Hebel Koblenz, am 18.02.2005 Inhaltsverzeichnis 1 Einleitung... 3 2 Grundlagen...

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

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN. Abzählbarkeit, Injektivität, Sürjektivität und Bijektivität

TECHNISCHE UNIVERSITÄT MÜNCHEN. Abzählbarkeit, Injektivität, Sürjektivität und Bijektivität TECHNISCHE UNIVERSITÄT MÜNCHEN Zentrum Mathematik Prof. Dr. Friedrich Roesler Ralf Franken, PhD Max Lein Lineare Algebra 1 WS 26/7 en Blatt 4 13.11.26 Abzählbarkeit, Injektivität, Sürjektivität und Bijektivität

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

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt:

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt: Informatik 13: Gierhardt Theoretische Informatik III Berechenbarkeit Nicht-berechenbare Funktionen Nach der Church-Turing-These kann alles, was berechenbar ist, mit einer Turing-Maschine oder einer While-Maschine

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

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

Fallunterscheidung: if-statement

Fallunterscheidung: if-statement Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0

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

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1 Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 7 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 1 Wir betrachten die folgende Signatur

Mehr

SWE1 / Übung 2 (19.10.2011)

SWE1 / Übung 2 (19.10.2011) SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn

Mehr

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984)

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) NP-Vollständigkeit Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) 0 Übersicht: Einleitung Einteilung in Klassen Die Klassen P und NP

Mehr

183.580, WS2012 Übungsgruppen: Mo., 22.10.

183.580, WS2012 Übungsgruppen: Mo., 22.10. VU Grundlagen digitaler Systeme Übung 2: Numerik, Boolesche Algebra 183.580, WS2012 Übungsgruppen: Mo., 22.10. Aufgabe 1: Binäre Gleitpunkt-Arithmetik Addition & Subtraktion Gegeben sind die Zahlen: A

Mehr

Lenstras Algorithmus für Faktorisierung

Lenstras Algorithmus für Faktorisierung Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit

Mehr

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Diskrete Strukturen und Logik WiSe 2007/08 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Diskrete Strukturen und Logik Gesamtübersicht Organisatorisches Einführung Logik & Mengenlehre

Mehr

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Ulrich Furbach. Sommersemester 2014

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Ulrich Furbach. Sommersemester 2014 Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Ulrich Furbach Institut für Informatik Sommersemester 2014 Furbach Grundlagen d. Theoretischen Informatik:

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Mathematische Maschinen

Mathematische Maschinen Mathematische Maschinen Ziel: Entwicklung eines allgemeinen Schemas zur Beschreibung von (mathematischen) Maschinen zur Ausführung von Algorithmen (hier: (partiellen) Berechnungsverfahren). Mathematische

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Gibt es verschiedene Arten unendlich? Dieter Wolke

Gibt es verschiedene Arten unendlich? Dieter Wolke Gibt es verschiedene Arten unendlich? Dieter Wolke 1 Zuerst zum Gebrauch des Wortes unendlich Es wird in der Mathematik in zwei unterschiedlichen Bedeutungen benutzt Erstens im Zusammenhang mit Funktionen

Mehr

Sprachen/Grammatiken eine Wiederholung

Sprachen/Grammatiken eine Wiederholung Sprachen/Grammatiken eine Wiederholung Was sind reguläre Sprachen? Eigenschaften regulärer Sprachen Sprachen Begriffe Symbol: unzerlegbare Grundzeichen Alphabet: endliche Menge von Symbolen Zeichenreihe:

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung. Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,

Mehr

Bestimmung einer ersten

Bestimmung einer ersten Kapitel 6 Bestimmung einer ersten zulässigen Basislösung Ein Problem, was man für die Durchführung der Simplexmethode lösen muss, ist die Bestimmung einer ersten zulässigen Basislösung. Wie gut das geht,

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

Theoretische Informatik

Theoretische Informatik Theoretische Informatik Einheit 1 Mathematische Methodik 1. Problemlösen 2. Beweistechniken 3. Wichtige Grundbegriffe Methodik des Problemlösens Klärung der Voraussetzungen Welche Begriffe sind zum Verständnis

Mehr

Lua Grundlagen Einführung in die Lua Programmiersprache

Lua Grundlagen Einführung in die Lua Programmiersprache Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 12: Termersetzungssysteme schulz@eprover.org Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A ist eine

Mehr

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Grundlagen Theoretischer Informatik I SoSe 2011 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Grundlagen Theoretischer Informatik I Gesamtübersicht Organisatorisches; Einführung Logik

Mehr

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie und, oder, nicht, wenn... dann zwischen atomaren und komplexen Sätzen. I. Aussagenlogik 2.1 Syntax Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen. Sätze selbst sind entweder wahr oder falsch. Ansonsten

Mehr

Elemente der Analysis II

Elemente der Analysis II Elemente der Analysis II Kapitel 3: Lineare Abbildungen und Gleichungssysteme Informationen zur Vorlesung: http://www.mathematik.uni-trier.de/ wengenroth/ J. Wengenroth () 15. Mai 2009 1 / 35 3.1 Beispiel

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

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

11. Primfaktorzerlegungen

11. Primfaktorzerlegungen 78 Andreas Gathmann 11 Primfaktorzerlegungen Euch ist sicher aus der Schule bekannt, dass sich jede positive ganze Zahl a als Produkt a = p 1 p n von Primzahlen schreiben lässt, und dass diese Darstellung

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik für die Studiengänge Ingenieur-Informatik berufsbegleitendes Studium Lehramt Informatik (Sekundar- und Berufsschule) http://theo.cs.uni-magdeburg.de/lehre04s/ Lehrbeauftragter:

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

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44 Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,

Mehr

Softwareentwicklung 1. Übungsaufgabe 4 Kontrollstrukturen

Softwareentwicklung 1. Übungsaufgabe 4 Kontrollstrukturen Softwareentwicklung Übungsaufgabe 4 Kontrollstrukturen Wintersemester 2006/2007 Prof. Dr. rer.nat. Richard Alznauer Dipl.-Ing. (FH) Joachim Hampel Dipl.-Ing. (FH) Marc Jüttner Version.0.., 2. Dezember

Mehr

Dynamische Optimierung. Kapitel 4. Dynamische Optimierung. Peter Becker (H-BRS) Operations Research II Wintersemester 2014/15 160 / 206

Dynamische Optimierung. Kapitel 4. Dynamische Optimierung. Peter Becker (H-BRS) Operations Research II Wintersemester 2014/15 160 / 206 Kapitel 4 Dynamische Optimierung Peter Becker (H-BRS) Operations Research II Wintersemester 2014/15 160 / 206 Inhalt Inhalt 4 Dynamische Optimierung Allgemeiner Ansatz und Beispiele Stochastische dynamische

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

ARBEITSBLATT ZU FORMALEN SPRACHEN ARBEITSBLATT ZU FORMALEN SPRACHEN Aufgabe 1: Gegeben ist die folgende Formale Sprache L(G) mit G = (T, N, P, S). Die Produktionen lauten ZUWEISUNG ::= name zuweisungsoperator AUSDRUCK semikolon AUSDRUCK

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

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

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS) Dominating Set 59 Literatur Dominating Set Grundlagen 60 Dominating Set (DS) M. V. Marathe, H. Breu, H.B. Hunt III, S. S. Ravi, and D. J. Rosenkrantz: Simple Heuristics for Unit Disk Graphs. Networks 25,

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

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

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

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

2. Universelle Algebra

2. Universelle Algebra 2. Universelle Algebra Die Theorie der universellen Algebra verallgemeinert die Theorien der klassischen Algebren. Obwohl ursprünglich nur eine Sorte betrachtet wurde, werden wir hier gleich den mehrsortigen

Mehr

Nichtlineare Optimierung ohne Nebenbedingungen

Nichtlineare Optimierung ohne Nebenbedingungen Kapitel 2 Nichtlineare Optimierung ohne Nebenbedingungen In diesem Abschnitt sollen im wesentlichen Verfahren zur Bestimmung des Minimums von nichtglatten Funktionen in einer Variablen im Detail vorgestellt

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract:

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract: Spezifikation der zulässigen Parameter Bemerkungen: Bei jeder (partiellen) Funktion muss man sich überlegen und dokumentieren, welche aktuellen Parameter bei einer Anwendung zulässig sein sollen. Der Anwender

Mehr

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

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung TU Graz SS 2007 Übersicht 1 Allgemein Teilgebiete der Informatik ohne Theoretische Grundlagen 2 Fragen an

Mehr

Zweite Möglichkeit: Ausgabe direkt auf dem Bildschirm durchführen:

Zweite Möglichkeit: Ausgabe direkt auf dem Bildschirm durchführen: Ein- und Ausgabe Zweite Möglichkeit: Ausgabe direkt auf dem Bildschirm durchführen: fun p r i n t T r e e printa t = c a s e t o f Leaf a => ( p r i n t Leaf ; printa a ) Node ( l, a, r ) => ( p r i n

Mehr

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Codierung Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Ein bisschen Informationstheorie Betrachten wir das folgende Problem: Wie lautet eine sinnvolle Definition für das quantitative

Mehr

Konfiguration einer TM als String schreiben: Bandinschrift zwischen den Blank-Zeichen Links von der Kopfposition Zustand einfügen.

Konfiguration einer TM als String schreiben: Bandinschrift zwischen den Blank-Zeichen Links von der Kopfposition Zustand einfügen. H MPKP Konfiguration einer TM als String schreiben: Bandinschrift zwischen den Blank-Zeichen Links von der Kopfposition Zustand einfügen. Beispiel: 1234q567 bedeutet: Kopf steht auf 5, Zustand ist q. Rechnung:

Mehr

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen Brainfuck 1 Brainfuck 1.1 Brainfuck Geschichte und Umfeld Brainfuck ist eine sogenannte esoterische Programmiersprache. Sie wurde 1993 vom Schweizer Urban Müller entworfen mit dem Ziel, eine Sprache mit

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

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

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

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

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Grundlagen der Programm- und Systementwicklung Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Technische Universität München Institut für Informatik Software &

Mehr

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet 22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet Autor Volker Claus, Universität Stuttgart Volker Diekert, Universität Stuttgart Holger Petersen, Universität Stuttgart

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Datentypen (int, long, double, boolean, String) Variablen und Variablendeklarationen

Mehr

Computer und Software 1

Computer und Software 1 omputer und oftware 1 hristof Köhler 7. aple Programmieren Folien: alint Aradi Details zu den Klausuren Die Klausuren finden am 11. bzw. 12. ärz statt. Die genaue Einteilung erfolgt nach dem 31. Januar

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr