prolog die rose ist rot. die tulpe ist gelb. die nelke ist weiss. das vergissmeinnicht ist blau. das...

Post on 05-Apr-2015

112 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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).

top related