Lecture 11: Inductive Program Synthesis p. 1

Größe: px
Ab Seite anzeigen:

Download "Lecture 11: Inductive Program Synthesis p. 1"

Transkript

1 Lecture 11: Inductive Program Synthesis Cognitive Systems II - Machine Learning SS 2005 Part III: Learning Programs and Strategies Functional Programs, Program Schemes, Traces, Folding Lecture 11: Inductive Program Synthesis p. 1

2 Lernen aus Problemlöse-Erfahrung Induktive Programm Synthese Planung (Universelles Planen) Erweiterung von Strips auf Funktionsanwendung Erwerb von domain spezifischen Kontrollregeln Falten endlicher Terme zu rekursiven Programmen Transformation von Plänen zu Termen Analoges Schliessen (Abstraktion) Erwerb abstrakter Schemata durch Anti Unifikation von Termen Strukturelle Ähnlichkeit Lecture 11: Inductive Program Synthesis p. 2

3 Klassifikations- und Handlungsregeln einfache Klassifikationsregel (Entscheidungsbaum) if (x1 = 1) & (x2 = 0) then k else not k rekursive Klassifikationsregel (definite Hornklauseln) ancestor(p, F) :- parent(p,f). ancestor(p, F) :- parent(p, I), ancestor(i, F). einfache Handlungsregel (Entscheidungsbaum) if (pressure=high) & (oxygen=low) then reduce-temp else do-nothing rekursive Handlungsregel (funktionales Programm) unloadall(tr, s) = if empty(tr) then s else unload(getobj(tr), unloadall(restobj(tr), s)) Lernen rekursiver Handlungsregeln mit induktiver Programmsynthese Lecture 11: Inductive Program Synthesis p. 3

4 Programmsynthese Automatisches Programmieren: Automatisierung/Unterstützung eines möglichst grossen Teils des Software-Entwicklungsprozesses. (Spezifikations-Akquisition, Umsetzung in Programmcode, Verifikation, Validierung,...) Programmsynthese: Automatisierung oder Unterstützung der Generierung von Programmcode aus Spezifikationen. Lecture 11: Inductive Program Synthesis p. 4

5 Programmsynthese Deduktive Programmsynthese: vollständige, formale (nicht ausführbare) Spezifikationen. last(l) find z such that for some y, l = y [z] where islist(l) and l [ ] (Manna & Waldinger) x y [P re(x) P ost(x, y)] x [P re(x) P ost(x, f(x))] Lecture 11: Inductive Program Synthesis p. 4

6 Programmsynthese Induktive Programmsynthese: unvollständige Spezifikationen ( Trainingsbeispiele ), I/O-Paare oder Traces. last([1]) = 1 last([2 7]) = 7 last([5 3 4]) = 4 Induktive Programmsynthese ist Maschinelles Lernen Lecture 11: Inductive Program Synthesis p. 4

7 Induktive Programmsynthese Genetisches Programmieren: generate and test. Induktive Logische Programmierung: meist bottom-up Generalisierung aus positiven und negativen Beispielen (relative least general generalizations) Funktionale Programmsynthese: 1. Umwandlung von I/O-Beispielen in Berechnungsspuren (traces) 2. Rekurrenz-Entdeckung (Falten endlicher Terme) Lecture 11: Inductive Program Synthesis p. 5

8 Fuktionale Programmsynthese Schritt 2: Programmsynthese aus Berechnungsspuren Pattern-Matching auf Termen Theoretische Basis von Summers (1977) Synthese von Lisp-Programmen aus Berechnungsspuren Schritt 1 basiert dagegen auf Hintergrundwissen Lecture 11: Inductive Program Synthesis p. 6

9 Summers RPS Hypothesensprache: linear rekursives Programmschema (RPS) F (x) (p 1 (x) f 1 (x),..., p k (x) f k (x), T C(F (b(x)), x)) Lecture 11: Inductive Program Synthesis p. 7

10 Summers RPS Hypothesensprache: linear rekursives Programmschema (RPS) F (x) (p 1 (x) f 1 (x),..., p k (x) f k (x), T C(F (b(x)), x)) p 1,... p k : Prädikate atom(b i (x)) Lecture 11: Inductive Program Synthesis p. 7

11 Summers RPS Hypothesensprache: linear rekursives Programmschema (RPS) F (x) (p 1 (x) f 1 (x),..., p k (x) f k (x), T C(F (b(x)), x)) b, b i : Basis-Funktionen car(x), cdr(x) und Kombinationen (cadr(x), cddr(x),...) Lecture 11: Inductive Program Synthesis p. 7

12 Summers RPS Hypothesensprache: linear rekursives Programmschema (RPS) F (x) (p 1 (x) f 1 (x),..., p k (x) f k (x), T C(F (b(x)), x)) f 1,..., f k : S-Expression (nil, b, cons(w, x)) Lecture 11: Inductive Program Synthesis p. 7

13 Summers RPS Hypothesensprache: linear rekursives Programmschema (RPS) F (x) (p 1 (x) f 1 (x),..., p k (x) f k (x), T C(F (b(x)), x)) T : Wahrheitswert true Lecture 11: Inductive Program Synthesis p. 7

14 Summers RPS Hypothesensprache: linear rekursives Programmschema (RPS) F (x) (p 1 (x) f 1 (x),..., p k (x) f k (x), T C(F (b(x)), x)) C(w, x): cons-expression, in der w genau einmal vorkommt Lecture 11: Inductive Program Synthesis p. 7

15 Summers RPS Hypothesensprache: linear rekursives Programmschema (RPS) F (x) (p 1 (x) f 1 (x),..., p k (x) f k (x), T C(F (b(x)), x)) u(x) (atom(cdr(x)) cons(x, nil), T cons(cons(car(x), nil), u(cdr(x)))) Lecture 11: Inductive Program Synthesis p. 7

