我有一个关于弧一致性网络的例子问题。这与代码无关。
我有一个网络R,变量X = {x1, x2, x3, x4, x5, x6, x7, x8} 和域D = {1,2,3,4}。这些是我的约束条件:
我有教授给出的解答。但我不明白C24发生了什么/为什么C24没有变化。
我认为D2是2,3,4,而D4默认是1,2,3,4。如果x2不等于x4(C24),那么x4应该是1。希望有人能帮我解答这个问题。
回答:
约束c(xi,xj)是弧一致的,当且仅当对于每一个值a∈Di,存在一个值b∈Dj,使得c(a,b)为真(反之亦然,i和j互换)。
如果你的约束是xi < xj,那么情况Di={1,2,3}, Dj={1,2,3,4}不是弧一致的,因为没有xi∈{1,2,3}能使xi < 1为真。要达到弧一致性,你必须从Dj中去掉1。
然而,对于约束xi ≠ xj 和 Di={1,2,3}, Dj={1,2,3,4},你已经有了弧一致性,因为对于每一个xj∈{1,2,3,4},都存在一个xi∈{1,2,3}使得xi ≠ xj为真(反之亦然,对于每一个xi∈{1,2,3},都存在一个xj∈{1,2,3,4}使得xi ≠ xj为真)。