Einf. in das symbolische Programmieren CIS, SS 2002, H.Leiss ================================================================= Abgabe: Mittwoch, 15.5.02 in der Uebungsstunde. ----------------------------------------------- Aufgabe 3 (5 Punkte) --------- Gegeben sei ein endlicher, kreisfreier Graph (G,kante), etwa kante(1,2). kante(1,3). kante(2,4). kante(2,5). kante(3,4). kante(4,7). kante(5,6). kante(6,7). Betrachte folgende Definitionen von Wegen in einem Graphen: weg1(X,Y) :- kante(X,Y). weg1(X,Y) :- kante(X,Z), weg1(Z,Y). weg2(X,Y) :- kante(X,Y). weg2(X,Y) :- weg2(X,Z), kante(Z,Y). weg3(X,Y) :- kante(X,Z), weg3(Z,Y). weg3(X,Y) :- kante(X,Y). weg4(X,Y) :- weg4(X,Z), kante(Z,Y). weg4(X,Y) :- kante(X,Y). Geben Sie fuer jede der Definitionen von `weg' (also weg1,...,weg4) an, was DATALOG auf folgende Aufrufe antwortet: a) weg(3,6). b) weg(3,7). c) weg(X,5). d) weg(5,X). e) weg(X,Y). Aufgabe 4 (12 Punkte) --------- Erweitern Sie das Programm P mit folgenden Fakten sohn(m2,m1,w1). tochter(w2,m1,w1). sohn(m4,m3,w3). tochter(w4,m3,w3). sohn(m5,m2,w4). tochter(w5,m2,w4). sohn(m6,m4,w2). tochter(w6,m2,w4). sohn(m7,m4,w4). tochter(w7,m4,w2). sohn(m8,m4,w4). tochter(w8,m5,w7). fuer die Beziehungen sohn(S,V,M) = S ist ein Sohn seines Vaters V und seiner Mutter M tochter(T,V,M) = T ist eine Tochter ihres Vaters V und ihrer Mutter M Definieren Sie mit Hilfe der Praedikate sohn(S,V,M) und tochter(Z,V,M) a) folgende Eigenschaften von Personen: weiblich(X) % X ist weiblich maennlich(X) % X ist maennlich b) folgende Beziehungen zwischen Personen: schwester(X,Y) % X ist eine Schwester von Y bruder(X,Y) % X ist ein Bruder von Y (Benutzen Sie not(X=Y) im Rumpf einer Regel, um auszudruecken, dass X und Y nicht durch denselben Term belegt sein sollen.) nichte(X,Y) % X ist Tochter einer Schwester oder eines Bruders von Y neffe(X,Y) % X ist Sohn einer Schwester oder eines Bruders von Y c) die Beziehung kind(X,Y) % X ist ein Kind von Y nachkomme(X,Y) % X ist ein Nachkomme von Y d) Was ist die erste Antwort von Prolog auf die Anfrage ?- nachkomme(w8,Y). Erzwingen Sie weitere Antworten durch Eingeben von ; Geben Sie die Reihenfolge der Antworten an (und versuchen Sie vorher, die Reihenfolge selbst zu finden, indem Sie die Beweissuche nach der Strategie von Prolog selbst durchfuehren).