16 Beispiel I/O Beispiele: nil nil (A) ((A)) (A B) ((A) (B)) (A B C) ((A) (B) (C)) Lecture 11: Inductive Program Synthesis p. 8

17 Beispiel nil nil (A) ((A)) (A B) ((A) (B)) (A B C) ((A) (B) (C)) Berechnungsspuren: F L (x) (atom(x) nil, atom(cdr(x)) cons(x, nil), atom(cddr(x)) cons(cons(car(x), nil), cons(cdr(x), nil)), T cons(cons(car(x), nil), cons(cons(cadr(x),nil), cons(cddr(x),nil)))) Lecture 11: Inductive Program Synthesis p. 8

18 Beispiel F L (x) (atom(x) nil, atom(cdr(x)) cons(x, nil), atom(cddr(x)) cons(cons(car(x), nil), cons(cdr(x), nil)), T cons(cons(car(x), nil), cons(cons(cadr(x),nil), cons(cddr(x),nil)))) Synthetisiertes Programm: unpack(x) u(x) (atom(x) nil, T u(x)) (atom(cdr(x)) cons(x, nil), T cons(cons(car(x), nil), u(cdr(x)))) Lecture 11: Inductive Program Synthesis p. 8

19 Rekurrenz-Detektion F L (x) (atom(x) nil, atom(cdr(x)) cons(x, nil), atom(cddr(x)) cons(cons(car(x), nil), cons(cdr(x), nil)), T cons(cons(car(x), nil), cons(cons(cadr(x),nil), cons(cddr(x),nil)))) Lecture 11: Inductive Program Synthesis p. 9

20 Rekurrenz-Detektion F L (x) (atom(x) nil, atom(cdr(x)) cons(x, nil), atom(cddr(x)) cons(cons(car(x), nil), cons(cdr(x), nil)), T cons(cons(car(x), nil), cons(cons(cadr(x),nil), cons(cddr(x),nil)))) Differenzen: p 2 (x) = p 1 (cdr(x)) p 3 (x) = p 2 (cdr(x)) p 4 (x) = p 3 (cdr(x)) Rekurrenz-Relation: p 1 (x) = atom(x) p k+1 (x) = p k (cdr(x)) for k = 1, 2, 3 Lecture 11: Inductive Program Synthesis p. 9

21 Rekurrenz-Detektion F L (x) (atom(x) nil, atom(cdr(x)) cons(x, nil), atom(cddr(x)) cons(cons(car(x), nil), cons(cdr(x), nil)), T cons(cons(car(x), nil), cons(cons(cadr(x),nil), cons(cddr(x),nil)))) Differenz: f 2 (x) = cons(x, f 1 (x)) Rekurrenz-Relation: f 1 (x) = nil f 2 (x) = cons(x, f 1 (x)) Lecture 11: Inductive Program Synthesis p. 9

22 Rekurrenz-Detektion F L (x) (atom(x) nil, Differenz: atom(cdr(x)) cons(x, nil), atom(cddr(x)) cons(cons(car(x), nil), cons(cdr(x), nil)), T cons(cons(car(x), nil), cons(cons(cadr(x),nil), cons(cddr(x),nil)))) f 3 (x) = cons(cons(car(x),nil), f 2 (cdr(x))) f 4 (x) = cons(cons(car(x),nil), f 3 (cdr(x))) Rekurrenz-Relation: f 2 (x) = cons(x, f 1 (x)) f k+1 (x) = cons(cons(car(x),nil), f k (cdr(x))) for k = 2, 3 Lecture 11: Inductive Program Synthesis p. 9

23 Falten endlicher Terme Wird eine Rekurrenz-Relation in einem endlichen Term erkannt, p 1 (x) = atom(x) p k+1 (x) = p k (cdr(x)) for k = 1, 2, 3 f 1 (x) = nil f 2 (x) = cons(x, f 1 (x)) f k+1 (x) = cons(cons(car(x),nil), f k (cdr(x))) for k = 2, 3 so kann der Term in eine rekursive Funktion gefaltet werden. u(x) (atom(cdr(x)) cons(x, nil), T cons(cons(car(x), nil), u(cdr(x)))) Lecture 11: Inductive Program Synthesis p. 10

24 Summers Synthese-Theorem (1) Entfalten einer rekursiven Funktion: Syntaktisches Einsetzen des Funktionskörpers für den Funktionsaufruf mit entsprechender Substitution der Parameter Ausnutzen der Beziehung zwischen einem RPS und seinen Entfaltungen für die Induktion (Faltung) eines RPS aus einem endlichen Term. Term wird als k-te Approximation der gesuchten Funktion F(x) angenommen. Lecture 11: Inductive Program Synthesis p. 11

25 Folge von Unfoldings für unpack(x) für keine Eingabe definiert U 0 Ω Lecture 11: Inductive Program Synthesis p. 12

26 Folge von Unfoldings für unpack(x) für keine Eingabe definiert für leere Liste definiert U 1 (atom(x) nil, T Ω) U 0 Ω Lecture 11: Inductive Program Synthesis p. 12

27 Folge von Unfoldings für unpack(x) für keine Eingabe definiert für leere Liste definiert U 1 (atom(x) nil, T Ω) U 0 Ω für leere und einelementige Liste definiert U 2 (atom(x) nil, atom(cdr(x)) cons(x, nil), T Ω) Lecture 11: Inductive Program Synthesis p. 12

28 Folge von Unfoldings für unpack(x) für keine Eingabe definiert für leere Liste definiert U 1 (atom(x) nil, T Ω) U 0 Ω für leere und einelementige Liste definiert U 2 (atom(x) nil, atom(cdr(x)) cons(x, nil), T Ω)... für Listen bis n Elemente definiert Lecture 11: Inductive Program Synthesis p. 12

