Я пытаюсь создать граф в прологе, чтобы найти общее отношение между двумя узлами.У меня Relation в качестве моего общего отношения, Source в качестве моего начального узла, Target в качестве моего целевого узла, [P | PS] в качестве моего пути, содержащего все узлы, и длина в качестве моей длины.Я хочу, чтобы Length отображал список всех возможных путей, когда он вводится как переменная.
graph(Relation, Source, Target, [P|PS], Length) :-
\+member(X, PS),
LenNew is Length+1,
Length #=< LenNew,
call(Relation, Source, X),
(X = Target; graph(Relation, X, Target, PS, LenNew)).