Пример отношения предок (а) X ближайший предок Z; (b) X отдаленный предок Z
Рисунок 1. 5. Пример отношения предок:
(а) X - ближайший предок Z; (b) X - отдаленный предок Z.
между собой отношением родитель-ребенок, как показано на Рисунок 1.5. В нашем примере на Рисунок 1.1 Том - ближайший предок Лиз и отдаленный предок Пат.
Первое правило простое и его можно сформулировать так:
Для всех X и Z,
X - предок Z, если
X - родитель Z.
Это непосредственно переводится на Пролог как
предок( X, Z) :-
родитель( X, Z).
Второе правило сложнее, поскольку построение цепочки отношений родитель может вызвать некоторые трудности. Один из способов определения отдаленных родственников мог бы быть таким, как показано на Рисунок 1.6. В соответствии с ним отношение предок определялось бы следующим множеством предложений:
предок( X, Z) :-
родитель( X, Z).
предок( X, Z) :-
родитель( X, Y),
родитель( Y, Z).
предок( X, Z) :-
родитель( X, Y1),
родитель( Yl, Y2),
родитель( Y2, Z).
предок( X, Z) :-
родитель( X, Y1),
родитель( Y1, Y2),
родитель( Y2, Y3),
родитель( Y3, Z).
. . .