29 Summers Synthese-Theorem (2) Partielle Ordnung über der Menge der Funktionsapproximationen (aufsteigende Kette). Supremum der Kette von Funktionsapproximationen ist die gesuchte Funktion (Fixpunkt-Semantik). Lecture 11: Inductive Program Synthesis p. 13

30 Summers Synthese-Theorem (2) Partielle Ordnung über der Menge der Funktionsapproximationen (aufsteigende Kette). Supremum der Kette von Funktionsapproximationen ist die gesuchte Funktion (Fixpunkt-Semantik). Wird ein aus Beispielen konstruiertes endliches Programm (Berechnungsspuren) als k-tes Unfolding eines unbekannten rekursiven Programms aufgefasst und können Rekurrenz-Beziehungen im endlichen Programm entdeckt werden, dann kann ein rekursives Programm, das dieses endliche Programm erzeugen kann, induziert werden! Lecture 11: Inductive Program Synthesis p. 13

31 Verallgemeinerung + Sprachunabhängig: Terme einer beliebigen Termalgebra T Σ (X). + Mengen rekursiver Funktionen mit beliebiger (aber nicht wechselseitiger) calls-relation. + Beliebige Anzahl von formalen Parametern, mit wechselseitigen Abhängigkeiten. + Unvollständige Entfaltungen. Mächtigere Hypothesensprache Verallgemeinerte Synthesetheoreme Lecture 11: Inductive Program Synthesis p. 14

32 Hypothesensprache RPS S = (G, t 0 ) mit t 0 T Σ Φ (X) und G als System von n Gleichungen: G = G 1 (x 1,..., x m1 ) = t 1,. G n (x 1,..., x mn ) = t n mit t i T Σ Φ (X), i = 1... n. Lecture 11: Inductive Program Synthesis p. 15

33 Hypothesensprache RPS S = (G, t 0 ) mit t 0 T Σ Φ (X) und G als System von n Gleichungen: G = G 1 (x 1,..., x m1 ) = t 1,. G n (x 1,..., x mn ) = t n mit t i T Σ Φ (X), i = 1... n. Summers: eine Gleichung G i Lecture 11: Inductive Program Synthesis p. 15

34 Hypothesensprache RPS S = (G, t 0 ) mit t 0 T Σ Φ (X) und G als System von n Gleichungen: G = G 1 (x 1,..., x m1 ) = t 1, mit t i T Σ Φ (X), i = 1... n. Signatur Σ. G n (x 1,..., x mn ) = t n Funktionsvariablen Φ mit Σ Φ = und Stelligkeit α(g i ) = m i > 0 Lecture 11: Inductive Program Synthesis p. 15

35 Hypothesensprache RPS S = (G, t 0 ) mit t 0 T Σ Φ (X) und G als System von n Gleichungen: G = G 1 (x 1,..., x m1 ) = t 1, mit t i T Σ Φ (X), i = 1... n.. G n (x 1,..., x mn ) = t n Abstraktes funktionales Programm mit t 0 als initialer Aufruf ( main ) und G als Menge rekursiver Funktionen. Lecture 11: Inductive Program Synthesis p. 15

36 Hypothesensprache RPS S = (G, t 0 ) mit t 0 T Σ Φ (X) und G als System von n Gleichungen: G = G 1 (x 1,..., x m1 ) = t 1,. G n (x 1,..., x mn ) = t n mit t i T Σ Φ (X), i = 1... n. Linke Seite einer Gleichung: Programmkopf (Parameter x i paarweise verschieden). Rechte Seite einer Gleichung: Programmkörper (t i enthält mindestens einen Aufruf von G i und evtl. Aufrufe von G j G). Lecture 11: Inductive Program Synthesis p. 15

37 Beispiel G = ModList(l, n) = if( empty(l), nil, cons( if(eq0(mod(n, head(l))), T, nil), ModList(tail(l), n))), Mod(k, n) = if(<(k, n), k, Mod( (k, n), n)) t 0 = ModList(l, n) Lecture 11: Inductive Program Synthesis p. 16

38 Beispiel G = ModList(l, n) = if( empty(l), nil, cons( if(eq0(mod(n, head(l))), T, nil), ModList(tail(l), n))), Mod(k, n) = if(<(k, n), k, Mod( (k, n), n)) t 0 = ModList(l, n) Zwei rekursive Gleichungen. ModList ruft Mod auf. Lecture 11: Inductive Program Synthesis p. 16

39 Beispiel G = ModList(l, n) = if( empty(l), nil, cons( if(eq0(mod(n, head(l))), T, nil), ModList(tail(l), n))), Mod(k, n) = if(<(k, n), k, Mod( (k, n), n)) t 0 = ModList(l, n) t 0 : uninstantiierter Aufruf von ModList Initialisierung ModList([9, 4, 7], 8) Einbettung head(modlist([9, 4, 7], 8)) Lecture 11: Inductive Program Synthesis p. 16

40 Beispiel G = ModList(l, n) = if( empty(l), nil, cons( if(eq0(mod(n, head(l))), T, nil), ModList(tail(l), n))), Mod(k, n) = if(<(k, n), k, Mod( (k, n), n)) t 0 = ModList(l, n) Unvollständige Entfaltungen (Planer-/Nutzergenerierte Berechnungsspuren) Lecture 11: Inductive Program Synthesis p. 16

41 Allgemeiner Ansatz Betrachtung eines RPS als Termersetzungssystem Charakterisierung der Sprache eines RPS Induktion: Ist gegebener Term Element der Sprache? Lecture 11: Inductive Program Synthesis p. 17

