Ich habe eine Wissensbasis dieser Art:Wie kann ich wissen, ob alle Knoten in einem Diagramm besucht wurden, bevor der gewünschte Knoten erreicht wurde?
connect(a, b).
connect(a, d).
connect(a, e).
connect(b, a).
connect(b, c).
...
Mein Ziel ist es, einen Ursprung und ein Schicksal gegeben, auf einmal alle vorhandenen Knoten durchlaufen, bevor Sie den letzten Knoten erreicht.
Bisher ist das, was ich habe:
path(O, D, L):-
path(O, D, [O], L).
path(D, D, _, [D]).
path(O, D, A, [O|T]):-
connect(O, I),
\+ member(I, A),
path(I, D, [I|A], T).
Um die Doppelverbindungen zu behandeln z.B. connect(a, b). connect(b, a).
Ich benutze eine Liste, die jeden Knoten speichert, durch den ich gehe, und bevor ich in den Rekursionsaufruf gehe, stelle ich sicher, dass der Knoten, den ich gehe, nicht in diese Liste gehört.
Jetzt muss ich sicherstellen, dass ich durch alle vorhandenen Knoten gehe, bevor ich das letzte erreiche. Ich habe absolut keine Ahnung, wie ich das überhaupt angehen soll. Wie kann ich sicher sein, dass ich alle anderen Knoten besucht habe, bevor ich die letzte erreicht habe?
Siehe [dies] (http://stackoverflow.com/q/30328433/772868). – false