Teil XI.3. Rekursive Regeln
|
|
- Claus Kerner
- vor 5 Jahren
- Abrufe
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 Übersicht Rekursion ist die wichtigste Programmiertechnik in Prolog! Rekursive Datenstrukturen Einfache und rekursiv gebildete Strukturen Rekursive Datenstrukturen und rekursive
MehrDie 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
MehrRekursion. 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).
MehrInhalt 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
MehrFragen 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
MehrReihenfolge 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
MehrInformatik 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
MehrLogische 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
MehrAlgorithmen 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
MehrTeil 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,
Mehr1. 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
Mehr260.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)
MehrVorlesung 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
MehrJAVA - 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
MehrListe: 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:
MehrSortierverfahren. 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
MehrKü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
MehrProlog 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
MehrInduktion 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
MehrDas 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
MehrEinfü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
Mehr2 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
MehrTeil 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,
MehrUE 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
MehrKombinatorik. 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
MehrProlog 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
Mehr13.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
MehrABITURPRÜ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,
MehrInformatik 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:
MehrPrinzip 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
MehrLogische Programmierung
Logische Programmierung Einleitung Elmar Eder () 1 / 27 Verschiedene Paradigmen der Programmierung Imperative Programmierung Einfache imperative Programmierung Prozedurale Programmierung Objektorientierte
MehrAlgorithmen 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
MehrFolgen 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?
MehrHä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
MehrRekursive 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
Mehrtravel(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
MehrVom 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
MehrGrundlagen 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.
MehrGrundlagen 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
Mehra) 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
MehrDatenstrukturen 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:
MehrTutorium 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
Mehr2. 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
MehrGegeben 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
MehrPath 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
MehrAlgorithmen 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
MehrGrundlegende 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.
Mehr3. 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
MehrTutoraufgabe 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
MehrEinführung in die Informatik I
Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing
MehrProgrammierung 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",
MehrEine 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
MehrAlgorithmen 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
MehrHeapsort. 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,
MehrAlgorithmen 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
MehrBetriebliche 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
MehrGreedy 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
MehrKap 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
MehrFolge 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
MehrDCG 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.
MehrDef: 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)
MehrEinfü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
MehrKurs 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
MehrSuchen 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?
MehrListen 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
MehrKü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 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
MehrII.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 -
MehrSTRIPS. 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
Mehr4. 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
MehrKü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
MehrDr. 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
MehrGrundlegende 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
MehrEINI 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
MehrDatenstrukturen & 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
MehrProlog 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:
MehrVervollstä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
MehrErnö 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
MehrWas 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
MehrProlog 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
MehrEinfü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
MehrCounting-Ü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
MehrParallele 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 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
MehrLineare 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
MehrAlgorithmen 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
MehrInformatik 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
Mehr4. 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
MehrEin 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
MehrGRUPPEN 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).
MehrInhalt. 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
MehrThü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
MehrSoftwaretechnologie 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
MehrAlgorithmen 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
MehrAlgorithms & 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
MehrAufgabe 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
Mehr12. 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
MehrLineare 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
MehrKü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
MehrGrundlagen: 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