在数据记录逻辑中防止对称对

时间:2019-05-19 08:59:37

标签: datalog clingo

我正在对图节点使用prompt中的clingo运行数据记录规则,以检查共享相同直接祖先的节点,如下所示:

jupyter notebook

这给了我两个simetric对

ancestor(A,B).
ancestor(A,C).
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.

如何限制同胞的产生仅具有这两个结果之一?

1 个答案:

答案 0 :(得分:1)

设法找出问题所在。为了确保您不会同时返回两个结果,请更改此值:

sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.

对此:

sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X<Y.