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

Größe: px
Ab Seite anzeigen:

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

Transkript

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

2 Ziel Grundlagen von Prolog vermitteln Beispiel Path Finding Zugstrecken erklären

3 Ablauf 1. Allgemeines zu Prolog 2. Einführung Prolog 3. Beispiel 4. Was haben wir gelernt?

4 Allgemeines zu Prolog Programmation en Logique 1972, Alain Colmerauer Deklarative Programmierung

5 Allgemeines zu Prolog Vom deklarativen Wissen zum prozeduralen Programm wie funktioniert das? Logik verwendet faktische Aussagen o o Zürich hat einen Bahnhof. Bern hat einen Bahnhof.

6 Allgemeines zu Prolog Die Schlussfolgerung zur Aussage: Wenn zwei Städte X und Y einen Bahnhof haben, dann sind X und Y miteinander verbunden.

7 Allgemeines zu Prolog 2 Hauptkomponenten in Prolog: Definition der Datenbank / die Faktenbasis Definition der Rules

8 Aussage Definition in Prolog bahnhof(zürich). bahnhof(bern). verbindung(x, Y) :- bahnhof(x), bahnhof(y). Konstanten wie zürich werden klein und Variable wie X werden gross geschrieben.

9 Aussage Definition in Prolog Faktenbasis: bahnhof(brugg). bahnhof(olten). Regel: verbindung(x, Y) :- bahnhof(x), bahnhof(y). Kopf Körper

10 verbindung(x, Y) :- bahnhof(x), bahnhof(y). Kopf Körper Kopf = true, wenn alle Bedingungen des Körpers gemäss Regeldefinition wahr sind.

11 Prolog Grundlagen Das Ausführen eines Prolog-Programms bedeutet immer das Stellen einer Anfrage Prolog erwartet mit?- eine Anfrage des Users Return: yes: Anfrage ist logisch ableitbar no: keine Ableitung gefunden

12 Beispiel Faktenbasis bahnhof(brugg). bahnhof(olten). bahnhof(bern). Spezialfall: Anfrage mit Variablen?- bahnhof(brugg). yes.?- bahnhof(luzern). no.?- bahnhof(x). X=brugg X=olten X=bern

13 Prolog Grundlagen Ein AND wird in Prolog als Komma, dargestellt Ein OR wird in Prolog als Semikolon ; dargestellt Regeloperator :- Abschluss mit einem Punkt.

14 Beispiel AND?- true,true. yes?- true,false. no?- false,true. no?- false,false. no OR?- true;true. yes?- true;false. yes?- false;true. yes?- false;false. no

15 Zugverbindungen Verbindung von A nach Z lässt sich beschreiben: es gibt einen direkten Zug von A nach M, und es gibt eine Verbindung von M nach Z Dazugehörige Faktenbasis: zug(bern, olten). zug(olten, zürich). zug(solothurn, bern)....

16 Zugverbindungen In Prolog: verbindung(a, A). verbindung(a, Z) :- zug(a, M), verbindung(m, Z).

17 Transitivität Wenn es einen Weg von 0 nach 1 gibt und einen von 1 nach 2, dann existiert auch ein Weg von 0 nach 2

18 Backtracking & Unifikation hold_party(x) :- birthday(x), happy(x). birthday(tom). birthday(fred). birthday(helen). happy(helen).

19 Konkretes Beispiel Ausgangspunkt: Chur Zielpunkt: Brig 2 Kriterien: kürzeste Distanz kürzeste Dauer

20 Demo

21

22 Demo Faktenbasis: kante(chur, disentis, 61, 75). kante(chur, stgallen, 105, 82). kante(chur, zurich, 118, 75). kante(disentis, brig, 80, 193). kante(zurich, luzern, 52, 46). kante(luzern, interlaken, 68, 110). kante(interlaken, spiez, 21, 21). kante(stgallen, zurich, 85, 65). Zwischen Chur und Disentis gibt es eine Zugverbindung. Sie ist 61 km lang und dauert 75 min.

23 Demo Rekursive Berechnung des kürzesten Pfads: kurz_pfad(routes, Dest, Route) :- shortest(routes, Shortest, RestRoutes), proceed(shortest, Dest, RestRoutes, Route). shortest: proceed: Sucht bei jedem Aufruf von kurz_pfad die aktuell kürzeste Route Sucht alle benachbarte Knoten des temporären Endpunktes der kürzesten Route. Anschliessend wird auf alle gesammelten Routen wieder die Methode kurz_pfad aufgerufen. (Stichworte: Backtracking und Unifikation)

