В Прологе, как сделать сравнение, когда порядок определен в цепочке предикатов?
Имея следующее определение:
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
(это вторая часть). Таким образом, вышеизложенное является в основном одним из возможных определений.