弧一致性Arc consistency算法(AC3, AC4, AC6, AC2001)整理

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

猜你喜欢

转载自blog.csdn.net/weixin_38354912/article/details/84753763
ac