Teil XI.3. Rekursive Regeln

Größe: px
Ab Seite anzeigen:

Download "Teil XI.3. Rekursive Regeln"

Transkript

1 Teil XI.3 Rekursive Regeln 1

2 Beispiel Fakten: elternteil(heike, robert). elternteil(thomas, robert). elternteil(thomas, lisa). elternteil(robert, anna). elternteil(robert, petra). elternteil(petra, jakob).?- vorfahr(heike, Z). Regeln: Regel1: vorfahr(x, Z) :- elternteil(x, Z). Regel2: vorfahr(x, Z) :- elternteil(x, Y), vorfahr(y, Z). Lösungen: Z = robert, Z = anna, Z = petra, Z = jakob?- vorfahr (thomas, petra). Yes?- elternteil(thomas, petra). No 2

3 Begriffe Closed World Assumption: Jede Feststellung q über eine Beziehung ist genau dann wahr, wenn das Programm P q impliziert, ansonsten ist q unwahr. Prozedurale Bedeutung: Konkreter Ablauf eines Beweises. Kann sich durch Änderung der Reihenfolge von Regeln (und Fakten) ändern. Deklarative Bedeutung: Bestimmt nur ob ein Ziel ableitbar ist und nicht wie ein Ziel ableitbar ist. 3

4 Rekursive Inferenz (1)?- vorfahr(thomas, petra) 4

5 Rekursive Regeln: falsche Anordnung elternteil (heike, robert). elternteil (thomas, robert). elternteil (thomas, lisa). elternteil (robert, anna). elternteil (robert, petra). elternteil (petra, jakob). vorfahr (X, Z) :- vorfahr (Y, Z), elternteil (X, Y). vorfahr (X, Z) :- elternteil (X, Z).?- vorfahr (thomas,petra). 5

6 Rekursive Inferenz: Endlosschleife 6

7 Türme von Hanoi Aufgabe: Gegeben 3 Stäbe (links,mitte,rechts). Der linke Stab ist mit N Scheiben in absteigender Größe belegt. Bewege alle Scheiben von links nach rechts mit Hilfe des mittleren Stabs so, dass nie eine Scheibe auf eine kleinere Scheibe zu liegen kommt. hanoi(n):-bewege(n,links,mitte,rechts). bewege(0,_,_,_):-!. bewege(n,a,b,c):- M is N-1, bewege(m,a,c,b), inform(n,a,c), bewege(m,b,a,c). %% fertig %% bewege N Scheiben %% von A nach C ueber B %% Zuweisung %% bewege die obersten M Scheiben %% von A nach B ueber C %% bewege die unterste Scheibe von %% A nach C %% bewege die obersten M Scheiben %% von B nach C ueber A inform(n,a,b):- write( Scheibe ),write(n), write( von ),write(a), write( nach ),write(b), write(. ),nl. 7

8 Teil XI.4 Listen 8

9 Notationsmöglichkeiten Flach: [a,b,c,d] Kopf und Rest: [a [b [c [d []]]]] Punktnotation: a.b.c.d.nil Funktornotation: *(a,*(b,*(c,*(d,[])))) 9

