【问题标题】:Prolog family tree : check if two persons are from the same familyProlog 家谱:检查两个人是否来自同一个家庭
【发布时间】:2016-11-20 19:51:13
【问题描述】:

我可以在一棵树上检查人们的关系(叔叔、阿姨、父亲、祖父......),但现在我想知道两个人是在同一棵树上还是在不同的树上,即检查他们是否来自同一棵树'家庭'。

“家庭”的定义有点愚蠢,因为我们都有共同的祖先,但这是我必须做的练习......

Family tree example

我想检查一下 Maurice 和 Floriane 是否来自同一个家庭...

【问题讨论】:

  • 检查它们是否有共同的祖先就足够了。

标签: tree prolog


【解决方案1】:

您是否尝试过类似的方法:

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

【讨论】:

  • 实际上我已经尝试过了,但它并不总是有效,因为树的第一个成员没有任何父母,所以你找不到这个人的祖先。 ..
  • @GuillaumeLeseur 这真的取决于你决定如何定义ancestor/2。或者您可能想要定义一个使用 ancestor/2 的谓词,并且在两个参数统一时也成功:same_family(X, X). same_family(X, Y) :- dif(X, Y), ( ancestor(X, Y) ; ancestor(Y, X).
  • 我已经编辑了帖子,如果你想知道我的意思可以查看链接的图片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2017-07-26
  • 1970-01-01
相关资源
最近更新 更多