2013-04-05 28 views
0

我是新來的prolog,並希望得到一些建議。parent_of prolog

我有一些事實:

male(tom). 
male(james). 
male(john). 
female(elly). 
female(joanne). 
female(evonne). 
brother(john,tom). 
brother(john,joanne). 
sister(elly,joanne). 
parent_of(evonne,john). 
parent_of(james,john). 

是可以定義一個parent_of規則,而不使用sisterbrother

+1

[使用唯一的哥哥和妹妹規則的Prolog父母關係]的可能重複(http://stackoverflow.com/questions/15714834/prolog-parent-relation-using-only-brother-and-sister-rules) – 2013-04-05 16:56:09

+0

那一個是使用姐姐和兄弟來定義我不想要的父母 – user1771844 2013-04-06 05:36:57

回答

0

起初,您應該有一些作爲父母關係核心的事實parent_of。那麼你可以通過將某個人作爲孩子或父母附加到某個事實來擴展這種關係。因此如果要附加子項,則需要使用siblings/2規則,如果要附加父項,則需要使用couples/2規則。

 
%if you want to attach a child by 'siblings' relation 
parent_of_rule(X, Y) :- 
     parent_of(X, Z), 
     siblings(Z, Y). 
 
%if you want to attach a parrent by 'couples' relation 
parent_of_rule(X, Y) :- 
     parent_of(Z, Y), 
     couples(X, Z). 

我不認爲這是有可能有一個parent_of_rule規則,而無需使用第三方關係。

+0

我已經定義了兄弟姐妹,配偶,兒子,女兒,父親和母親的規則。但是我遇到了他們之間的無限循環。我會去試試看看。 – user1771844 2013-04-06 07:40:55

+0

複製並粘貼到目前爲止您所做的。 – VahidM 2013-04-06 17:05:48

+0

你是對的。很容易,您可以更改規則的名稱以允許傳遞性並避免無限循環。你也可以使用切割。 – VahidM 2013-04-06 17:18:03