Предотвращение симметричных пар в логике данных - PullRequest
0 голосов
/ 19 мая 2019

Я запускаю правило регистрации данных с clingo в jupyter notebook против узлов графа, проверяющих узлы, которые имеют одного и того же прямого предка, следующим образом:

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

Это дает мне 2 симметричные пары, а именно

sibs(B,C) sibs(C,B)

Как ограничить генерацию сибсов, чтобы иметь только один из этих двух результатов?

1 Ответ

1 голос
/ 20 мая 2019

удалось отследить проблему.Чтобы гарантировать, что вы не вернете оба результата, измените это:

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

на это:

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

...