PROLOG
Die Rose ist rot.
Die Tulpe ist gelb.
Die Nelke ist weiss.
Das Vergissmeinnicht ist blau.
Das Veilchen ist blau.
Umgangssprache PROLOG
Die Rose ist rot.
Die Tulpe ist gelb.
Die Nelke ist weiss.
Das Vergissmeinnicht ist blau.
Das Veilchen ist blau.
rot(rose).
gelb(tulpe).
weiss(nelke).
blau(vergissmeinnicht)
blau(veilchen).
Syntax
• Objekte u. Prädikate werden klein geschrieben
• Am Ende Punkt, Return
• Variablen werden groß geschrieben
• UND als Komma
• ODER als Semikolon
Regeln zur Definition von Prädikaten
• Y ist Mutter von x, falls Y ElternteilvonX ist und Y weiblich ist.
• Y ist Kind von X, falls X Elternteil von Y ist.
• mutter(X,Y):- elter(X,Y), weibl(Y).
• kind(X,Y):- elter(Y,X).
Regeln zur Mitteilung von neuen Fakten
• Opa mag alles was Oma hasst
• Romeo fährt über-all hin, wo Beate hinfährt
• mag(opa,X):- hasst(oma,X).
• faehrt_nach(romeo,X):- faehrt_nach(beate,X).
Regeln zum Formulieren von Problemen
• 4 Gebiete sollen mit drei Farben (rot, gelb, blau) eingefärbt werden, so dass keine zwei gleichfarbenen Gebiete längs einer Linie aneinander grenzen.
•
1 2
34
Prolog-Programm
farbe(rot).farbe(gelb).farbe(blau).einfaerbung(F1,F2,F3,F
4):-farbe(F1), farbe(F2), farbe(F3), farbe(F4),F1\=F2, F1\=F3, F2\=F3, F2\=F4, F3\=F4.
•
1 2
34
Aufgabe 51
Fritz, Hans, Karl.
Der Besitzer des roten Autos ist Vetter von Fritz.
Hans hat kein grünes Auto.
Fritz streitet mit dem Besitzer des grünen Autos.
• junge(fritz).junge(hans).junge(karl).
• loesung(Rot,Gruen,Blau):- junge(Rot), junge(Gruen), junge(Blau), Rot\=Gruen, Rot\=Blau, Gruen\=Blau, Rot\=fritz, hans\=Gruen, Gruen\=fritz.
4.4 So arbeitet PROLOG
Suche per Computer
schuhgr(adelheid,34).
schuhgr(agnes,28).
schuhgr(aschenputtel,26).
schuhgr(brunhilde,44).
schuhgr(kunigunde,28).
schuhgr(walburga,38).
schuhgr(aschenputtel,26).
Suche per Computer
schuhgr(adelheid,34).
schuhgr(agnes,28).
schuhgr(aschenputtel,26).
schuhgr(brunhilde,44).
schuhgr(kunigunde,28).
schuhgr(walburga,38).
schuhgr(aschenputtel,26).
Suche per Computer
schuhgr(adelheid,34).schuhgr(agnes,28).schuhgr(aschenputtel,26).schuhgr(brunhilde,44).schuhgr(kunigunde,28).schuhgr(walburga,38).
schuhgr(aschenputtel,26).
Yes
Suche per Computer
schuhgr(adelheid,34).
schuhgr(agnes,28).
schuhgr(aschenputtel,26).
schuhgr(brunhilde,44).
schuhgr(kunigunde,28).
schuhgr(walburga,38).
schuhgr(Gesuchte,26).
Suche per Computer
schuhgr(adelheid,34).
schuhgr(agnes,28).
schuhgr(aschenputtel,26).
schuhgr(brunhilde,44).
schuhgr(kunigunde,28).
schuhgr(walburga,38).
schuhgr(Gesuchte,26).
Suche per Computer
schuhgr(adelheid,34).schuhgr(agnes,28).schuhgr(aschenputtel,26).schuhgr(brunhilde,44).schuhgr(kunigunde,28).schuhgr(walburga,38).
schuhgr(Gesuchte,26).
Gesuchte = aschenputtel
Suche nach der Mutter von daisy
• ?- elter(daisy,X), weibl(X).
• Der Interpreter versucht zu matchen (anzupassen).
• Gelingt das nicht, wird die Variable wieder freigegeben und eine andere versucht (Backtracking).