2016-11-20 79 views
0

我可以检查人与人之间的关系(叔叔,阿姨,父亲,祖父......),但现在我想知道两个人是否在相同或不同的树,即检查它们是否来自同一个“家庭”。序言家族树:检查两个人是否来自同一个家庭

一个“家庭”的定义是一种愚蠢的,因为我们都有一个共同的祖先,但是这是锻炼我必须做的......

Family tree example

我想检查莫里斯和Floriane是来自同一个家庭......

+0

它应该是足够的检查,如果他们有一个共同的祖先与否。 – 2016-11-20 20:15:12

回答

0

你有没有尝试过这样的:

inSameFamily(Person1, Person2) :- 
    ancestor(Person1, CommonAncestor), 
    ancestor(Person2, CommonAncestor). 
+0

其实我试过了,但它并不总是有效,因为树的第一个成员没有任何父母,所以你找不到这个人的祖先... –

+0

@GuillaumeLeseur它真的取决于你如何决定定义祖先/ 2。或者你可能想要定义一个使用'祖先/ 2'的谓词,并且在两个参数统一时也成功:'same_family(X,X)。 same_family(X,Y): - dif(X,Y),(祖先(X,Y);祖先(Y,X)。' – 2016-11-21 08:47:36

+0

我编辑了这篇文章,如果你想知道你可以检查链接的图片我的意思是 –