Я создал правила для получения пути графа с ребрами, определенными следующим образом:
graph(a,b).
graph(a,a).
graph(b,c).
, но теперь мне нужно сделать это, когда факты, например:
graph(a,[a,b,e]).
graph(b,[c,d]).
graph(d,[]).
У меня было это:
path(Origin, Dest, List) :- path(Origin, Dest, List, [Origin]).
path(X, X, List, Temp) :- reverse(Temp, List).
path(Origin, Dest, List, Temp) :- graph(Origin, Inter),
not(member(Inter, Temp)),
path(Inter, Dest, List, [Inter|Temp]).
и я знаю, что проблема в графике (Origin, Inter), но я не знаю, как настроить его, чтобы он мог войти в списокЯ пытался graph(Origin, [Inter|_])
, но, очевидно, он просто проверяет первый.Любая помощь (даже если это не код) будет принята с благодарностью.