Prolog CSP:小于实例化计数器的约束
Prolog CSPs: Less than constraint with instantiated counters
使用 Eclipse 序言并假设我有一个变量 X 并且 X 必须小于已知数 N。为此我可以写:
X #< N
因此,每当 X 被实例化为大于 N 的数字时,上面的暂停谓词就会失败。
但是如果我有一个从 0 开始的计数器 C,在搜索过程中增加,如果超过 N 则失败?
例如,如果我想跟踪从域中选择一个值的次数并且限制是永远不会超过 N 次,该怎么办。我不能执行上述操作,因为计数器 C 被实例化为 0 并使用其他变量进行递增(C1 是 C+1)。
我必须用纯序言来做吗?像这样:
pred(X, N):- X1 is X+1, X1<N, pred(X1, N)
OP在这里。我找到了我要找的东西。它是一个基数约束,在 eclipse prolog 的 ic 全局库中实现。
使用 Eclipse 序言并假设我有一个变量 X 并且 X 必须小于已知数 N。为此我可以写:
X #< N
因此,每当 X 被实例化为大于 N 的数字时,上面的暂停谓词就会失败。
但是如果我有一个从 0 开始的计数器 C,在搜索过程中增加,如果超过 N 则失败?
例如,如果我想跟踪从域中选择一个值的次数并且限制是永远不会超过 N 次,该怎么办。我不能执行上述操作,因为计数器 C 被实例化为 0 并使用其他变量进行递增(C1 是 C+1)。
我必须用纯序言来做吗?像这样:
pred(X, N):- X1 is X+1, X1<N, pred(X1, N)
OP在这里。我找到了我要找的东西。它是一个基数约束,在 eclipse prolog 的 ic 全局库中实现。