CIn- UFPE 1 Agentes Inteligentes Experimento... Wumpus Ambientes Arquiteturas.
Künstliche Intelligenz Unifikation, Backtracking ... · Erweitern Sie das PrologProgramm zum...
Transcript of Künstliche Intelligenz Unifikation, Backtracking ... · Erweitern Sie das PrologProgramm zum...
Künstliche IntelligenzUnifikation, Backtracking,
Rekursion und Listen in Prolog
Stephan Schwiebert
WS 2008/2009
Sprachliche Informationsverarbeitung
Institut für Linguistik
Universität zu Köln
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Aufgabe: Stammbaum
Andrea Judith Otto Silke Sebastian Torsten Kathi
Peter Petra Gerd Uschi Paul Paula
Kurt Brunhilde Theodor MarianneHans Maria
Abraham
Praxis: Stammbaum
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Praxis: Stammbaum
Erweitern Sie das PrologProgramm zum Stammbaum um folgende Informationen:
Peter hasst Gerd Uschi hasst Gerd Uschi hasst Otto Otto hasst Gerd
Implementieren Sie anschließend: X ist Feind von Y, wenn X Y hasst, „Der Feind meines Feindes ist mein Freund“ sowie „Der Freund meines Feindes ist mein Feind“.
Unifikation
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Unifikation
Variablen in Prolog werden durch das Prinzip der Unifikation gebunden, eine neue Zuweisung eines Wertes ist nicht möglich.
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Unifikation
Terme können nur dann unifiziert werden, wenn die bereits gebundenen Variablen übereinstimmen.
elternteil_von
elternteil_von
elternteil_von wumpus petra
antonfritz
wumpus X
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Unifikation
Terme können nur dann unifiziert werden, wenn die bereits gebundenen Variablen übereinstimmen.
Unifikation nicht möglich
elternteil_von
elternteil_von
elternteil_von wumpus petra
antonfritz
wumpus X
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Unifikation
Terme können nur dann unifiziert werden, wenn die bereits gebundenen Variablen übereinstimmen.
Unifikation möglich, X bekommt den Wert petra.
elternteil_von
elternteil_von
elternteil_von wumpus petra
antonfritz
wumpus X
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 07/08
Unifikation
Unifikation scheitert, wenn... es sich um zwei verschiedene atomare Strukturen handelt (z.B.
'hans' und 'otto'). ein Term atomar, der andere komplex ist (z.B. 'test' und
'test(test)'. zwei komplexe Terme unifiziert werden sollen, wobei
die Köpfe der Terme verschieden sind (z.B. 'a(X)' und 'b(X)') oder
die Stelligkeit verschieden ist (z.B. 'a(X)' und 'a(X,Y)') oder ein Argumentpaar von Argumenten gleicher Position im
Term nicht unifizierbar ist.
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Unifikation
Der UnifikationsOperator „=“ prüft, ob sich linke und rechte Seite des Operators unifizieren lassen.
Deshalb lässt er sich verwenden, um Identität zu prüfen, aber nicht, um zu rechnen o.ä.:
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 07/08
Unifikation
Welche Ausdrücke lassen sich unifizieren? X = Y. 5 = 3 + 2. X = 3 + 2. a(X) = b(X). x(A) = x(B). a(X) = a(X,Y). a(X,Y) = a(x,y). a(b(C)) = b(a(C)). a = a. f(g(A,B)) = f(g(x,y)).
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Unifikation & Backtracking
Dass Variablen (scheinbar) dennoch neu belegt werden können (wenn z.B. alle Vorfahren von wumpus ausgegeben werden), liegt daran, dass Prolog mit Hilfe von Backtracking nach Lösungen sucht.
Backtracking
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking
uninformiertes, universelles Suchverfahren (trial and error)
fester Bestandteil von Prolog Implementiert Tiefensuche in Bäumen Findet garantiert eine Lösung (falls eine Lösung
existiert)
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
(nach König/Seifert 1989: Kap. 5.3, etwas modifiziert)
Gesucht ist ein Weg vomBahnhof zur Uni.
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
(nach König/Seifert 1989: Kap. 5.3, etwas modifiziert)
An jeder Kreuzung gibt es Alternativen, die evtl. zum Ziel führen.
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
(nach König/Seifert 1989: Kap. 5.3, etwas modifiziert)
Daraus lässt sich eine Baumstruktur erzeugen, in der jeder Knoten einer Kreuzung entspricht, und in der jeder Knoten als KindKnoten die erreichbaren Kreuzungen enthält.
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni... ... ......
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ... ......
Ein BacktrackingAlgorithmus „expandiert“ den aktuellen Knoten,wählt ein Kind und setzt dieses als neuen aktuellen Knoten ein.So wird rekursiv der Baum von der Wurzel bis zu einem Blattdurchlaufen (Tiefensuche).
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ... ......
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ... ......
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ... ......
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
Sollte ein gefundenes Blatt kein Zielknoten sein (Wegsuche endet in Sackgasse), so wird der Vaterknoten des aktuellen Knoten besucht und mit dem nächsten, noch nicht besuchten Kind weitergearbeitet. Sind keine Kinder mehr vorhanden, wird zurück zum Vater des Vaters gesprungen etc...
... ...
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ...
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ...
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ...
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ...
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ...
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking: Beispiel Wegsuche
... ...
Bahnhof
Kriegsberg/Friedrich
Kronen/Lautenschlager
BahnhofFriedrich/Kronen
Kriegsberg/Kronen
Bahnhof
Uni Uni
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Backtracking & Unifikation
Wird im BacktrackingBaum ein Schritt Richtung zur Wurzel zurückgelegt, werden alle Variablen, die zuvor in diesem Schritt unifiziert wurden, wieder frei.
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Praxis: Wegsuche
ort(bahnhof).
ort(uni).
ort(krieg, friedrich).
ort(krieg, kronen).
ort(friedrich, kronen).
ort(lautenschlager, kronen).
ort(krieg, keppler).
weg(ort(bahnhof), ort(krieg,friedrich)).weg(ort(bahnhof), ort(lautenschlager,kronen)).weg(ort(krieg,friedrich), ort(friedrich,kronen)).weg(ort(lautenschlager,kronen), ort(friedrich,kronen)).weg(ort(friedrich,kronen), ort(krieg,kronen)).weg(ort(friedrich,kronen), ort(uni)).weg(ort(krieg,kronen), ort(krieg,keppler)).weg(ort(krieg,keppler), ort(uni)).
% Gesucht: Prädikat% wegsuche(X,Y) : ???% Aufruf: wegsuche(ort(bahnhof), ort(uni)).
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Praxis: Wegsuche in Prolog
Problem: Prolog sagt „Yes“, schön wäre jedoch eine Beschreibung des gesuchten Weges...
Lösung: BuildInPrädikate nl/0 und write/1 nl/0
gibt einen Zeilenumbruch aus write/1
gibt einen Term aus, z.B. write('Hallo'), write(' '), write('Welt').
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Praxis: Wegsuche in Prolog
Erweitern Sie das Programm zur Wegsuche mit Hilfe von nl/0 und write/1 um eine Ausgabe.
nl/0gibt einen Zeilenumbruch aus
write/1gibt einen Term aus, z.B. write('Hallo'), write(' '), write('Welt').
Stephan Schwiebert Sprachliche Informationsverarbeitung WS 08/09
Praxis: Wegsuche in Prolog
Lösung:ort(bahnhof)....
weg(ort(bahnhof), ort(krieg,friedrich))....
wegsuche(X, Y) :weg(X, Y),nl, write('von '), write(X), write(' nach '), write(Y), nl.
wegsuche(X, Y) :weg(X, Z),wegsuche(Z, Y),write('von '), write(X), write(' nach '), write(Z), nl.