ルーティング関数を作成しようとしていますが、必要な結果が得られないようです。これがこれまでのコードです。先行者は、N にリンクされているノードを見つけて、それを P として返します。
traceroute(_,L) :- member((A,A),L).
traceroute(N,L) :-
predecessor(N,P),
append(N,L,L1),
traceroute(P,L1).
実行すると、traceroute(placeA, Y).
このデータが返されます..
Y = [ (_G575, _G575)|_G579] .
基本的に、traceroute の最初の行では、いずれかのメンバーがそれ自体の先行者である場合、再帰を終了しようとしています。2 番目の部分は、すべてのノードをループし、それらをリスト (L) に追加する必要があります。
ノードは [(placeA,placeB),(placeB,placeC)] のように保存され、リストは [placeA,placeB,placeC] のように保存する必要があります
なぜこれらの結果が得られるのか理解できません。