2014-06-19 35 views
0

我需要在Prolog中創建關係「世代」,計算兩個人之間有多少代。例如:父親(a,b)和父親(b,c),則在a和c之間有2代。序言 - 計算世代數的關係

(父親(A,B)= A是B的父親,母親(A,B)= A是B的母親)

所以產生(A,C,N)將返回2.

generation (X,Y,N1):- father(Z,Y), generation(Z,Y,N2), N1 is N2+1. 
generation (X,Y,N1):- mother(Z,Y), generation(Z,Y,N2), N1 is N2+1. 

是否正確?

回答

1

您還需要有直接關係的規則:

generation(X, Y, 1):- father(X, Y), !. 
generation(X, Y, 1):- mother(X, Y), !. 

其他規則,應更正爲:

generation(X, Y, N1):- father(X, Z), generation(Z, Y, N2), N1 is N2+1. 
generation(X, Y, N1):- mother(X, Z), generation(Z, Y, N2), N1 is N2+1.