В Прологе, как сделать сравнение, когда порядок определен в цепочке предикатов?

Имея следующее определение:

biggerThan(a,b).
biggerThan(b,c).
biggerThan(c,d).

Как определить правило is_bigger(X,Y)такой, что is_bigger(a,c) а также is_bigger(a,d) вернет истину.

Кроме того, я очень новичок в Прологе. Правильно ли решено название, если нет, то как мне сказать?

1 ответ

Решение

Просто определить is_bigger в качестве переходного замыкания biggerThan связь:

biggerThan(a,b).
biggerThan(b,c).
biggerThan(c,d).

is_bigger(X, Y) :- biggerThan(X, Y).
is_bigger(X, Y) :- biggerThan(X, Z), is_bigger(Z, Y).

Транзитивное замыкание отношения R бывает наименьшее отношение X такой, что R содержится в X (это первый пункт определения), и такой, что X = R o X (это вторая часть). Таким образом, вышеизложенное является в основном одним из возможных определений.

Другие вопросы по тегам