24 Chur Schritt für Schritt Evaluation St. Gallen Zürich Disentis Bern Luzern Route Distanz [km] 0 Chur 0 Spiez Interlaken Brig

25 105 Chur Schritt für Schritt Evaluation St. Gallen Zürich Disentis Bern Luzern Route Distanz [km] Spiez Interlaken 1 Chur - Disentis 61 1 Chur - St. Gallen Chur - Zürich 118 Brig

26 105 Chur Schritt für Schritt Evaluation St. Gallen Zürich Disentis Bern Luzern 80 Route Distanz [km] Spiez Interlaken 1 Chur - St. Gallen Chur - Zürich Chur - Disentis - Brig 141 Brig

27 Chur St. Gallen Zürich Disentis Schritt für Schritt Evaluation Bern Luzern 80 Route Distanz [km] Spiez Interlaken 1 Chur - Zürich Chur - Disentis - Brig Chur - St. Gallen - Zürich 190 Brig

28 Chur St. Gallen Zürich Disentis Schritt für Schritt Evaluation Bern Luzern 80 Route Distanz [km] Spiez Interlaken 2 Chur - Disentis - Brig Chur - St. Gallen - Zürich Chur - Zürich - Bern Chur - Zürich - Luzern 170 Brig

29 Demo Rekursive Berechnung des kürzesten Pfads: kurz_pfad(routes, Dest, Route) :- shortest(routes, Shortest, RestRoutes), proceed(shortest, Dest, RestRoutes, Route).

30 Demo Rekursive Berechnung des kürzesten Pfads: shortest([route Routes], Shortest, [Route Rest]):- shortest(routes, Shortest, Rest), shorter(shortest, Route),!. shortest([route Rest], Route, Rest). shorter(r(m1,_), r(m2,_)):- M1 < M2.

31 Demo Rekursive Berechnung des kürzesten Pfads: proceed(r(dist, Route), Dest, _, Route):- Route = [Dest _]. proceed(r(dist, [Last Trail]), Dest, Routes, Route):- findall( r(d1, [Z, Last Trail]), legalnode(last, Trail, Z, Dist, D1), List), append(list, Routes, NewRoutes), kurz_pfad(newroutes, Dest, Route).

32 Was haben wir gelernt? Prolog modelliert die Wissensbasis mittels Fakten und Regeln Fakten werden mit logischen Operatoren zu Regeln verknüpft Die Schlussfolgerungen werden mittels Backtracking und Unifikation ermittelt Bei der Berechnung des kürzesten Pfades mittels Breitensuche wird davon ausgegangen, dass die aktuell kürzeste Route auch langfristig die kürzeste ist.

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

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

Logische Programmierung

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

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

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

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

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

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

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

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

Mehr

Prolog. Maximilian Ronniger

Prolog. Maximilian Ronniger Prolog Autor: E-Mail: Maximilian Ronniger e0426625@student.tuwien.ac.at Basierend auf dem Artikel Describing Prolog by its interpretation and compilation von Jacques Cohen. Abstrakt Dieser Artikel bietet

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

Verbindungen ab Basel und Olten

Verbindungen ab Basel und Olten en ab Basel und Olten Direkt in Olten Direkt über Domodossola ab 1.8.2015 EC 51* IR 331 Exztrazug bis Olten EC 321 Extrazug EC 329 Extrazug ab Olten Basel ab 6.31 6.52 6.13 Liestal ab 7.02 6.22 Olten an

Mehr

Einführung in PROLOG

Einführung in PROLOG Einführung in PROLOG 1.Einfache Beispiele Es gibt nur drei Konstrukte in PROLOG. Fakts (Fakten), rules (Regeln) und queries. Eine Sammlung von Fakten und Regeln nennt man knowledge base. Beim Programmieren

Mehr

Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen

Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen Gliederung Programmierparadigmen Programmieren in Prolog D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 26. April

Mehr

Übungen zu Kognitive Systeme I

Übungen zu Kognitive Systeme I Übungen zu Kognitive Systeme I Kognitive Systeme / WIAI / Uni Bamberg 14. Oktober 2005 Inhalt 1 2 3 4 5 6 Ablauf der Übungen Ablauf SWI-Prolog Ab nächster Woche wird es Übungszettel geben Ablauf der Übungen

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

Übungen zu Kognitive Systeme I

