AC3:再判断一致性时,会对前面已判断过的再次判断
AC4:改进AC3,在初始化时会存储所有判断,在移除值后,不用进行constraint check,只需traversal S lists和update counter。在不牵扯约束具体内容的情况下,已经具有最优的最差时间复杂度
AC5:将约束的形式具体化为几种常用函数。对于函数约束,每个弧只需进行一次判断,大大缩减判断次数
AC6:优化AC4。AC4在初始化时,对于每个值都要找出所有与其匹配的值,以证明该值的有效性。而AC6只寻找一个匹配值,如果这个值从其值域中删除了,再寻找下一个匹配值。
AC7:强调一致性判断的双向性,避免了一些不必要的双向检查。
有三个变量x,y,z,约束为:c1 ≡ x ≤ y,c2 ≡ y ≠ z,定义域为D(x)=D(y)={1,2,3,4},D(z)={3}.
AC3:
AC4:
AC6:
只需要S lists,细粒度
AC2001:
遵循与AC3相同的框架,但通过在每个约束上存储每个值的最小支持(如AC6)来实现最优化。但信息存储和使用方式不同。AC2001不使用列表S[xj,vj]来存储每个值的最小支持,而使用包含vj的指针Last[xi,vi,xj]。
Algorithm | Condition | Time | Space |
GAC3 | AC | | |
AC3 | AC on binary networks | | |
AC4 | AC on binary normalized networks | | |
AC6 | AC on binary normalized networks | | |
AC2001 | AC on binary normalized networks | | |