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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kevin Caldwell. 18.April 2012

Kevin Caldwell. 18.April 2012 im Rahmen des Proseminars Numerische Lineare Algebra von Prof.Dr.Sven Beuchler 18.April 2012 Gliederung 1 2 3 Mathematische Beschreibung von naturwissenschaftlich-technischen Problemstellungen führt häufig

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

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

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

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

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

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

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

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

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten

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

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

26 Hierarchisch strukturierte Daten

26 Hierarchisch strukturierte Daten Algorithmik II Peter Wilke Sommersemester 2005 Teil III Funktionale Programmierung 26 Hierarchisch strukturierte Daten Peter Wilke Algorithmik II Sommersemester 2005 1 Peter Wilke Algorithmik II Sommersemester

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

Fragenkatalog Software Engineering I & II 25 Februar 1997 Bernd Thomas Ich habe mal eine kleine Liste der Fragen, die ich so in den Prufungsprotokollen gefunden habe, zusammengetragen. Im groen und ganzen

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

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

Kapitel 1: Einführung und formale Grundlagen

Kapitel 1: Einführung und formale Grundlagen Ludwig Maximilians Universität München Institut für Informatik Lehr- und Forschungseinheit für Datenbanksysteme Skript zur Vorlesung Informatik I Wintersemester 2006 Kapitel 1: Einführung und formale Grundlagen

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

Ü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

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

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

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung Wintersemester 2009/10 Prof. Dr. Dr. h.c. Manfred Broy Unter Mitarbeit von Dr. K. Spies, Dr. M. Spichkova, L. Heinemann, P.

Mehr

Software Engineering II (IB) Testen von Software / Modultests

Software Engineering II (IB) Testen von Software / Modultests Testen von Software / Modultests Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Programm-Tests Tests sollen zeigen, dass ein Programm das tut was es tun soll sowie

Mehr

Grundprinzipien der funktionalen Programmierung

Grundprinzipien der funktionalen Programmierung Grundprinzipien der funktionalen Programmierung Funktionen haben keine Seiteneffekte Eine Funktion berechnet einen Ausgabewert der nur von den Eingabewerten abhängt: 12 inputs + output 46 34 2 Nicht nur

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

Vorlesung "Software-Engineering"

Vorlesung Software-Engineering Vorlesung "Software-Engineering" Rainer Marrone, TUHH, Arbeitsbereich STS Vorige Vorlesung Pflichtenheft (requirements specification document) Charakterisierung von Software-Qualität Detaillierte Anforderungsanalyse

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

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen

Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen aussagenlogischer Regeln: Wissensbasis (Kontextwissen): Formelmenge,

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

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