Übungen zu Kognitive Systeme I Übungen zu Kognitive Systeme I Stephan Weller (Stephan.Weller@wiai.uni-bamberg.de) Kognitive Systeme / WIAI / Uni Bamberg 19. Oktober 2005 Inhalt Intro Was ist Prolog? Wie funktioniert Prolog? Rekursion

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

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

Structure Sharing vs. Structure Copying

Structure Sharing vs. Structure Copying a, b, c, d?-a. a, e, f CP a a, g b, c, d b, g, h g, h, c, d c, k, g h, c, d g c, d h k, g, d backtracking SLD-Ableitungen a :- b,c,d. a :- e,f. a :- g. b :- g,h. c :- k,g. g. h. CP a e, f a g { } backtracking

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

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

Logisches und funktionales Programmieren

Logisches und funktionales Programmieren Prof. Dr. Christoph Beierle, Dr. Harald Ganzinger, Prof. Dr. Michael Hanus Kurs 01816 Logisches und funktionales Programmieren LESEPROBE Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten

Mehr

Datalog. Moritz Kaufmann 1. Juni Technische Universität München

Datalog. Moritz Kaufmann 1. Juni Technische Universität München Datalog Moritz Kaufmann 1. Juni 2015 Technische Universität München Datalog Grundlagen Zusammenfassung 1. Faktenbasis (EDB = extensionale Datenbasis) 2. + logische Herleitungsregeln Ableitung neuer Fakten

Mehr

SWP Logische Programme Teil 2

SWP Logische Programme Teil 2 SWP Logische Programme Teil 2 Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at Institute for Software Technology Inhalt! Motivation! Logische Programme (LP)! Resolution! Unifikation!

Mehr

Proseminar Programmiersprachen. Prolog. Johannes Weißl. TU München. 15. November 2006

