Prolog:简单的家庭关系

时间:2012-11-03 00:06:09

标签: prolog logic family-tree

我正在学习Prolog,我想要的是做一个简单的"计算"(我不知道它是如何在Prolog中调用的)simle家族的成员。

例如我有:

 1)father of steve is petter
 2)brother steve is john
 3)A person is a son to a Father when the brother of the person has  as father the Father

(当它出乎我的想法时,它似乎很有趣并完全脱离逻辑:))

father(steve,petter).
brother(john,steve).
father(X,Y):-brother(X,Z),father(Z,Y)).

我的问题是谁是约翰的父亲(正确的芒果会更好)

?-father(john,X).

但它总是让我虚假。

2 个答案:

答案 0 :(得分:0)

当您输入father(john, X).时,首先会尝试找到Zbrother(john, Z)为真。没有这样的Z,所以它返回false。

请注意brother(steve, john)并不暗示brother(john, steve),除非您告诉Prolog应该这样做。

答案 1 :(得分:0)

<强>解决:

father(steve,petter).
brother(john,steve).
whoisfather(X,Y):-brother(X,Z),father(Z,Y).
?- whoisfather(john,X).
X = petter.

而不是

father(steve,petter).
brother(john,steve).
father(X,Y):-brother(X,Z),father(Z,Y)).
?- father(john,X).
false.

见评论