私は、双方向性の述語を持ち、ノードが別のノードに接続されているかどうかを伝えます。 など。到達可能なノードをすべてリストする
has(a, b).
has(b, c).
has(d, b).
ここで、(特定のノードから)特定のステップ数で到達できるすべてのノードをリストしたいと思います。
connected_nodes(a, T, 2).
はずので、出力
T = c
T = d
私の現在のコードは次のようになります。
これは二があるので、これは、Tの= cに対してではなく、T = Dのために働くconnected_nodes(A, B, 0) :- write(A).
connected_nodes(A, B, N) :-
N > 0, M is N - 1,
has(A, X),
connected_nodes(X, B, M).
方向性の関係。
再帰の点で正しく考えていますか、あるいはどのように他の方法でこの問題を解決しなければなりませんか?
サイクルを含めるかどうかを指定しますか? – false