10 Mitgliedschaft Regeln: mitglied(element,liste) mitglied(element, [Element _]). %% Fakt: Gefunden mitglied(element, [_ Rumpf]):- mitglied(element,rumpf). %% Regel: Suche im Rest. Anfragen:?- mitglied(kirsche,[apfel,birne,kirsche,ananas]). Yes?- mitglied(kirsche,[apfel,[kirsche,birne,ananas]). No?- mitglied(kirsche,x). X = [kirsche _G208]; X = [_G207, kirsche _G211] Yes 10

11 Kombination Regeln: myappend(liste1,liste2,gesamtliste) myappend([],liste,liste). myappend([kopf AlteListe], Liste, [Kopf NeueListe]):- myappend(alteliste,liste,neueliste). Anfragen:?- myappend([a, b], [c, d], [a, b, c, d]). Yes?- myappend([x, a, b, c], [d], Gesamtliste). Gesamtliste = [X, a, b, c, d].?- myappend([x [a, b, c]], [d], Gesamtliste). Gesamtliste = [X, a, b, c, d].?- myappend(x,y,[a,b,c]). X=[], Y=[a,b,c]; X=[a], Y=[b,c]; X=[a,b], Y=[c]; X=[a,b,c], Y=[]. Alternative Regel für Mitgliedschaft mitglied(x,liste):- append(liste1,[x Liste2], Liste). 11

12 Hinzufügen und Löschen hinzufuegen(x, Liste, [X Liste]). loesche(_, [], []). loesche(x, [X Rumpf], Rumpf) :-!. loesche(x, [Y Rumpf], [Y Rumpf1]):- loesche(x, Rumpf, Rumpf1). loeschealle(_, [], []). loeschealle(x, [X Rumpf], Rumpf1) :-!, loeschealle(x, Rumpf, Rumpf1). loeschealle(x, [Y Rumpf], [Y Rumpf1]):- loeschealle(x, Rumpf, Rumpf1). 12

13 Teillisten und Inverse sublist(s,l) :- myappend(_, Liste, L), %% instanziiere Liste %% mit allen "Resten" von L myappend(s,_,liste). %% instanziiere S mit allen %% "Koepfen" von Liste invert([],[]). invert([kopf Rest], Liste) :- invert(rest,rest1), myappend(rest1,[kopf],liste) %% invertiere den Rest %% haenge Kopf hinten an %% das Ergebnis. 13

14 Mengenoperationen (1) removedups([], []). removedups([x Menge1], Menge2) :- mitglied(x, Menge1),!, removedups(menge1,menge2). removedups([x Menge1], [X Menge2]) :- removedups(menge1,menge2). difference([],_,[]). difference([kopf Rest1], Menge, Rest2) :- mitglied(kopf,menge),!,difference(rest1,menge,rest2). difference([kopf Rest1], Menge, [Kopf Rest2]) :- difference(rest1,menge,rest2). myunion([],menge,menge). myunion([kopf Rest1], Menge, Rest2) :- mitglied(kopf,menge),!,myunion(rest1,menge,rest2). myunion([kopf Rest1], Menge, [Kopf Rest2]) :- myunion(rest1,menge,rest2). 14

15 Mengenoperationen (2) myintersect(a,b,resultat) :- difference(a,b,aminusb), difference(a,aminusb,resultat). myintersect1([],_,[]). myintersect1([kopf Rest1], Menge, [Kopf Rest2]) :- mitglied(kopf,menge),!,myintersect1(rest1,menge,rest2). myintersect1([kopf Rest1], Menge, Rest2) :- myintersect1(rest1,menge,rest2). myintersect2([],_,[]). myintersect2([kopf Rest1], Menge, [Kopf Rest2]) :- mitglied(kopf,menge), myintersect2(rest1,menge,rest2). myintersect2([kopf Rest1], Menge, Rest2) :- not(mitglied(kopf,menge)), myintersect2(rest1,menge,rest2). 15

16 Design Pattern für Umgang mit Listen Terminalbedingung für leere Liste intersect([],_,[]). Kopf/Rest-Rekursion: Dekonstruktion und Konstruktion: intersect([kopf Rest1], Menge, [Kopf Rest2]) :- mitglied(kopf,menge),!,intersect(rest1,menge,rest2). (Disjunkte) Fallunterscheidung: intersect([kopf Rest1], Menge, Rest2) :- intersect(rest1,menge,rest2). 16

17 Sortieren: Generiere und Teste sortiere(l1,l2):- permutation(l1,l2), sortiert(l2),!. %% Generiere %% Teste permutation([],[]). permutation(l,[k R]):- %% fuege K an erstes Element von %% permutiertem Rest append(l1,[k L2],L), %% instanziiere K mit jedem Element %% aus L append(l1,l2,r1), %% instanziiere R1 mit der Teilliste %% von L ohne K permutation(r1,r). %% instanziiere R mit Permutation von R1 sortiert([]). sortiert([x]). sortiert([x,y L]):- X =< Y, sortiert([y L]). 17

18 Sortieren durch Einfuegen insort([],[]). insort([k R],L) :- insort(r,r1), %% sortiere Rest sortinto(k,r1,l). %% fuege K in R1 sortiert ein sortinto(x,[k R],[K R1]):- K =< X, %% X gehoert nach K!, sortinto(x,r,r1). sortinto(x,l,[x L]). 18

19 Bubblesort bubblesort(l,s):- myappend(x,[a,b Y],L), B < A,!, myappend(x,[b,a Y],M), bubblesort(m,s). bubblesort(l,l). %% instanziiere A,B mit allen %% aufeinanderfolgenden Elementen aus L %% wenn B kleiner als A %% vertausche B und A %% sortiere Resultat. 19

20 Quicksort %% split(x,l,l1,l2) %% Teile Liste L in L1 und L2, sodass alle Elemente in %% in L1 =< X und alle Elemente in L2 > X sind. split(x,[k R],[K R1],L2):- K =< X, %% K kommt in L1 = [K R1] split(x,r,r1,l2). %% Teile restliche Liste split(x,[k R],L1,[K R2]):- K > X, %% K kommt in L2 = [K R2] split(x,r,l1,r2). %% Teile restliche Liste split(_,[],[],[]). %% Leere Liste wird nicht geteilt. quicksort([],[]). quicksort([k R],L):- split(k,r,l1,l2), %% Teile Rest R nach Kopf K %% in Listen L1 und L2 quicksort(l1,s1), %% Sortiere L1, ergibt S1 quicksort(l2,s2), %% Sortiere L2, ergibt S2 append(s1,[k S2],L). %% Fuege Kopf K zwischen S1 und S2. 20

21 Teil XI.5 Umgang mit Baumstrukturen 21

22 Symbolisches Differenzieren dc/dx 0 dx/dx 1 d( U)/dx du/dx d(u + V )/dx du/dx + dv/dx d(u V )/dx du/dx dv/dx d(cu)/dx c(du/dx) d(uv )/dx U(dV/dx) + V (du/dx) d(u/v )/dx d(uv 1 )/dx d(u c )/dx cu c 1 (du/dx) d(log e U)/dx U 1 (du/dx) 22

23 Symbolisches Differenzieren in Prolog?- op(300,yfx,^). d(x,x,1):-!. d(c,x,0):-atomic(c). d(-u,x,-a):-d(u,x,a). d(u+v,x,a+b):-d(u,x,a),d(v,x,b). d(u-v,x,a-b):-d(u,x,a),d(v,x,b). d(c*u,x,c*a):-atomic(c),c\=x,d(u,x,a),!. d(u*v,x,b*u+a*v):-d(u,x,a),d(v,x,b). d(u/v,x,a):-d(u*v^(-1),x,a). d(u^c,x,c*u^(c-1)*w):-atomic(c), C\=X,d(U,X,W). d(log(u),x,a*u^(-1)):-d(u,x,a).?- d(x^n+3*x^2,x,r). R = n*x^ (n-1)*1+3* (2*x^ (2-1)*1) Yes?- d(log(x^3),x,r). R = 3*x^ (3-1)*1*x^3^ -1 Yes 23

24 Vereinfachung Arithmetischer Ausdrücke (1) simp(e,e):-atomic(e),!. simp(e,f):- E=..[Op,L,R], simp(l,x), simp(r,y), s(op,x,y,f). 24

25 Vereinfachung Arithmetischer Ausdrücke (2) s(+,x,y,z):-integer(x),integer(y),!,z is X + Y. s(+,x,0,x):-!. s(+,0,x,x):-!. s(+,x+y,w,x+z):-integer(y),integer(w),!,z is Y+W. s(+,x,y,x+y):-!. s(-,x,y,z):-integer(x),integer(y),!,z is X - Y. s(-,x,0,x):-!. s(-,0,x,-x):-!. s(-,x,y,x-y):-!. s(*,x,y,z):-integer(x),integer(y),!,z is X * Y. s(*,_,0,0):-!. s(*,0,_,0):-!. s(*,1,x,x):-!. s(*,x,1,x):-!. s(*,x*y,w,x*z):-integer(y),integer(w),!,z is Y*W. s(*,x,y,x*y):-!. s(/,_,0,error):-!. s(/,0,_,0):-!. s(/,x,1,x):-!. s(/,x,y,x/y):-!. s(^,x,1,x):-!. s(^,_,0,1):-!. s(^,x,y,x^y):-!. 25

26 Symbolisches Differenzieren mit Vereinfachung sd(x,y,z):- d(x,y,z1),simp(z1,z).?- sd(x^n+3*x^2,x,r). R = n*x^ (n-1)+3* (2*x) Yes?- sd(log(x^3),x,r). R = 3*x^2*x^3^ -1 Yes?- sd(x^3*(x+a),x,r). R = x^3+3*x^2* (x+a) Yes 26

Rekursive Listenverarbeitung

Rekursive Listenverarbeitung Rekursive Listenverarbeitung Übersicht Rekursion ist die wichtigste Programmiertechnik in Prolog! Rekursive Datenstrukturen Einfache und rekursiv gebildete Strukturen Rekursive Datenstrukturen und rekursive

Mehr

Die Ausgangsposition. Der aus drei Scheiben bestehende Turm steht auf Platz 1.

Die Ausgangsposition. Der aus drei Scheiben bestehende Turm steht auf Platz 1. Der Turm von Hanoi 1. Schritt Die Ausgangsposition. Der aus drei Scheiben bestehende Turm steht auf Platz 1. Im ersten Schritt legen wir die oberste Scheibe auf Platz 3. Nun legen wir die mittlere Scheibe

Mehr

Rekursion. rekursive Prädikate. deklarative vs. prozedurale Bedeutung von Prädikaten. Programmierkurs Prolog p.1

Rekursion. rekursive Prädikate. deklarative vs. prozedurale Bedeutung von Prädikaten. Programmierkurs Prolog p.1 Rekursion rekursive Prädikate deklarative vs. prozedurale Bedeutung von Prädikaten Programmierkurs Prolog p.1 is digesting/2 is digesting(x,y) :- just ate(x,y). is digesting(x,y) :- just ate(x,z), is digesting(z,y).

Mehr

Inhalt Kapitel 2: Rekursion

Inhalt Kapitel 2: Rekursion Inhalt Kapitel 2: Rekursion 1 Beispiele und Definition 2 Partialität und Terminierung 3 Formen der Rekursion Endständige Rekursion 4 Einbettung 29 Beispiele und Definition Rekursion 30 Man kann eine Funktion

Mehr

Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren?

Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren? Attribut-Werte-Paare Eine Eigenschaft kann beschrieben werden durch ein Paar [a,w]. Dabei bezeichnet a das Attribut und w den konkreten Wert aus dem Wertebereich W a des Attributs. Die Eigenschaften eines

Mehr

Reihenfolge von Klauseln

Reihenfolge von Klauseln Reihenfolge von Klauseln Bei der Programmierung in Prolog steht grundsätzlich die Repräsentation logischer Zusammenhänge im Vordergrund. Nichtsdestotrotz ist es unvermeidbar, die Mechanismen der Abarbeitung

Mehr

Informatik A - Wiederholung

Informatik A - Wiederholung Informatik A - Wiederholung Norbert Fuhr Vom Lernen und Vergessen Am Ende einer Vorlesung wissen die Studenten noch ca. 50% des vorgetragenen Stoffes Nach einer Woche erinnern sie sich noch an 10-15% Nach

Mehr

Logische und funktionale Programmierung

Logische und funktionale Programmierung Logische und funktionale Programmierung Vorlesung 10: Prolog - Das Prädikat CUT Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 12. Dezember 2016 1/38 UNTERBINDEN

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 11. Übung Verkettete Listen, Sortieren Insertionsort, Mergesort, Radixsort, Quicksort Clemens Lang Übungen zu AuD 19. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen

Mehr

Teil 1: Ein motivierendes Beispiel

Teil 1: Ein motivierendes Beispiel Einführung in das Programmieren Prolog Sommersemester 2006 Teil 1: Ein motivierendes Beispiel Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax,

Mehr

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 - 1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von

Mehr

260.170 VO Einführung in das funktionale und symbolische Programmieren mit Mathematica. F. Mittendorfer. E-mail: Florian.Mittendorfer@univie.ac.

260.170 VO Einführung in das funktionale und symbolische Programmieren mit Mathematica. F. Mittendorfer. E-mail: Florian.Mittendorfer@univie.ac. 260.170 VO Einführung in das funktionale und symbolische Programmieren mit Mathematica F. Mittendorfer E-mail: Florian.Mittendorfer@univie.ac.at Überblick 1. Einleitung 1.0. Computer Algebra Systems (CAS)

Mehr

Vorlesung Künstliche Intelligenz Alexander Manecke Oliver Schneider Andreas Stoffel 9. Mai 2006

Vorlesung Künstliche Intelligenz Alexander Manecke Oliver Schneider Andreas Stoffel 9. Mai 2006 Vorlesung Künstliche Intelligenz 9. Mai 2006 Aufgabe 1: Listen in Prolog a) Den Fall der leeren Liste müssen wir hier nicht betrachten, denn eine leere Liste besitzt kein Maximum. Also ist Standardantwort

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

Liste: beliebig lange, geordnete Sequenz von Termen. Kopf ist erstes Listenelement, Schwanz die restliche Liste

Liste: beliebig lange, geordnete Sequenz von Termen. Kopf ist erstes Listenelement, Schwanz die restliche Liste Listen Liste: beliebig lange, geordnete Sequenz von Termen.(Kopf, Schwanz) Kopf ist erstes Listenelement, Schwanz die restliche Liste leere Liste [] Ende der Liste wird durch [] gekennzeichnet Beispiel:

Mehr

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Sortierverfahren. Sortierverfahren für eindimensionale Arrays Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige

Mehr

Künstliche Intelligenz Unifikation, Backtracking, Rekursion und Listen in Prolog

Künstliche Intelligenz Unifikation, Backtracking, Rekursion und Listen in Prolog Künstliche Intelligenz fikation, Backtracking, Rekursion und Listen in Prolog Stephan Schwiebert WS 2008/2009 Sprachliche Informationsverarbeitung Institut für Linguistik versität zu Köln Aufgabe: Stammbaum

Mehr

Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich

Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich Inhalt Vom deklarativen Wissen zum prozeduralen Programm Vom Programm zur Berechnung Elemente eines Prolog-Programms Zugverbindungen

Mehr

Induktion und Rekursion

Induktion und Rekursion Mathematische Beweistechniken Vorkurs Informatik SoSe13 10. April 013 Mathematische Beweistechniken Ziel Mathematische Beweistechniken Ziel beweise, dass eine Aussage A(n) für alle n N gilt. Beispiel Für

Mehr

Das Programm ist deterministisch: es gibt für jedes Ziel höchstens eine Klausel, die zur erfolgreichen Ableitung des Zieles

Das Programm ist deterministisch: es gibt für jedes Ziel höchstens eine Klausel, die zur erfolgreichen Ableitung des Zieles Green Cuts Klauseln zum Mischen zweier geordneten Listen: merge ( [X Xs ], [Y Ys ], [X Zs ] ) : X < Y, merge ( Xs, [ Y Ys ], Zs ). (1) merge ( [X Xs ], [Y Ys ], [ X,Y Zs ] ) : X =:= Y, merge (Xs, Ys, Zs

Mehr

Einführung in die Programmierung I. 6. Sortieren. Stefan Zimmer

Einführung in die Programmierung I. 6. Sortieren. Stefan Zimmer Einführung in die Programmierung I 6. Sortieren Stefan Zimmer 26.11.2007 2 Sortieren Gegeben seien n Dinge ai, 1 i n, und eine Vergleichsoperation (z.b. Zahlen und

Mehr

2 Logikprogrammierung am Beispiel Prolog

2 Logikprogrammierung am Beispiel Prolog 2 Logikprogrammierung am Beispiel Prolog 2.1 Logikprogrammierung mit einfachen Daten 2.2 Variablenumbenennung 2.3 Syntax 2.4 Komplexe Daten 2.5 Der Cut 2.6 Negation als Fehlschlag 2.7 Literaturhinweise

Mehr

Teil 4: Rekursion und Listen

Teil 4: Rekursion und Listen Einführung in das Programmieren Prolog Sommersemester 2006 Teil 4: Rekursion und Listen Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln,

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung

Mehr

Kombinatorik. Matthias Bayerlein Matthias Bayerlein Kombinatorik / 34

Kombinatorik. Matthias Bayerlein Matthias Bayerlein Kombinatorik / 34 Kombinatorik Matthias Bayerlein 25.6.2010 Matthias Bayerlein Kombinatorik 25.6.2010 1 / 34 Überblick Grundlagen aus der Schule Spezielle Zahlenfolgen Zusammenfassung Matthias Bayerlein Kombinatorik 25.6.2010

Mehr

Prolog by example. Carsten Rösnick

Prolog by example. Carsten Rösnick Prolog by example Carsten Rösnick Was ist Prolog? Programmation en Logique (1970er) Nutzer erstellt Datenbasis Definiert, was gilt in seinem Universum Closed-world assumption Inferenz Grundlagen (1) Ein

Mehr

13.2) Implementieren Sie nun das Prädikat differenz/3 indem nur Elemente vorkommen die exklusiv in L1 vorkommen. L1=[1,2,3,4],L2=[3,4,5,6],L3=[1,2]

13.2) Implementieren Sie nun das Prädikat differenz/3 indem nur Elemente vorkommen die exklusiv in L1 vorkommen. L1=[1,2,3,4],L2=[3,4,5,6],L3=[1,2] Aufgabenblatt 6: Einführung in das Symbolische Programmieren CIS, WS 2010 ===================================================================== Lösung Aufgabe 13 13.1) Gegeben seinen zwei Listen, L1 und

