【发布时间】:2015-02-04 09:33:52
【问题描述】:
我对 Clingo(和逻辑编程)完全陌生,我正在寻找实现以下基本约束的最佳方式:
第一季度。我有一个谓词selected(T),其中 T 的范围从 1 到 N=5;如何指定 至少存在一个 T 使得 selected(T) ?
第二季度。我有一个二元谓词wrap(E,T),其中 E、T 的范围从 1 到 M、N;如何指定 对于每个 E 至少存在一个 T 这样 wrap(E,T) ?
第三季度。我如何指定如果selected(a) OR selected(b) 那么selected(c) 必须为假
我其实用了两行代码,不过可能还有更好的办法:
:- selected(c), selected(a) .
:- selected(c), selected(b) .
第四季度。如何指定如果某个条件 C(A) 为真,那么两个一元谓词 p1(A) 和 p2(A) 必须具有相同的值?
我其实用了两行代码:
p1(A) :- C(A), p2(A)
:- C(A), not p2(A), p1(A)
Q5。你推荐什么书来很好地介绍答案集编程?
【问题讨论】:
-
哇,问题太多了!我建议您将它们分开并分别询问,否则您可能会因为过于宽泛而关闭这个问题。
-
@shree.pat18:我很确定所有问题都有一个非常简洁的答案:-)
标签: answer-set-programming clingo