ナレッジベースを作成しようとしています。私の問題はterminal/1
、connected/2
次のルールを定義しました。
connected(X,Y) :- connected(Y,X).
私が今理解している理由(私は思う)のために、これは無限の再帰に入りました。
それから、私はSOを検索してみて、この質問を見つけました:Prologで「可換性」を表現するための代替案? 。提供された回答に基づいて、上記の事実を次のように変更しようとしました。
connected(X, Y) :- is_connected(Y, X) /\ is_connected(X, Y).
is_connected(X, Y) :- terminal(X) /\ terminal(Y) /\ connected(X , Y).
しかし、これは私が望んでいた結果を私に与えません。ルールを定義する場合、質問をconnected(t1,t7)
すると取得したいと思っています。yes
connected(t7,t1)