防止数据记录逻辑中的对称对
Preventing symetric pairs in datalog logic
我是 运行 jupyter notebook
中 clingo
的数据记录规则,针对图节点检查共享相同直接祖先的节点,如下所示:
ancestor(A,B).
ancestor(A,C).
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.
这给了我 2 个对称对,即
sibs(B,C) sibs(C,B)
如何将同胞的生成限制为只有这两种结果中的一种?
设法追查到问题。为确保您不会 return 两个结果都更改此:
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.
对此:
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X<Y.
我是 运行 jupyter notebook
中 clingo
的数据记录规则,针对图节点检查共享相同直接祖先的节点,如下所示:
ancestor(A,B).
ancestor(A,C).
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.
这给了我 2 个对称对,即
sibs(B,C) sibs(C,B)
如何将同胞的生成限制为只有这两种结果中的一种?
设法追查到问题。为确保您不会 return 两个结果都更改此:
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.
对此:
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X<Y.