Kann Prolog berechnete Ziele memotisieren?Memo-Ziele in Prolog
Damit meine ich, dass Prolog Ziele, die vorher berechnet wurden, nicht neu berechnen sollte.
So zum Beispiel die gleichen Berechnungen für mich sind:
goal([first, one], he, she, var(cat, 5)).
goal([first, one], he, she, var(cat, 5)).
aber nicht
goal([first, one], he, she, var(cat, 6)).
So in der Tat muss es möglich sein, dass die Ziele zu vereinen.
Das Problem erscheint, weil ich Ziel mit rekursivem subgoal berechnen muss. Und jedes Unterziel hat eine Liste und hängt davon ab, ob das fehlschlägt oder nicht. Diese Liste sollte in diesem Sinne global sein, dass, wenn ein Unterziel dort etwas anhängt, das andere Teilziel es sieht. Aber das Problem ist mit Backtracking-es alles rückgängig machen. Wie man damit umgeht? – Gilgamesz
Wie immer: Sie geben die Listen weiter, die Sie als Argumente ** für alle Prädikate benötigen, die sie benötigen. Und ja, Backtracking macht alle Bindungen rückgängig, was irgendwie der Fall ist. – mat
Ok, aber was ist mit der Situation, wenn ich eine Liste durch Backtracking behalten möchte. Ich weiß, dass das Backtracking die Basis/der Schlüsselpunkt in Prolog ist, aber wie kann man mit solchen Situationen umgehen? – Gilgamesz