Aufgabe 3.2 Zielverhalten

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 3.2 Zielverhalten
Hi,
wie sollen sich die Suchalgorithmen bei Aufgabe 3.2 verhalten, wenn mehrere Ziele möglich sind?
Beispiel: isGoal(X) :- X = "A" ; X = "B".
Möglichkeit 1: Nach dem ersten gefundenen Knoten diesen zurückgeben, keine weiteren Knoten finden → nach dem ersten Erfolg bei Drücken von “;” → false.
Möglichkeit 2: Nach dem ersten gefundenen Knoten bei Drücken von “;” den nächsten gefunden Knoten usw. bis alle Knoten, die das Prädikat erfüllen, durchlaufen sind.
Möglichkeit 3: Etwas ganz anderes (i.e. undeterministisch abstürzen).

Edit: Eine weitere Unklarheit: Soll IDS terminieren, falls kein Element des Suchbaums das isGoal()-Prädikat erfüllt? Falls ja, ist es ausreichend, dem Algorithmus eine maximale Tiefe mitzugeben, oder soll der Algo selbst erkennen, dass bereits der komplette Suchbaum durchlaufen wurde?


Wo zur Hoelle steht, dass wir eine isGoal Funktion brauchen ?! Ich bin davon ausgegangen dass man strcmp machen soll, also nach nem bestimmten value suchen muss…


Keine Panik, das steht nirgendwo, ich hab das aus folgendem Post:

Edit: Ist aus dem anderen Thread zu Aufgabe 3.2, iwie dachte ich, der wird automatisch verlinkt. Damit lag ich wohl falsch^^.


Die „offizielle Spezifikation“ (i.e. so wie’s in den slides dargestellt wird) ist, dass der Algorithmus beim ersten Ziel terminiert. Was passiert wenn man anschließend prolog nochmal queried… schön ist es natürlich wenn’s nicht stirbt, und wenn man noch andere goals findet ist es noch schöner, aber prinzipiell seh ich das nicht als teil der aufgabe dafür ein spezifisches verhalten zu erzwingen :wink:

Also terminieren sollte er schon… und so wie der algorithmus an sich spezifiziert ist sollte er schon von selbst terminieren wenn er den gesamten baum durchsucht hat, aber ne maximale tiefe find ich auch okay - das sind ja echt implementationsdetails :wink:


Das ist eine Möglichkeit. Nachdem auf dem Blatt nicht streng vorgegeben war wie eure Funktionstypen auszusehen haben zieht dir keiner Punkte ab, wenn du eine andere sinnvolle wählst.