Mehr

ABITURPRÜFUNG 2010 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2010 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2010 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Bearbeitungszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 8, 22.4.2009 simonmayer@student.ethz.ch ETH Zürich Aufgabe 1: Pointer & Structs Schauen wir s uns an! Aufgabe 2: Grossteils gut gemacht! Dynamische Arrays! Sortieren:

Mehr

Prinzip der Inklusion- Exklusion

Prinzip der Inklusion- Exklusion Prinzip der Inklusion- Exklusion Ziel: Zählen von Elementen in nicht-disjunkten Mengen. 2 Mengen A 1, A 2 : Zählen zunächst die Elemente in A 1. Addieren dazu die Anzahl der Elemente in A 2. Zählen damit

Mehr

Logische Programmierung

Logische Programmierung Logische Programmierung Einleitung Elmar Eder () 1 / 27 Verschiedene Paradigmen der Programmierung Imperative Programmierung Einfache imperative Programmierung Prozedurale Programmierung Objektorientierte

Mehr

Algorithmen und Datenstrukturen 12

Algorithmen und Datenstrukturen 12 12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort

Mehr

Folgen und Reihen. 1. Folgen

Folgen und Reihen. 1. Folgen 1. Folgen Aufgabe 1.1. Sie kennen alle die Intelligenztests, bei welchen man zu einer gegebenen Folge von Zahlen die nächsten herausfinden soll. Wie lauten die nächsten drei Zahlen bei den folgenden Beispielen?

Mehr

Häufige Mengen ohne Kandidatengenerierung. FP-Tree: Transaktionen. Konstruktion eines FP-Trees. FP-Tree: Items

Häufige Mengen ohne Kandidatengenerierung. FP-Tree: Transaktionen. Konstruktion eines FP-Trees. FP-Tree: Items Häufige Mengen ohne Kandidatengenerierung Jiawei Han, Micheline Kamber 2006 (2nd ed.)! Ziel 1: Kompression der Datenbank in eine Frequent-Pattern Tree Struktur (FP-Tree)! Stark komprimiert, vollständig

Mehr

Rekursive Programmiertechniken. Einfachste Rekursion mit Babuschka. Hyponymie: Unterbegriffshierarchie. Linksrekursion mit Babuschka

Rekursive Programmiertechniken. Einfachste Rekursion mit Babuschka. Hyponymie: Unterbegriffshierarchie. Linksrekursion mit Babuschka Rekursive Programmiertechniken Einfachste Rekursion mit Babuschka Übersicht Linksrekursion Transitive Relationen berechnen Hierarchische Beziehungen: Hyponymie Dekomposition eines (von mehreren) Arguments

Mehr

travel(valmont,paris,go(valmont,metz,go(metz,paris))) die Antwort yes ausgeben. Fragt man dein Programm nach

travel(valmont,paris,go(valmont,metz,go(metz,paris))) die Antwort yes ausgeben. Fragt man dein Programm nach Info 13 LK (GA) Bearbeitungszeit: 180 min Seite 1 Aufgabe 1: Du kennst vielleicht diese russischen Holzpüppchen, in denen immer noch eine kleinere drin steckt. Rechts ist eine schematische Abbildung von

Mehr

Vom Leichtesten zum Schwersten Sortieralgorithmen

Vom Leichtesten zum Schwersten Sortieralgorithmen Aktivität 7 Vom Leichtesten zum Schwersten Sortieralgorithmen Zusammenfassung Häufig verwendet man Computer dazu Listen von Elementen in eine bestimmte Ordnung zu bringen. So kann man beispielsweise Namen

Mehr

Grundlagen der Technischen Informatik

Grundlagen der Technischen Informatik TECHNISCHE FAKULTÄT Lösungshinweis zur 5. Übung der Vorlesung Grundlagen der Technischen Informatik Aufgabe 1 (Boolesche Algebra - Gültigkeit) Prüfen Sie auf Gültigkeit: a) Gültig. De Morgansche Gesetz.

Mehr

Grundlagen der Programmierung 2. Sortierverfahren

Grundlagen der Programmierung 2. Sortierverfahren Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge

Mehr

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: 1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Tutorium Prolog für Linguisten 8

Tutorium Prolog für Linguisten 8 Endliche Automaten Tutorium Prolog für Linguisten 8 Sebastian Golly 18. Dezember 2012 Sebastian Golly Tutorium Prolog für Linguisten 8 1 / 13 Endliche Automaten Plan für heute? Sebastian Golly Tutorium

Mehr

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017 2. Algorithmische Methoden 2.1 Rekursion 18. April 2017 Rekursiver Algorithmus Ein rekursiver Algorithmus löst ein Problem, indem er eine oder mehrere kleinere Instanzen des gleichen Problems löst. Beispiel

Mehr

Gegeben sei die folgende Prolog Datenbank mit Fakten der Form

Gegeben sei die folgende Prolog Datenbank mit Fakten der Form Aufgabenblatt 7: Einführung in das Symbolische Programmieren CIS, WS 2010 ===================================================================== Abgabe: Am Montag, 6.12. 8.00 Uhr durch die Abgabemaske auf

Mehr

Path Finding with Prolog. AAI Projekt Thien-An Bui und Marlene Wittwer FHNW Brugg-Windisch, HS 2014

Path Finding with Prolog. AAI Projekt Thien-An Bui und Marlene Wittwer FHNW Brugg-Windisch, HS 2014 Path Finding with Prolog AAI Projekt Thien-An Bui und Marlene Wittwer FHNW Brugg-Windisch, HS 2014 Ziel Grundlagen von Prolog vermitteln Beispiel Path Finding Zugstrecken erklären Ablauf 1. Allgemeines

Mehr

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen

Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen WS 08/09 Friedhelm Meyer auf der Heide Vorlesung 11, 18.11.08 Friedhelm Meyer auf der Heide 1 Randomisierte Algorithmen Friedhelm Meyer auf

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.

Mehr

3. Exkurs in weitere Arten der Programmierung

3. Exkurs in weitere Arten der Programmierung 3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Funktional-Logische Programmierung in Prolog Funktional-logische Programmierung in Prolog Prolog Programming

Mehr

Tutoraufgabe 1 (Auswertungsstrategie):