42 Folding-Algorithmus 1. Hypothetische Segmentierung eines Terms in potentielle Rekursionspunkte: Rekurrenzrelation entlang Pfaden zu Ω s (Backtracking-Punkt). 2. Bildung eines maximalen Funktions-Körpers durch Anti-Unifikation der Segmente. 3. Ermittlung der Substitutionsvorschrift. Lecture 11: Inductive Program Synthesis p. 18

43 Beispielterm (EMPTY L) NIL NS (IF (EQ0 (IF (< (HEAD L) N) (HEAD L) OMEGA)) T NIL) F (EMPTY (TAIL L)) NIL CONS (IF (EQ0 (IF (< (HEAD (TAIL L)) N) (HEAD (TAIL L)) (IF (< (- (HEAD (TAIL L)) N) N) (- (HEAD (TAIL L)) N) OMEGA))) T NIL) (IF (EMPTY (TAIL (TAIL L))) NIL (CONS (IF (EQ0 (IF (< (HEAD (TAIL (TAIL L))) N) (HEAD (TAIL (TAIL L))) (IF (< (- (HEAD (TAIL (TAIL L))) N) N) (- (HEAD (TAIL (TAIL L))) N) (IF (< (- (- (HEAD (TAIL (TAIL L))) N) N) N) (- (- (HEAD (TAIL (TAIL L))) N) N) OMEGA)))) T NIL) (IF (EMPTY (TAIL (TAIL (TAIL L)))) NIL (CONS (IF (EQ0 (IF (< (HEAD (TAIL (TAIL (TAIL L)))) N) (HEAD (TAIL (TAIL (TAIL L)))) (IF (< (- (HEAD (TAIL (TAIL (TAIL L)))) N) N) (- (HEAD (TAIL (TAIL (TAIL L)))) N) (IF (< (- (- (HEAD (TAIL (TAIL (TAIL L)))) N) N) N) (- (- (HEAD (TAIL (TAIL (TAIL L)))) N) N) OMEGA)))) T NIL) OMEGA)))))))) Lecture 11: Inductive Program Synthesis p. 19

44 Generierung von Berechnungsspuren Folding: rein syntaktisch, allgemein formulierbar, mit Pattern-Matching lösbar Generierung von Berechnungsspuren: domain-abhängig Lecture 11: Inductive Program Synthesis p. 20

45 Generierung von Berechnungsspuren Folding: rein syntaktisch, allgemein formulierbar, mit Pattern-Matching lösbar Generierung von Berechnungsspuren: domain-abhängig Summers: strukturelle Listenprobleme I/O Beispiele können eindeutig in Berechnungsspuren transformiert werden. Lecture 11: Inductive Program Synthesis p. 20

46 Generierung von Berechnungsspuren Folding: rein syntaktisch, allgemein formulierbar, mit Pattern-Matching lösbar Generierung von Berechnungsspuren: domain-abhängig Programming by Demonstration: Erfassung über Benutzerinteraktion Lecture 11: Inductive Program Synthesis p. 20

47 Generierung von Berechnungsspuren Folding: rein syntaktisch, allgemein formulierbar, mit Pattern-Matching lösbar Generierung von Berechnungsspuren: domain-abhängig KI-Planung: Pläne als Folge von Operator-Anwendungen zur Transformation eines Anfangszustand (Input) in einen Zielzustand (Output) Pläne sind Berechnungsspuren Lecture 11: Inductive Program Synthesis p. 20

48 Generierung von Berechnungsspuren Folding: rein syntaktisch, allgemein formulierbar, mit Pattern-Matching lösbar Generierung von Berechnungsspuren: domain-abhängig Input/Output Beispiele Beispielprobleme Transformation primitive Funktionen Datentypen Domain Basis Operatoren Planung Berechnungsspuren Pläne Folding rekursives Programmschema Lecture 11: Inductive Program Synthesis p. 20

49 Planung und Programmsynthese Zustandsbasiertes Planen (Strips, Graphplan) Suche im Zustandsraum i.a. exponentieller Aufwand Lösung 1: domainspezifische Kontrollregeln zur Steuerung der Suche Problem: knowledge engineering Lösung 2: Lernen von Kontrollregeln aus Beispielplänen Lecture 11: Inductive Program Synthesis p. 21

50 Planung und Programmsynthese domain spezifische Kontrollstrategie Berechnungsspuren Beispielprobleme Domain Basis Operatoren Planung Pläne Folding Beispiel: Clearblock -Problem rekursives Programmschema clearblock(b, s) = IF clear(b, s) THEN s ELSE puttable(topof(b, s), clearblock(topof(b, s), s)) Lecture 11: Inductive Program Synthesis p. 21

51 Problemlösen und Programmsynthese Lernen aus Problemlöseerfahrung Induktives Lernen aus Beispielen Lösen von Programmierproblemen als Spezialfall Handsimulation der ersten n Beispiele Sortieren einer Liste mit bis zu drei Elementen Generalisierung zur rekursiven Lösung insertion-sort Modellierung von Programmsynthese als Wissenserwerb aus Problemlöseerfahrung Induktive Programmsynthese als methodischer Zugang zum Lernen aus Erfahrung Lecture 11: Inductive Program Synthesis p. 22

52 Exploration eines Problembereichs A B C puttable(a) puttable(b) B C A C A B clear(a) clear(b) clear(c) Gegeben Problemlöse-Operatoren und Ziel Lecture 11: Inductive Program Synthesis p. 23

53 Generalisierung über Lösungsstrukturen: Wende solange puttable(x) an, bis clear(zielblock) Lecture 11: Inductive Program Synthesis p. 24

54 Generalisierung über Lösungsstrukturen: Repräsentiert als rekursives Programmschema: clearblock(b, s) = IF clear(b, s) THEN s ELSE puttable(topof(b, s), clearblock(topof(b, s), s)) Schema-Erwerb (e.g. Norman & Rumelhart) Teilziel-Struktur Domain-spezifische Strategie Lecture 11: Inductive Program Synthesis p. 24

55 Generalisierung über Lösungsstrukturen: Repräsentiert als rekursives Programmschema: clearblock(b, s) = IF clear(b, s) THEN s ELSE puttable(topof(b, s), clearblock(topof(b, s), s)) Teilzielbildung Lecture 11: Inductive Program Synthesis p. 24

56 Generalisierung über Lösungsstrukturen: Repräsentiert als rekursives Programmschema: clearblock(b, s) = IF clear(b, s) THEN s ELSE puttable(topof(b, s), clearblock(topof(b, s), s)) Aktionsfolge Lecture 11: Inductive Program Synthesis p. 24

57 Generalisierung über Lösungsstrukturen: Repräsentiert als rekursives Programmschema: clearblock(b, s) = IF clear(b, s) THEN s ELSE puttable(topof(b, s), clearblock(topof(b, s), s)) Relevante Eigenschaften Lecture 11: Inductive Program Synthesis p. 24

58 Generalisierung über Lösungsstrukturen: Repräsentiert als rekursives Programmschema: clearblock(b, s) = IF clear(b, s) THEN s ELSE puttable(topof(b, s), clearblock(topof(b, s), s)) Objekt-Auswahl Lecture 11: Inductive Program Synthesis p. 24

59 Bewertung Induktive Programmsynthese als Ansatz zum Maschinellen Lernen von Kontrollregeln Wissensentdeckung : Identifikation von und Generalisierung über Regularitäten (Chomsky, LAD) Bezug zum menschlichen Lernen: learning by doing nicht begrenzt auf chunking von Regeln (Makro-Lernen, ACT), Lernen von Problemlöse-Strategien als Generalisierung über Problemlöse-Erfahrung Kognitive Modellierung: statt Simulation konkreter empirischer Daten Formulierung grundlegender Mechanismen (Identifikation relevanter Merkmale, Schema-Erwerb) Lecture 11: Inductive Program Synthesis p. 25

60 Anwendungen Lernen von Kontrollregeln für Planungssysteme aktuell: verteiltes Planen für ubiquituos computing in der Transportlogistik Lernen von XSL Transformationen mit recursive template application (Umwandlung von XML-Dokumenten) Analoges und fallbasiertes Schliessen als Spezialfall von Induktion (Anti-Unifikations-Algorithmen, Bezug zu psychologischen Theorien) Lecture 11: Inductive Program Synthesis p. 26

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Programmieren Formulierung eines Algorithmus in einer Programmiersprache Zum Titel der Vorlesung: Programmieren Formulierung eines in einer Programmiersprache Beschreibung einer Vorgehensweise, wie man zu jedem aus einer Klasse gleichartiger Probleme eine Lösung findet Beispiel:

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

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist

Mehr

2. Lernen von Entscheidungsbäumen

2. Lernen von Entscheidungsbäumen 2. Lernen von Entscheidungsbäumen Entscheidungsbäume 2. Lernen von Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch Attribut/Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse

Mehr

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung Funktionale Programmierung 1 Funktionale Programmierung: Vorlesungsüberblick 1. Funktionale Programmierung Prinzipien funktionaler Programmierung Funktionale Programmierung in prozeduralen Sprachen Rekursive

Mehr

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Rev. 1152 1 [23] Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Christoph Lüth & Dennis Walter Universität Bremen Wintersemester 2010/11

Mehr

Der λ-kalkül. Frank Huch. Sommersemester 2015

Der λ-kalkül. Frank Huch. Sommersemester 2015 Der λ-kalkül Frank Huch Sommersemester 2015 In diesem Skript werden die Grundlagen der Funktionalen Programmierung, insbesondere der λ-kalkül eingeführt. Der hier präsentierte Stoff stellt einen teil der

Mehr

Wissensbasierte Systeme

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

Mehr

Prolog basiert auf Prädikatenlogik

Prolog basiert auf Prädikatenlogik Software-Technologie Software-Systeme sind sehr komplex. Im Idealfall erfolgt die Programmierung problemorientiert, während die notwendige Übertragung in ausführbare Programme automatisch erfolgt. Prolog-Philosophie:

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

Cognitive Systems Master thesis

Cognitive Systems Master thesis Cognitive Systems Master thesis Recherche Phase SS 2011 Gliederung 1. Einleitung 2. Analogie Modelle 2.1 SME 2.2 Ava 2.3 Lisa 3. Zusammenfassung 4. Ausblick 2 Einleitung Analogie Problemsituation wird

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

Kompositionen von Baumreihen-Transformationen

Kompositionen von Baumreihen-Transformationen Kompositionen von Baumreihen-Transformationen Andreas Maletti 1 Lehrstuhl: Grundlagen der Programmierung Institut für Theoretische Informatik Technische Universität Dresden 4. November 2005 1 Finanziell

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

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

Moderne Methoden der KI: Maschinelles Lernen

Moderne Methoden der KI: Maschinelles Lernen Moderne Methoden der KI: Maschinelles Lernen Prof. Dr. sc. Hans-Dieter Burkhard Vorlesung Sommer-Semester 2009 1. Einführung: Definitionen Grundbegriffe Lernsysteme Maschinelles Lernen Lernen: Grundbegriffe

Mehr

5 Logische Programmierung

5 Logische Programmierung 5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen

Mehr

Kapitel ML: I. I. Einführung. Beispiele für Lernaufgaben Spezifikation von Lernproblemen

Kapitel ML: I. I. Einführung. Beispiele für Lernaufgaben Spezifikation von Lernproblemen Kapitel ML: I I. Einführung Beispiele für Lernaufgaben Spezifikation von Lernproblemen ML: I-8 Introduction c STEIN/LETTMANN 2005-2010 Beispiele für Lernaufgaben Autoeinkaufsberater Welche Kriterien liegen