Proseminar Programmiersprachen. Prolog. Johannes Weißl. TU München. 15. November 2006 Proseminar Programmiersprachen Prolog Johannes Weißl TU München 15. November 2006 Inhalt 1 Einführung 2 Grundlegende Sprachelemente 3 Weiterführende Konzepte 4 Ausführung 5 Programm Geschichte Prolog (

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

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

Wiederholung zur SLD-Resolution (1)

Wiederholung zur SLD-Resolution (1) 8. Korrektheit und Vollständigkeit der SLD-Resolution 8-1 Wiederholung zur SLD-Resolution (1) SLD-Resolution: Selektionsfunktion: Wählt Atom der Anfrage. Nächstes zu bearbeitendes Atom. Normalerweise einfach

Mehr

Matching und Beweisstrategie

Matching und Beweisstrategie Matching und Beweisstrategie Matching: Wie werden in Prolog Variablen instantiiert? Beweisstrategie: Wie geht Prolog bei der Suche nach Antworten vor? Programmierkurs Prolog p.1 Erinnerung: Prologterme

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 28. Aussagenlogik: DPLL-Algorithmus Malte Helmert Universität Basel 2. Mai 2014 Aussagenlogik: Überblick Kapitelüberblick Aussagenlogik: 26. Grundlagen 27. Logisches

Mehr

(Logik und) Logikprogrammierung

(Logik und) Logikprogrammierung Übungsaufgaben zur Lehrveranstaltung (Logik und) Logikprogrammierung im Studiengang Informatik Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Fachgebiet Künstliche Intelligenz

Mehr

SWP Logische Programme

SWP Logische Programme SWP Logische Programme Alexander Felfernig, Stephan Gspandl Institut für Softwaretechnologie {alexander.felfernig,sgspandl}@ist.tugraz.at Institute for Software Technology Inhalt Motivation Logische Programme

Mehr

Fakten, Regeln und Anfragen

Fakten, Regeln und Anfragen Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de 18.10.99 GK Prolog - Fakten, Regeln und Anfragen 1 Programmieren = Problemlösen Prolog ist eine deklarative

Mehr

5.3 Auswertung von Ausdrücken

5.3 Auswertung von Ausdrücken 5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n

Mehr

PROLOG. Lernende Systeme WS 10/11 Crashkurs. Martin Sticht Stephan Weller

PROLOG. Lernende Systeme WS 10/11 Crashkurs. Martin Sticht Stephan Weller PROLOG Lernende Systeme WS 10/11 Crashkurs Martin Sticht Stephan Weller SWI Prolog http://www.swi-prolog.org Grundlegendes Grundkonstrukte Fakten Regeln Anfragen Fakten und Regeln kommen in die Programm-Datei

Mehr

Übung zu Kognitive Systeme I

Übung zu Kognitive Systeme I Übung zu Kognitive Systeme I Prolog Stephan Weller (Stephan.Weller@wiai.uni-bamberg.de) Kognitive Systeme / WIAI / Uni Bamberg 1. November 2006 Inhalt Intro Was ist Prolog? Wie funktioniert Prolog? Rekursion

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 - 1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung

Mehr

Was ist Logik? Was ist Logik? Aussagenlogik. Wahrheitstabellen. Geschichte der Logik eng verknüpft mit Philosophie

Was ist Logik? Was ist Logik? Aussagenlogik. Wahrheitstabellen. Geschichte der Logik eng verknüpft mit Philosophie Was ist Logik? Geschichte der Logik eng verknüpft mit Philosophie Begriff Logik wird im Alltag vielseitig verwendet Logik untersucht, wie man aus Aussagen andere Aussagen ableiten kann Beschränkung auf

Mehr

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

6. Algorithmen auf Zeichenketten

6. Algorithmen auf Zeichenketten 6. Algorithmen auf Zeichenketten Motivation Wir lernen nun Algorithmen zur Lösung verschiedener elementarer Probleme auf Zeichenketten zu lösen Zeichenketten spielen eine wichtige Rolle in diversen Gebieten

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

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

Logische und funktionale Programmierung

Logische und funktionale Programmierung Logische und funktionale Programmierung Vorlesung 8: Arithmetik, Listenprädikate, weitere Prolog Prädikate Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 1/67 ARITHMETIK

Mehr

Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008. Jun.-Prof. Dr. B. Beckert. 21.

Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008. Jun.-Prof. Dr. B. Beckert. 21. Name, Vorname: Matrikel-Nr.: Studiengang: Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008 Jun.-Prof. Dr. B. Beckert 21. Februar 2008 Informatik (Diplom) Computervisualistik

Mehr

Künstliche Intelligenz

Künstliche Intelligenz Künstliche Intelligenz Prolog - Rekursion, Backtracking Claes Neuefeind Sprachliche Informationsverarbeitung Universität zu Köln 14. Dezember 2011 Wiederholung Backtracking Praxis Hausaufgaben & Seminarplan

Mehr

Einführung in das Programmieren Prolog Sommersemester 2006. Teil 2: Arithmetik. Version 1.0

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

Mehr

Manipulation der Datenbasis und Aufsammeln von Lösungen

Manipulation der Datenbasis und Aufsammeln von Lösungen Manipulation der Datenbasis und Aufsammeln von Lösungen Heute: eingebaute Prolog-Prädikate zur Manipulation der Datenbasis Programmiertechnik: Memoisierung eigebaute Prolog-Prädikate zum Aufsammeln von

Mehr

Beachtung,Werbelokomotive SBB Werbung Juni 2016

Beachtung,Werbelokomotive SBB Werbung Juni 2016 Beachtung,Werbelokomotive 201 SBB Werbung Juni 201 Studiendesign 1/2 Auftraggeber: Research Design: Projektleitung: Methode: SBB Werbung Projektleitung: Sandra Liechti blue eyes marketing gmbh, Luzern

Mehr

Stossrichtungen und Herausforderungen Personenverkehr Jahreskonferenz EPF, Bern 14. März 2009

Stossrichtungen und Herausforderungen Personenverkehr Jahreskonferenz EPF, Bern 14. März 2009 Stossrichtungen und Herausforderungen Personenverkehr Jahreskonferenz EPF, Bern 14. März 2009 Martin Bütikofer, Leiter Regionalverkehr SBB SBB Division Personenverkehr 12.9.2008 1 Personenverkehr Der Kunde

Mehr

Eigenschaften der Resolution für PL1 Formeln

Eigenschaften der Resolution für PL1 Formeln Eigenschaften der Resolution für PL1 Formeln Widerlegungsvollständigkeit (ohne Beweis): Sofern man Resolution auf eine widersprüchliche Klauselmenge anwendet, so existiert eine endliche Folge von Resolutionsschritten,

Mehr

1 Inhalt der Vorlesung B-PS1

1 Inhalt der Vorlesung B-PS1 1 Inhalt der Vorlesung B-PS1 1.1 Tag 1 1.1.1 Vormittag Geschichte der Programmiersprachen Wie viele Programmiersprachen gibt es? https://en.wikipedia.org/wiki/list_of_programming_languages Esoterische

Mehr

Logische Programmierung & Deduktive Datenbanken Klausur

Logische Programmierung & Deduktive Datenbanken Klausur Prof. Dr. Stefan Brass 22. September 2011 Institut für Informatik MLU Halle-Wittenberg Logische Programmierung & Deduktive Datenbanken Klausur Name: Matrikelnummer: Studiengang: Aufgabe Punkte Max. Punkte

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =

Mehr

Auswahl von Klauseln und Atomen in Prolog

Auswahl von Klauseln und Atomen in Prolog 5.6 Prolog... ist die bekannteste Implementierung einer LP-Sprache; wurde Anfang der 1970er von Alain Colmerauer (Marseille) und Robert Kowalski (Edinburgh) entwickelt. konkretisiert den vorgestellten

Mehr

Binäre Suchbäume (binary search trees, kurz: bst)

Binäre Suchbäume (binary search trees, kurz: bst) Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.

Mehr

Kontrolle. bersicht. Ziel. Alle Lšsungen fÿr ein Ziel erhalten. Negation Disjunktion SuchbŠume stutzen: Cut

Kontrolle. bersicht. Ziel. Alle Lšsungen fÿr ein Ziel erhalten. Negation Disjunktion SuchbŠume stutzen: Cut Kontrolle bersicht Ziel Alle Lšsungen fÿr ein Ziel erhalten Semikolon, Failure-Driven Loop, findall/3 Negation Disjunktion SuchbŠume stutzen: Cut Kennen dieser Programmiertechniken In der Lage sein, den

Mehr

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen Technische Universität München SoSe 2015 Institut für Informatik I-16 27. Mai 2015 Dr. Tobias Lasser Lösungsvorschläge zur Musterklausur zu Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen

Mehr

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure 7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht

Mehr

Logik-Grundlagen. Syntax der Prädikatenlogik

Logik-Grundlagen. Syntax der Prädikatenlogik Logik-Grundlagen X 1 :...: X k : ( A 1 A 2... A m B 1 B 2... B n ) Logische und funktionale Programmierung - Universität Potsdam - M. Thomas - Prädikatenlogik III.1 Syntax der Prädikatenlogik Prädikat:

Mehr

Prolog: Listen und Cut. Mark Ugarov

Prolog: Listen und Cut. Mark Ugarov Prolog: Listen und Cut Mark Ugarov Übersicht Wiederholung und Anwendung Wie nutzt man? Listen Cut Anwendungsbeispiele immer parallel Wiederholung: Aufruf von Prolog-Programmen Notwendige Software: SWI

Mehr

Logische und funktionale Programmierung

Logische und funktionale Programmierung Logische und funktionale Programmierung Vorlesung 11: Logikprogramme Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 19. Dezember 2016 1/55 WIEDERHOLUNG: HORN-KLAUSELN

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine

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

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Theoretische Informatik II

Theoretische Informatik II Theoretische Informatik II Dr. Eva Richter / Holger Arnold Universität Potsdam, Theoretische Informatik, Sommersemester 2008 Übungsblatt 3 (Version 4) Abgabetermin: 13.5.2008, 12.00 Uhr Der λ-kalkül Da

Mehr

Grundlagen von Datenbanken

Grundlagen von Datenbanken Grundlagen von Datenbanken SS 2010 4. Prolog als Datenbanksprache Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher 4. Prolog als Datenbanksprache

Mehr

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Induktion und Rekursion

Induktion und Rekursion Induktion und Rekursion Induktion und Rekursion Vorkurs Informatik Theoretischer Teil WS 013/14. Oktober 013 Vorkurs Informatik WS 013/14 1/1 Vollständige Induktion Vorkurs Informatik WS 013/14 /1 Ziel

Mehr

Wissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren)

Wissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren) Was bisher geschah Wissensrepräsentation und -verarbeitung in Logiken klassische Aussagenlogik klassische Prädikatenlogik: Wiederholung Syntax, Semantik Normalformen: bereinigt Pränex Skolem ( -Eliminierung)

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Proseminar "Grundlagen höherer Programmiersprachen" Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung

Proseminar Grundlagen höherer Programmiersprachen Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung Proseminar "Grundlagen höherer Programmiersprachen" Wintersemester 2002/03 (Kröger, Rauschmayer) Logikprogrammierung Verfasser: Bettina Hikele 3. Semester Informatik EMail: bettyx@arcor.de Einführung in

Mehr

8. Logische Programmierung

8. Logische Programmierung 8. Logische Programmierung GPS-8-1 Themen dieses Kapitels: Prolog-Notation und kleine Beispiele prädikatenlogische Grundlagen Interpretationsschema Anwendbarkeit von Klauseln, Unifikation kleine Anwendungen

Mehr

8. Logische Programmierung

8. Logische Programmierung 8. Logische Programmierung GPS-8-1 Themen dieses Kapitels: Prolog-Notation und kleine Beispiele prädikatenlogische Grundlagen Interpretationsschema Anwendbarkeit von Klauseln, Unifikation kleine Anwendungen

Mehr

Teil 8: Fortgeschrittene Techniken

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

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

Mehr

Jugendskilager 2016 Lenk. Aargau. Fahrplan der Gruppe. Hinfahrt

Jugendskilager 2016 Lenk. Aargau. Fahrplan der Gruppe. Hinfahrt Aargau Baden ab 11:22 IR 2168 Brugg AG ab 11:32 Aarau ab 11:46 Olten ab 11:59 Bern an 12:26 Bern ab 13:08 Extrazug Zweisimmen ab 15:17 Extrazug Lenk i.s. an 15:34 Zweisimmen ab 10:30 Extrazug Bern an 12:06

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. Tutorium zur Vorlesung Datenbanken und Wissensrepräsentation (Prof. Dr. G. Büchel)

PROLOG. Tutorium zur Vorlesung Datenbanken und Wissensrepräsentation (Prof. Dr. G. Büchel) PROLOG Tutorium zur Vorlesung Datenbanken und Wissensrepräsentation (Prof. Dr. G. Büchel) Stand: April 2010 Verfasser: Dipl.-Ing. (FH) Andreas W. Lockermann Vorwort Der Name PROLOG leitet sich aus den

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

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner

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

Deklarative Spezifikationssprachen

Deklarative Spezifikationssprachen Deklarative Spezifikationssprachen Deklarative Spezifikationssprachen mathematische Grundlage leicht zu verstehen guter Bezug zum Problembereich gut lesbare, aber meistens ineffiziente Spezifikationen

Mehr

Funktionen. Diskrete Strukturen. Sommersemester Uta Priss ZeLL, Ostfalia. Ihre Fragen Funktionen SetlX Funktionen Verkettung und Mehrstelligkeit

Funktionen. Diskrete Strukturen. Sommersemester Uta Priss ZeLL, Ostfalia. Ihre Fragen Funktionen SetlX Funktionen Verkettung und Mehrstelligkeit Funktionen Diskrete Strukturen Uta Priss ZeLL, Ostfalia Sommersemester 2016 Diskrete Strukturen Funktionen Slide 1/23 Agenda Ihre Fragen Funktionen SetlX Funktionen Verkettung und Mehrstelligkeit Diskrete

Mehr

Logikprogrammierung. Berechnung durch Resolution Die Programmiersprache Prolog

Logikprogrammierung. Berechnung durch Resolution Die Programmiersprache Prolog Logikprogrammierung Berechnung durch Resolution Die Programmiersprache Prolog Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 6.1 Logikprogrammierung Berechnung durch Resolution 213 Resolution

Mehr

if ( Logischer Operator ) { } else { Anweisungen false

if ( Logischer Operator ) { } else { Anweisungen false if ( Logischer Operator ) { Anweisungen true else { Anweisungen false Bedingte Anweisungen Operatoren verknüpfen Variable zu neuen Ausdrücken, wir unterscheiden Arithmetische Operatoren Berechnung von

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 Was ist Programmieren? Was ist Programmieren?

Mehr

Programmiertechnik II

Programmiertechnik II Prolog 2 Überblick Deklaratives Programmieren ( Programmieren in Logik ) 1972 entwickelt von A. Colmerauer vor allem für KI-Systeme verwendet Kern-Sprache des japanischen Fifth Generation Computer Systems

Mehr

2 3 4 5 6 7 8 9 10 12,999,976 km 9,136,765 km 1,276,765 km 499,892 km 245,066 km 112,907 km 36,765 km 24,159 km 7899 km 2408 km 76 km 12 14 16 1 12 7 3 1 6 2 5 4 3 11 9 10 8 18 20 21 22 23 24 25 26 28

Mehr

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.

1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. 1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. Beschreiben Sie ferner je einen frei gewählten Datentyp aus der Gruppe der skalaren und einen aus der Gruppe der strukturierten

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Sommersemester

Mehr