Künstliche Intelligenz Unifikation, Backtracking ... · Erweitern Sie das PrologProgramm zum...

Post on 02-Nov-2019

8 views 0 download

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 Prolog­Programm 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 Unifikations­Operator „=“ 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 Kind­Knoten 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 Backtracking­Algorithmus „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 Backtracking­Baum 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: Build­In­Prä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.