【发布时间】:2021-05-11 09:58:46
【问题描述】:
以下代码生成x(3) 而不是x(4),因为即使 1 出现两次,它也会将 1 和 2 相加。在 clgo 中获得 total 总和的正确方法是什么?
p(0,1;1,1;2,2).
x(X) :- X = #sum { Y: p(_,Y) }.
【问题讨论】:
标签: logic-programming answer-set-programming clingo
以下代码生成x(3) 而不是x(4),因为即使 1 出现两次,它也会将 1 和 2 相加。在 clgo 中获得 total 总和的正确方法是什么?
p(0,1;1,1;2,2).
x(X) :- X = #sum { Y: p(_,Y) }.
【问题讨论】:
标签: logic-programming answer-set-programming clingo
仍然不太清楚为什么会这样,但确实有效:
x(X) :- X = #sum { Y, Z: p(Z,Y) }.
因此,您似乎必须写出整个“唯一键”,但只对第一个值求和。我没有在文档中解释甚至提到这一点。
【讨论】: