【发布时间】:2016-06-01 13:50:42
【问题描述】:
I #> 0, I #< 10, indomain(I).
前面的代码显然做了以下事情:
I = 1 ;
I = 2 ;
I = 3 ;
I = 4 ;
I = 5 ;
I = 6 ;
I = 7 ;
I = 8 ;
I = 9.
以下代码不起作用(参数没有充分实例化):
I #> 0, indomain(I).
现在我了解到,在这种情况下,I 的可能绑定数量是无限的,而且 CLPFD 顾名思义适用于有限域。
但是我不明白为什么在这种特殊情况下存在这种限制。是不是可以从最小范数到最大范数列举出可能的解决方案,得到以下结果:
I = 1 ;
I = 2 ;
I = 3 ;
.
.
.
即使对于存在多个变量的问题,也可以说:
0 #< I, I #< J, label([I,J]).
为什么不能实现它,从而发生以下行为:
I = 1,
J = 2 ;
I = 1,
J = 3 ;
I = 2,
J = 3 ;
I = 1,
J = 4 ;
.
.
.
简而言之:如果无限域很容易使用幅度进行计数,为什么 CLPFD 仍然不能用于无限域?
【问题讨论】: