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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

5.3 Implementierung logischer Programmiersprachen: Prolog<br />

Bevor wir e<strong>in</strong>ige <strong>die</strong>ser E<strong>in</strong>schränkungen und Erweiterungen betrachten, führen wir<br />

zunächst e<strong>in</strong>e wichtige Konstrukte und Pr<strong>in</strong>zipien zur Prolog-Programmierung e<strong>in</strong>.<br />

5.3.3 Arithmetische Operationen<br />

Die Zeichen +, −, ∗, / s<strong>in</strong>d erlaubt.<br />

Ausdrücke <strong>der</strong> Form a ∗ b + c s<strong>in</strong>d zunächst lesbare Abkürzungen für den Term<br />

+(∗(a, b), c). Hier kann zur Darstellung abhängig von <strong>der</strong> Prolog-Implementierung Infix,<br />

Postfix, Präfix, Assoziativität, Priorität benutzt werden.<br />

Zahlen s<strong>in</strong>d erlaubt und als Standard <strong>in</strong> Prolog implementiert. Der Zahlbereich ist abhängig<br />

von <strong>der</strong> Implementierung.<br />

Das Spezialprädikat = (Gleichheit) kann def<strong>in</strong>iert werden durch<br />

X = X.<br />

Z.B.<br />

?- besitzt(peter, X) = besitzt(peter,buch(lloyd,prolog))<br />

yes; X = buch(lloyd,prolog)<br />

Diese Operation <strong>der</strong> Berechnung <strong>der</strong> Instanzen von Variablen wird mittels Unifikation<br />

durchgeführt.<br />

Beachte, dass <strong>die</strong>se Gleichheit jedoch nicht wahr wird für 1+1 = 2, da 1+1 als syntaktischer<br />

Term aufgefasst wird, <strong>der</strong> an<strong>der</strong>s aussieht, als <strong>der</strong> Term (<strong>die</strong> Konstante) 2.<br />

Prolog stellt neben <strong>die</strong>sem Gleichheitstest auch weitere Gleichheitstests und arithmetische<br />

Vergleiche zur Verfügung, <strong>die</strong> jedoch an<strong>der</strong>s wirken:<br />

= Syntaktische Gleichheit (Unfikation erlaubt)<br />

=:= Wertgleichheit, <strong>die</strong> Argumente werden zu Zahlen ausgewertet und dürfen<br />

ke<strong>in</strong>e Variablen enthalten<br />

=/= Wertungleichheit<br />

< kle<strong>in</strong>er als Wertgleichheit<br />

> größer als Wertgleichheit<br />

=< kle<strong>in</strong>er gleich als Wertgleichheit<br />

>= größer gleich als Wertgleichheit<br />

Außer bei <strong>der</strong> syntaktischen Gleichheit mit Unifikation =, muss für alle an<strong>der</strong>en Operationen<br />

gelten: Wenn exp1 op exp2 ausgewertet wird, müssen exp1 und exp2 zu e<strong>in</strong>er<br />

Zahl auswertbar se<strong>in</strong>. Beachte:<br />

3 + 4 = 7 ergibt: no<br />

3 + 4 =:= 7 ergibt yes<br />

Wir testen weitere Beispiele im Prolog-Interpreter:<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!