我正在尝试创建一个知识库。我的问题有terminal/1
并且connected/2
我已经定义了以下规则:
connected(X,Y) :- connected(Y,X).
由于我现在理解的原因(我认为),这进入了无限递归。
然后,我尝试搜索 SO 并发现了这个问题:Alternative to express "Commutativity" in 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)
。