Informatikmaterialien 
von Tino Hempel

Startseite | Informatik | Physik | Mathematik | Sonstiges |

| Inhalt | Vorherige Seite | Nächste Seite


Richard-Wossidlo-Gymnasium Ribnitz-Damgarten
Fachbereich Informatik


Regeln


Regeln gehören zu den Grundelemente eines PROLOG-Systems.  Neben einfachen UND-Regeln sollen die ODER-Regeln besprochen werden. Außerdem wird der Begriff Klausel eingeführt.  

Regeln

Regeln drücken bedingte Beziehungen zwischen Fakten aus.

Beispiele: 

Karin ist die Tochter des Vaters Fritz, falls Karin weiblich und Fritz der Vater von Karin ist.
Allgemein: X ist eine Tochter des Vaters Y, falls X weiblich und Y ein Vater von X ist. 

Aufbau in PROLOG:
Eine Regel besteht aus dem Regelkopf p und dem Regelrumpf (Bedingungen) q1 und  q2 und  ... und qn. 
Schreibweise: p :- q1, q2, ..., qn. Die Symbolik ":-" wird als "falls" gelesen.

Beispiel: 

tochter_des_vaters(X,Y):-  weiblich(X),vater_von(Y,X).

Klauseln

Klauseln sind die Fakten und Regeln, die zu ein und demselben Prädikat gehören.

Es gibt eine Klausel tochter_des_vaters, je vier Klauseln weiblich maennlich und vater_von und zwei Klauseln mutter_von.

Anfragen

Natürlich ist es möglich eine Anfrage zu stellen, indem man den Regelkopf benutzt, etwa:

Anfragen Ergebnis
?- tochter_des_vaters(maria, paul). yes
?- tochter_des_vaters(maria,X). X = paul

Prädikate mit mehreren Regeln

Die bisherige Definition der Regel lässt nur UND-Verknüpfungen zu. Der Klauselkopf p wird nur dann wahr, wenn alle Bedingungen erfüllt sind. Häufig benötigt man aber auch den ODER-Fall, d. h., der Kopf ist erfüllt, wenn eine der Bedingungen erfüllt ist. Dies drückt man in PROLOG so aus, dass man für die einzelnen ODER-Fälle separate Regeln schreibt.

Beispiele: Für die obige Wissensbasis soll die Klausel elternteil definiert werden. Man ist ein Elterteil entweder wenn man Mutter oder Vater ist. Also

elternteil_von(X,Y):- vater_von(X,Y).
elternteil_von(X,Y):- mutter_von(X,Y).

Alternativ kann man die Regel auch mit Semikolon schreiben, also 

elternteil_von(X,Y):- vater_von(X,Y); mutter_von(X,Y).



zur Startseite
© Tino Hempel 1997 - 2006 Im Web vertreten seit 1994.
Eine Internet-Seite aus dem Angebot von Tino Hempel.