Mehr

Frage, Fragen und nochmals Fragen

Frage, Fragen und nochmals Fragen Frage, Fragen und nochmals Fragen Berthold Hoffmann Universität Bremen and DFKI Bremen hof@informatik.uni-bremen.de In diesem Text stehen einige Fragen, die man sich zu den Folien der Veranstaltung Funktionales

Mehr

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum 4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.

Mehr

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de Wiederholung: Anfragegraph Anfragen dieses Typs können als Graph dargestellt werden: Der

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

Mehr

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für

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

Markus Pister (Autor) Integration formaler Fehlereinflussanalyse in die Funktionsentwicklung bei der Automobilindustrie

Markus Pister (Autor) Integration formaler Fehlereinflussanalyse in die Funktionsentwicklung bei der Automobilindustrie Markus Pister (Autor) Integration formaler Fehlereinflussanalyse in die Funktionsentwicklung bei der Automobilindustrie https://cuvillier.de/de/shop/publications/1145 Copyright: Cuvillier Verlag, Inhaberin

Mehr

Foundations of Systems Development

Foundations of Systems Development Foundations of Systems Development Vergleich und Zusammenfassung Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer WS 2007/08 2 Ziele Wichtige Aspekte von algebraischen Spezikationen

Mehr

Maschinelles Lernen und Data Mining: Methoden und Anwendungen

Maschinelles Lernen und Data Mining: Methoden und Anwendungen Maschinelles Lernen und Data Mining: Methoden und Anwendungen Eyke Hüllermeier Knowledge Engineering & Bioinformatics Fachbereich Mathematik und Informatik GFFT-Jahrestagung, Wesel, 17. Januar 2008 Knowledge

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

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

Nachweis der Verhaltensäquivalenz von Feldbus-Komponenten auf unterschiedlichen Abstraktionsebenen

Nachweis der Verhaltensäquivalenz von Feldbus-Komponenten auf unterschiedlichen Abstraktionsebenen Nachweis der Verhaltensäquivalenz von Feldbus-Komponenten auf unterschiedlichen Abstraktionsebenen Diplomarbeit Martin Pitt martin@piware.de Technische Universität Dresden 11. November 2004 1 Aufgabenstellung

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

Verifikations- und Spezifikationsmethoden

Verifikations- und Spezifikationsmethoden Verifikations- und Spezifikationsmethoden Prof. Dr. Sibylle Schwarz Westsächsische Hochschule Zwickau Dr. Friedrichs-Ring 2a, RII 263 http://www.fh-zwickau.de/~sibsc/ sibylle.schwarz@fh-zwickau.de WS 2012/13

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

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Jan Parthey, Christin Seifert. 22. Mai 2003

Jan Parthey, Christin Seifert. 22. Mai 2003 Simulation Rekursiver Auto-Assoziativer Speicher (RAAM) durch Erweiterung eines klassischen Backpropagation-Simulators Jan Parthey, Christin Seifert jpar@hrz.tu-chemnitz.de, sech@hrz.tu-chemnitz.de 22.

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

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

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen:

Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Was bisher geschah Funktionale Programmierung in Haskell: Algebraische Datentypen Pattern Matching Polymorphie Typklassen Rekursive Datentypen: Peano-Zahlen, Listen, Bäume Rekursive Funktionen strukturelle

Mehr

ShopBot, ein Software-Agent für das Internet

ShopBot, ein Software-Agent für das Internet Software-Agenten p.1/20 ShopBot, ein Software-Agent für das Internet Eine Einführung in (Software-)Agenten Madeleine Theile Software-Agenten p.2/20 Aufbau des Vortrags grundlegende Theorie Definition Autonomy,

Mehr

STRIPS. Hauptseminar: Kognitive Systeme. Stefanie Sieber Norbert Wächtler

STRIPS. Hauptseminar: Kognitive Systeme. Stefanie Sieber Norbert Wächtler STRIPS Hauptseminar: Kognitive Systeme Stefanie Sieber Norbert Wächtler Was ist STRIPS? STanford Research Institute Problem Solver Formalismus zur Beschreibung von Planungsproblemen Kernidee: Weltzustand

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

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

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein

Mehr

6 Allgemeine Theorie des elektromagnetischen Feldes im Vakuum

6 Allgemeine Theorie des elektromagnetischen Feldes im Vakuum 6 ALLGEMEINE THEORIE DES ELEKTROMAGNETISCHEN FELDES IM VAKUUM 25 Vorlesung 060503 6 Allgemeine Theorie des elektromagnetischen Feldes im Vakuum 6.1 Grundaufgabe der Elektrodynamik Gegeben: Ladungsdichte

Mehr

Prädikate zum Testen und Manipulieren der Struktur der Terme; Mehr meta-logische Prädikate z.b. zum Testen des Zustands der Ableitung;

Prädikate zum Testen und Manipulieren der Struktur der Terme; Mehr meta-logische Prädikate z.b. zum Testen des Zustands der Ableitung; Mehr Prolog Prolog bietet mehr an, z.b.: Prädikate zum Testen und Manipulieren der Struktur der Terme; Mehr meta-logische Prädikate z.b. zum Testen des Zustands der Ableitung; Mehr extra-logische Prädikate,

Mehr

Grundlagen der Informationverarbeitung

Grundlagen der Informationverarbeitung Grundlagen der Informationverarbeitung Information wird im Computer binär repräsentiert. Die binär dargestellten Daten sollen im Computer verarbeitet werden, d.h. es müssen Rechnerschaltungen existieren,

Mehr

Universität Paderborn Die Universität der Informationsgesellschaft. Validierung und Verifikation (inkl. Testen, Model-Checking, Theorem Proving)

Universität Paderborn Die Universität der Informationsgesellschaft. Validierung und Verifikation (inkl. Testen, Model-Checking, Theorem Proving) Universität Paderborn Die Universität der Informationsgesellschaft Analyse, Entwurf und Implementierung zuverlässiger Software und (inkl., Model-Checking, Theorem Proving) Torsten Bresser torbre@uni-paderborn.de

Mehr

Verträge für die funktionale Programmierung Design und Implementierung

Verträge für die funktionale Programmierung Design und Implementierung 1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: ralf@informatik.uni-bonn.de

Mehr

Einführung in Generatives Programmieren. Bastian Molkenthin

Einführung in Generatives Programmieren. Bastian Molkenthin Einführung in Generatives Programmieren Bastian Molkenthin Motivation Industrielle Entwicklung *!!*,(% % - #$% #!" + '( & )!* Softwareentwicklung Rückblick auf Objektorientierung Objektorientierte Softwareentwicklung

Mehr

Softwareentwicklung aus Sicht des Gehirns

Softwareentwicklung aus Sicht des Gehirns Softwareentwicklung aus Sicht Business Unit Manager Folie 1 Ziel Das Ziel ist die Beantwortung der folgenden Fragen: 1. Wie lösen Softwareentwickler Probleme kognitiv? 2. Was sind die Schlüsselfaktoren

Mehr

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik 7 1.1 Was ist Informatik? 7 1.2 Teilgebiete der Informatik 8

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik 7 1.1 Was ist Informatik? 7 1.2 Teilgebiete der Informatik 8 Einleitung Was ist Informatik? 5 1 Informatik 7 1.1 Was ist Informatik? 7 1.2 Teilgebiete der Informatik 8 Programmierung 13 2 Vom Problem über den Algorithmus zum Programm 15 2.1 Vorgehensweise bei der

Mehr

ChangePoint-Analysen - ein Überblick

ChangePoint-Analysen - ein Überblick ChangePoint-Analysen - ein Überblick Gliederung Motivation Anwendungsgebiete Chow Test Quandt-Andrews Test Fluktuations-Tests Binary Segmentation Recursive circular and binary segmentation algorithm Bayesscher

Mehr

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe

Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe Anfragen für Listen Kapitel 7 des Buches, von Java-Selbstbau nach Scala-Library portiert. 2014-11-14 Christoph Knabe 1 MapReduce-Verfahren Google u.a. verwenden Map-Reduce-Verfahren zur Verarbeitung riesiger

Mehr

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer Seminar Werkzeuggestütze tze Softwareprüfung fung Slicing Sebastian Meyer Überblick Einführung und Begriffe Static Slicing Dynamic Slicing Erweiterte Slicing-Techniken Fazit 2 Was ist Slicing?? (I) Program

Mehr

Grundlagen der Programmierung (Vorlesung 14)

Grundlagen der Programmierung (Vorlesung 14) Grundlagen der Programmierung (Vorlesung 14) Ralf Möller, FH-Wedel Vorige Vorlesung Verifikation von Anweisungen und Anweisungsfolgen Schleifen Inhalt dieser Vorlesung Funktionen und Prozeduren Lernziele

Mehr

Funktionale Programmierung

Funktionale Programmierung FP-1.0 Funktionale Programmierung Prof. Dr. Uwe Kastens SS 2013 Vorlesung Funktionale Programmierung SS 2013 / Folie 100 Begrüßung Functional Programming is Fun FP-1.1 Fun ctional Programming is Fun ctional

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Zahlen in Haskell Kapitel 3

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

Mehr

Theoretische Informatik SS 03 Übung 3

Theoretische 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

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg

Mehr

Datenbankmodelle 1. Das Entity-Relationship-Modell. Prof. Dr. Bernhard Schiefer 2-1

Datenbankmodelle 1. Das Entity-Relationship-Modell. Prof. Dr. Bernhard Schiefer 2-1 Datenbankmodelle 1 Das Entity-Relationship-Modell Prof. Dr. Bernhard Schiefer 2-1 Datenbankmodelle ER-Modell hierarchisches Modell Netzwerkmodell relationales Modell objektorientierte Modelle Prof. Dr.

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr

Code-Erzeugung aus UML-Klassendiagrammen

Code-Erzeugung aus UML-Klassendiagrammen Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 20. Juni 2011, c 2011 D.Rösner D. Rösner PGP 2011...

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

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Lineare Programmierung

Lineare Programmierung Lineare Programmierung WS 2003/04 Rolle der Linearen Programmierung für das TSP 1954: Dantzig, Fulkerson & Johnson lösen das TSP für 49 US-Städte (ca. 6.2 10 60 mögliche Touren) 1998: 13.509 Städte in

Mehr

MA Projekt: Langfristige Kapitalmarktsimulation

MA Projekt: Langfristige Kapitalmarktsimulation MA Projekt: Langfristige Kapitalmarktsimulation Einführung in die Simulation Prof. Dr. Thorsten Poddig Lehrstuhl für Allgemeine Betriebswirtschaftslehre, insbes. Finanzwirtschaft Universität Bremen Hochschulring

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

Schulinternes Curriculum für Informatik (Q2) Stand April 2015

Schulinternes Curriculum für Informatik (Q2) Stand April 2015 Schulinternes Curriculum für Informatik (Q2) Stand April 2015 Unterrichtsvorhaben Q2-I Thema: Modellierung und Implementierung von Anwendungen mit dynamischen, nichtlinearen Datenstrukturen Modellieren

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

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Programmieren in Haskell Programmiermethodik

Programmieren in Haskell Programmiermethodik Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs

Mehr

Seminar: Denken und Problemlösen Dozent: Prof. Dr. Joachim Funke. Referent: Philip Furley

Seminar: Denken und Problemlösen Dozent: Prof. Dr. Joachim Funke. Referent: Philip Furley Seminar: Denken und Problemlösen Dozent: Prof. Dr. Joachim Funke Referent: Philip Furley Gliederung Einleitung Ziel: Gemeinsamkeiten und Unterschiede der Sichtweisen der Künstlichen Intelligenz und der

Mehr

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München MANUEL KALLWEIT & FABIAN KINDERMANN Literaturempfehlung: Vorlesungsskript von Heidrun Kolinsky zu FORTRAN 90/95: http://www.rz.uni-bayreuth.de/lehre/fortran90/vorlesung/index.html Schmitt, Günter (1996):

Mehr

Logische Programmierung

Logische Programmierung Logische Programmierung B-82 Deklaratives Programmieren in Prädikatenlogik: Problem beschreiben statt Algorithmus implementieren (idealisiert). Grundlagen: Relationen bzw. Prädikate (statt Funktionen);

Mehr

Nichtmonotones Schließen

Nichtmonotones Schließen Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen klassischer Aussagenlogik: Entscheidungstabellen, -bäume, -diagramme Wissensrepräsentation und -verarbeitung durch

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

Vortrag von: Ilias Agorakis & Robert Roginer

Vortrag von: Ilias Agorakis & Robert Roginer MDA Model Driven Architecture Vortrag von: Ilias Agorakis & Robert Roginer Anwendungen der SWT - WS 08/09 Inhalt Was ist MDA? Object Management Group (OMG) Ziele Konzepte der MDA Werkzeuge Vor- und Nachteile

Mehr

1. Lernen von Konzepten

1. Lernen von Konzepten 1. Lernen von Konzepten Definition des Lernens 1. Lernen von Konzepten Lernziele: Definitionen des maschinellen Lernens kennen, Klassifikationen des maschinellen Lernens kennen, Das Prinzip des induktiven

Mehr

Lehrpläne NRW Sek.stufe 2. Lernen im Kontext

Lehrpläne NRW Sek.stufe 2. Lernen im Kontext Lehrpläne NRW Sek.stufe 2 Lernen im Kontext Fachliche Inhalte Lernziele Informatik NRW Fähigkeit, komplexe Zusammenhänge mit gedanklicher Schärfe zu durchdringen (Problemanalyse) Überblick über unterschiedliche

Mehr

Wissensbasierte Systeme 5. Constraint Satisfaction Probleme

Wissensbasierte Systeme 5. Constraint Satisfaction Probleme Wissensbasierte Systeme 5. Constraint Satisfaction Probleme Michael Beetz Vorlesung Wissensbasierte Systeme 1 Inhalt 5.1 Begriffe 5.2 Constraint Satisfaction in Linienbildern 5.3 Beispielanwendungen 5.4

Mehr

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen.

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen. Algorithmik II SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen.de Homepage der Vorlesung Vorbemerkungen I http://www8.informatik.uni-erlangen.de/immd8

Mehr

Grundlagen der Programm- und Systementwicklung

Grundlagen der Programm- und Systementwicklung Grundlagen der Programm- und Systementwicklung Technische Universität München Institut für Informatik Software & Systems Engineering Prof. Dr. Dr. h.c. Manfred Broy Unter Mitarbeit von Dr. Maria Spichkova

Mehr

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

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

XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079)

XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079) XML Verarbeitung mit einer in Haskell eingebetteten DSL Manuel Ohlendorf (xi2079) 2.0.200 Manuel Ohlendorf Übersicht 1 2 Einführung Datenstruktur Verarbeitung Vergleich mit anderen Verfahren Fazit 2 Übersicht

Mehr

Grenzwertanalyse. Domain-Testing. Ronny Schwierzinski, Bernd Rabe, Anna Bartwicki

Grenzwertanalyse. Domain-Testing. Ronny Schwierzinski, Bernd Rabe, Anna Bartwicki Grenzwertanalyse und Domain-Testing Ronny Schwierzinski, Bernd Rabe, Anna Bartwicki Überblick Einleitung Äquivalenzklassen Grenzwertanalyse Domain-Testing (Bereichstest) Invariant Boundaries Pfadbereichstest

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

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

Reinforcement Learning

Reinforcement Learning Reinforcement Learning 1. Allgemein Reinforcement Learning 2. Neuronales Netz als Bewertungsfunktion 3. Neuronales Netz als Reinforcement Learning Nils-Olaf Bösch 1 Allgemein Reinforcement Learning Unterschied

Mehr

Motivation. Motivation

Motivation. Motivation Vorlesung Modellierung nebenläufiger Systeme Sommersemester 2012 Universität Duisburg-Essen Was sind nebenläufige Systeme? Ganz allgemein: Systeme, bei denen mehrere Komponenten/Prozesse nebenläufig arbeiten

Mehr

Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T:

Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T: Binäre Bäume Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T: BinTree [T: TYPE]: DATATYPE empty: empty? node (key: T, left:bibtree, right:bibtree):

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

Automatisierte Logik und Programmierung II

Automatisierte Logik und Programmierung II Automatisierte Logik und Programmierung II Sommersemester 2009 Christoph Kreitz Theoretische Informatik, Raum 1.18, Telephon 3060 kreitz@cs.uni-potsdam.de http://www.cs.uni-potsdam.de/ti/lehre/alupii.htm

Mehr

Seminar Textmining SS 2015 Grundlagen des Maschinellen Lernens

Seminar Textmining SS 2015 Grundlagen des Maschinellen Lernens Seminar Textmining SS 2015 Grundlagen des Maschinellen Lernens Martin Hacker Richard Schaller Künstliche Intelligenz Department Informatik FAU Erlangen-Nürnberg 17.04.2015 Entscheidungsprobleme beim Textmining

Mehr