20.03.2014 Aufrufe

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5 Logisches Programmieren<br />

• Bei Ausführung e<strong>in</strong>es SLD-Resolutionsschritts wird <strong>der</strong> Rumpf an <strong>die</strong> Stelle des Unterziels<br />

gesetzt, und zwar <strong>in</strong> <strong>der</strong> Reihenfolge <strong>der</strong> Literale <strong>in</strong> <strong>der</strong> Programmklausel.<br />

D.h. Prolog benutzt <strong>die</strong> Tiefensuche, wobei <strong>die</strong> Rechts-L<strong>in</strong>ks-Ordnung durch <strong>die</strong> Reihenfolge<br />

<strong>der</strong> Klauseln im Programm und <strong>die</strong> Reihenfolge <strong>der</strong> Literale <strong>in</strong> den Rümpfen def<strong>in</strong>iert<br />

wird.<br />

Beachte, dass <strong>der</strong> Stack von Literalen <strong>die</strong> Selektionsfunktion festlegt, und daher nicht <strong>die</strong><br />

Vollständigkeit des Verfahrens än<strong>der</strong>t. Die Reihenfolge <strong>der</strong> Programmklauseln zu verwenden<br />

entspricht jedoch gerade <strong>der</strong> Tiefensuche, <strong>die</strong> – wie wir bereits gesehen haben – unvollständig<br />

ist. Der Grund hierfür ist praktischer Natur: Zum e<strong>in</strong>en kann <strong>die</strong> Tiefensuche <strong>in</strong><br />

vielen Fällen schneller se<strong>in</strong>, als <strong>die</strong> Breitensuche, und zum an<strong>der</strong>en verbraucht sie bekanntlich<br />

viel weniger Platz.<br />

Aus Sicht <strong>der</strong> Prologgeme<strong>in</strong>de ist daher <strong>der</strong> Programmierer dafür verantwortlich <strong>die</strong><br />

Programmklauseln entsprechend <strong>in</strong> e<strong>in</strong>er Reihenfolge anzuordnen, so dass <strong>die</strong> Nichtterm<strong>in</strong>ierung<br />

nicht e<strong>in</strong>tritt. Im Grunde wi<strong>der</strong>spricht <strong>die</strong>s dem großen Ziel <strong>der</strong> deklarativen<br />

Programmierung, welches for<strong>der</strong>t, dass im Programm nur zu spezifizieren ist, was berechnet<br />

werden soll, aber nicht genau wie. Um Nichtterm<strong>in</strong>ierung zu vermeiden, muss <strong>der</strong><br />

Prolog-Programmierer jedoch <strong>die</strong> H<strong>in</strong>tergründe kennen und durch Anordnung <strong>der</strong> Programmklauseln<br />

auch zum Teil das Wie spezifizieren.<br />

5.3.1 Syntaxkonventionen von Prolog<br />

Namen können aus Großbuchstaben, Kle<strong>in</strong>buchstaben, Ziffern und _ (Unterstrich) gebildet<br />

werden, o<strong>der</strong> nur aus Son<strong>der</strong>zeichen.<br />

Konstanten s<strong>in</strong>d Namen, <strong>die</strong> mit Kle<strong>in</strong>buchstaben beg<strong>in</strong>nen;<br />

Variablen s<strong>in</strong>d Namen, <strong>die</strong> mit Großbuchstaben o<strong>der</strong> mit e<strong>in</strong>em Unterstrich _ beg<strong>in</strong>nen.<br />

Der Unterstrich alle<strong>in</strong>e _ ist <strong>der</strong> Name e<strong>in</strong>er anonymen Variablen (wildcard, joker, Leerstelle).<br />

Zusammengesetzte Terme (komplexe Terme) haben <strong>die</strong> Form<br />

F unctor(component 1 , . . . , component n )<br />

Die Stelligkeit des Funktors ist nicht variabel. Verwendet man den gleichen Namen mit<br />

verschiedener Stelligkeit, so werden <strong>die</strong>se Vorkommen als verschiedene Objekte <strong>in</strong>terpretiert.<br />

Funktoren, <strong>die</strong> auf oberster Ebene stehen, nennt man auch Prädikate. Z.B.<br />

besitzt(peter, buch(lloyd, prolog)).<br />

5.3.2 Beispiele zu Prologs Tiefensuche<br />

Wir betrachten zunächst e<strong>in</strong> e<strong>in</strong>faches Beispiel, dass auf dem schon e<strong>in</strong>geführten Programm<br />

basiert.<br />

Stand: 7. Januar 2013 162 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!