Tutoraufgabe 1 (Auswertungsstrategie): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Auswertungsstrategie): Gegeben sei das folgende Haskell-Programm: absteigend :: Int - > [ Int

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing

Mehr

Programmierung mit C Algorithmen

Programmierung mit C Algorithmen Programmierung mit C Algorithmen Informationen /7/ Robert Sedgewick Algorithmen in C. 742 Seiten, ISBN 3-827-37182-1. /8/ Kyle Loudon Algorithmen mit C, ISBN 3-4897-211653-0. Online-Buch "C von A bis Z",

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

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50 Heapsort Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen 27.6.2007 / 50 Heapsort - Wiederholung Definition Array A[..n] mit Einträgen aus (U,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Betriebliche Optimierung

Betriebliche Optimierung Betriebliche Optimierung Joachim Schauer Institut für Statistik und OR Uni Graz Joachim Schauer ( Institut für Statistik und OR Uni Graz Betriebliche ) Optimierung 1 / 19 1 Joachim Schauer ( Institut für

Mehr

Greedy Algorithms - Gierige Algorithmen

Greedy Algorithms - Gierige Algorithmen Greedy Algorithms - Gierige Algorithmen Marius Burfey 23. Juni 2009 Inhaltsverzeichnis 1 Greedy Algorithms 1 2 Interval Scheduling - Ablaufplanung 2 2.1 Problembeschreibung....................... 2 2.2

Mehr

Kap 7. Funktionen und Arrays

Kap 7. Funktionen und Arrays Kap 7. Funktionen und Arrays Elementare Algorithmen Allgemein Mathematik Text Eingabe ٧ Skalarprodukt wie Allgemein Ausgabe ٧ Länge ersetzen Summation Winkel Laenge Maximum ٧ Polynome berechnen ausschneiden

Mehr

Folge 13 - Quicksort

Folge 13 - Quicksort Für Abiturienten Folge 13 - Quicksort 13.1 Grundprinzip des Quicksort Schritt 1 Gegeben ist ein unsortierter Array von ganzen Zahlen. Ein Element des Arrays wird nun besonders behandelt, es wird nämlich

Mehr

DCG II. Heute: DCGs mit extra Argumenten. DCGs mit Agreementmerkmalen. Parsebäume. Extra Tests. Programmierkurs Prolog p.1

DCG II. Heute: DCGs mit extra Argumenten. DCGs mit Agreementmerkmalen. Parsebäume. Extra Tests. Programmierkurs Prolog p.1 DCG II Heute: DCGs mit extra Argumenten DCGs mit Agreementmerkmalen Parsebäume Extra Tests Programmierkurs Prolog p.1 Extra Argumente Beispiele: x - - y. s - - np, vp. x(foo, ba) - - y. s(f) - - np, vp.

Mehr

Def: Ein Prolog Programm ist eine geordnete Menge von Klauseln. Klauseln können entweder Fakten oder Regeln sein.

Def: Ein Prolog Programm ist eine geordnete Menge von Klauseln. Klauseln können entweder Fakten oder Regeln sein. Zusammenfassung Prolog Repititorium Def: Ein Prolog Programm ist eine geordnete Menge von Klauseln. Klauseln können entweder Fakten oder Regeln sein. Fakt: mann(tobias). vater(frank, tobias). Regel: grossvater(x,y)

Mehr

Einführung in die Informatik I Kapitel II.3: Sortieren

Einführung in die Informatik I Kapitel II.3: Sortieren 1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

Mehr

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Kurs 1663 Datenstrukturen Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom 15.08.98 Seite 1 Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. August 1998 Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur

Mehr

Suchen und Sortieren

Suchen und Sortieren Ideen und Konzepte der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn (viele Folien von Kostas Panagiotou) Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?

Mehr

Listen und Akkumulatoren

Listen und Akkumulatoren Listen und Akkumulatoren Weitere Beispiele zur Listenmanipulation Akkumulatoren zur Effizienzsteigerung Nicht-deterministischer Automat Quicksort mit Prolog Ein Element an eine Liste anhängen, ein Element

Mehr

Künstliche Intelligenz Logische Agenten & Resolution

Künstliche Intelligenz Logische Agenten & Resolution Künstliche Intelligenz Logische Agenten & Resolution Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Inferenz-Algorithmus Wie könnte ein

Mehr

Übung: Algorithmen und Datenstrukturen SS 2007

Übung: Algorithmen und Datenstrukturen SS 2007 Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung

Mehr

II.3.1 Rekursive Algorithmen - 1 -

II.3.1 Rekursive Algorithmen - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -

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

4. Sortieren 4.1 Vorbemerkungen

4. Sortieren 4.1 Vorbemerkungen . Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig

Mehr

Künstliche Intelligenz Hornklauseln & Prolog

Künstliche Intelligenz Hornklauseln & Prolog Künstliche Intelligenz Hornklauseln & Prolog Stephan Schwiebert WS 2007/2008 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Terminologie (A B C) E Rumpf einer Klausel

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

Prolog 3. Kapitel: Rekursion

Prolog 3. Kapitel: Rekursion Zusammenfassung: Kapitel 2 Prolog 3. Kapitel: Rekursion Wir haben gelernt wie komplexe Strukturen durch Matching in Prolog aufgebaut werden können und wie die Beweisführung in Prolog funktioniert. Dozentin:

Mehr

Vervollständigung Lateinischer Quadrate

Vervollständigung Lateinischer Quadrate Vervollständigung Lateinischer Quadrate Elisabeth Schmidhofer 01.12.2013 Inhaltsverzeichnis 1 Vorwort 3 2 Einleitung 4 2.1 Beispele.............................................. 4 3 Lateinische Quadrate

Mehr

Ernö Rubik Benedikt Berchtenbreiter, Der Rubik's Cube 1

Ernö Rubik Benedikt Berchtenbreiter, Der Rubik's Cube 1 Ernö Rubik Er wurde am 13.07.1940 in Budapest geboren. Später war er Architekt, Designer und wurde Professor an der Moholy-Nagy-Universität für Kunsthandwerk und Gestaltung. 1974 erstellt er den ersten

Mehr

Was ist Logische Programmierung?

Was ist Logische Programmierung? Was ist Logische Programmierung? Die Bedeutung eines Computer-Programms kann durch Logik erklärt werden. Die Idee der logischen Programmierung besteht darin, die Logik eines Programms selber als Programm

Mehr

Prolog 3. Kapitel: Rekursion

Prolog 3. Kapitel: Rekursion Prolog 3. Kapitel: Rekursion Dozentin: Wiebke Petersen Kursgrundlage: Learn Prolog Now (Blackburn, Bos, Striegnitz) Petersen Prolog: Kapitel 3 1 Zusammenfassung: Kapitel 2 Wir haben gelernt wie komplexe

Mehr

Einführung in PROLOG. Christian Stocker

Einführung in PROLOG. Christian Stocker Einführung in PROLOG Christian Stocker Inhalt Was ist PROLOG? Der PROLOG- Interpreter Welcher Interpreter? SWI-Prolog Syntax Einführung Fakten, Regeln, Anfragen Operatoren Rekursion Listen Cut Funktionsweise

Mehr

Counting-Übungen (SS4) Felix Rohrer. Grundlagen des Zählens. 1. KR, Abschnitt 5.1, Aufgabe 7: I. KR, Abschnitt 5.1, Aufgabe 15:

Counting-Übungen (SS4) Felix Rohrer. Grundlagen des Zählens. 1. KR, Abschnitt 5.1, Aufgabe 7: I. KR, Abschnitt 5.1, Aufgabe 15: Counting-Übungen (SS4) Felix Rohrer Grundlagen des Zählens 1. KR, Abschnitt 5.1, Aufgabe 7:? Es gibt 17'576 Monogramme 17576 (1.1) I. KR, Abschnitt 5.1, Aufgabe 15: Wörter mit 1 Zeichen + Wörter mit 2

Mehr

Parallele Algorithmen

Parallele Algorithmen Parallele Algorithmen bereits behandelt: paralleles Sortieren mit Ranksort parallele Matrixmultiplikation nach Gentleman numerisches Iterationsverfahren nach Jacobi Matrixmultiplikation im Hypercube (DNS-Verfahren)

Mehr

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

Lineare Kongruenzgeneratoren und Quicksort

Lineare Kongruenzgeneratoren und Quicksort Seminar Perlen der theoretischen Informatik Dozenten: Prof. Johannes Köbler und Olaf Beyersdorff Lineare Kongruenzgeneratoren und Quicksort Ausarbeitung zum Vortrag Mia Viktoria Meyer 12. November 2002

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 03.12.2013 Algorithmische Geometrie: Schnitte von Strecken Sweep-Line INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

Mehr

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java) 4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 8./15. November 2005 Einordnung

Mehr

Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet.

Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet. 3.6 Rekursion Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet. Klassisches Beispiel: Berechnung von n! (Fakultät

Mehr

GRUPPEN UND RUBIK S WÜRFEL

GRUPPEN UND RUBIK S WÜRFEL GRUPPEN UND RUBIK S WÜRFEL HERBERT KOCH 1. Vorlesung: Notation und Gruppen 1.1. Notation. Der Würfel hat sechs Seiten: Front (vorne), back (hinten), left (links), right (rechts), up (oben) und down (unten).

Mehr

Inhalt. 1 Mathematik? 2 PROLOG-1: Aussagen und Mengen. 3 PROLOG-2: Funktionen. 4 PROLOG-3: Zahlenmengen und vollständige Induktion

Inhalt. 1 Mathematik? 2 PROLOG-1: Aussagen und Mengen. 3 PROLOG-2: Funktionen. 4 PROLOG-3: Zahlenmengen und vollständige Induktion Inhalt 1 Mathematik? 2 PROLOG-1: Aussagen und Mengen 3 PROLOG-2: Funktionen 4 PROLOG-3: Zahlenmengen und vollständige Induktion 5 PROLOG-4: Ungleichungen Daniel Weller (Inst. f. Diskr. Math.) PROLOG 2013

Mehr

Thüringer Kultusministerium

Thüringer Kultusministerium Thüringer Kultusministerium Abiturprüfung 1999 Informatik als Leistungsfach (Haupttermin) Arbeitszeit: Hilfsmittel: 270 Minuten Formeln und Tabellen für die Sekundarstufen I und II/ Paetec, Gesellschaft

Mehr

Softwaretechnologie für Fortgeschrittene Teil Eide Stunde I, teil I (auf Basis von Thaller)

Softwaretechnologie für Fortgeschrittene Teil Eide Stunde I, teil I (auf Basis von Thaller) Softwaretechnologie für Fortgeschrittene Teil Eide Stunde I, teil I (auf Basis von Thaller) Köln 26. November 2015 I. Rekapitulation 2 Gegenstand v Abstrakte Überlegungen zum Wesen der Information. v Darstellung

Mehr

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1

Mehr

Algorithms & Data Structures 2

Algorithms & Data Structures 2 Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN

Mehr

Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte)

Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte) Matrikelnummer: 1 Aufgabe 1 Basiswissen zur Vorlesung (8 Punkte) Kreuzen Sie an, ob die folgenden Aussagen richtig oder falsch sind. Bewertung: keine Antwort: 0 Punkte richtige Antwort: +0.5 Punkte falsche

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Lineare Liste. struct list_element { float f; /* weitere Elemente */ struct list_element *next; /* Zeiger auf Nachfolger-Element */ }; Peter Sobe

Lineare Liste. struct list_element { float f; /* weitere Elemente */ struct list_element *next; /* Zeiger auf Nachfolger-Element */ }; Peter Sobe Lineare Liste Zeigertechnik zum dynamischen Herstellen und Lösen von Verbindungen zwischen Datenelementen Einsatz des Verbundtyps struct {...} in Kombination mit Zeigern. Da das Element selbst eine Struktur

Mehr

Künstliche Intelligenz Einführung in Prolog

Künstliche Intelligenz Einführung in Prolog Künstliche Intelligenz Einführung in Prolog Stephan Schwiebert WS 2009/20010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Wiederholung: Prolog-Syntax Ein einfaches Expertensystem

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr