2013-04-05 6 views
0

Я новичок в прологе и хотел бы получить совет.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 правило без использования sister и brother?

+1

Возможный дубликат [Пролог Родительские отношения, используя только правила брата и сестры] (http://stackoverflow.com/questions/15714834/prolog-parent-relation-using-only-brother-and-sister-rules) –

+0

что один использует сестру и брата, чтобы определить родителя, которого я не хочу, – user1771844

ответ

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

+0

скопируйте и вставьте то, что вы сделали до сих пор. – VahidM

+0

вы правы. вы можете изменить название правила, чтобы обеспечить транзитивность и избежать бесконечного цикла. вы также можете использовать разрез. – VahidM