Einf. in das Symbolische Programmieren Di, 29.5.2001 Anwesenheitsaufgabe 3 --------------------- Folgende Alternative Definition von weg/3 fuehrt zu einem Problem: weg(X,X,0). % Jeder Punkt ist mit sich durch einen Weg % der Laenge 0 verbunden. weg(X,Y,1) :- kante(X,Y). % Kanten sind Wege der Laenge 1. weg(X,Y,N) :- % Ein Weg von X nach Y hat Laenge N, wenn weg(X,Z,1), % es einen Weg der Laenge 1 von X nach einem weg(Z,Y,M), % Punkt Z und einen Weg der Laenge M von Z N is M + 1. % nach Y gibt, so dass N = M + 1 ist. Sie koennen den Rest der Aufgabe auch bearbeiten, wenn Ihnen das nicht ganz klar geworden ist. Teste die Definition an ?- weg(2,4,2). a) Was passiert? Bekommt man eine oder mehrere Loesungen? b) Schalte den Tracer ein und versuche zu verstehen, worin das Problem besteht! Formuliere in eigenen Worten, worin das Problem besteht. c) Schreibe zu diesem Aufruf ein Protokoll des Tracers auf eine Datei und studiere das Protokoll nochmal zu Hause. Damit auch das Programm in der Datei steht, ruft man listing(weg). auf - damit werden alle Klauseln zu weg/n (fuer alle n) angezeigt. BEMERKUNG: Eine Loesung fuer dieses Problem lernen wir erst spaeter kennen!