An Increasing-Nogoods Global Constraint for Symmetry Breaking During Search 翻译(二)

因此,我们从\alpha开始检查剩余nogoods的LHS。 为了将剩余的increasing nogoods 的简化版本转换为简化形式,使用两个指针\beta\gamma来索引具有以下条件的3个列表。


指针\beta用于根据条件(ii)找到由\Lambda生成的最短nogood。 如果生成了新的nogood,则使用\gamma来检查是否存在可以根据定理7生成的额外nogood并找到最后生成的nogood。如果可以生成额外的nogoods,则\beta设置为\gamma 最初,\beta被设置为最大的索引,使得,其中关键概念是,它是仍然在中的所有值Nj的集合,使得是在i处编码的nogood之前或当前出现的RHS不等式。注意\beta指向下面的二者之一:

(a) 中的一个等式,其中的情况下,即是LHS是为假的最低的nogood。所有nogoods)被满足。我们只需要强制执行。不会产生新的nogoods,这种increasing nogoods是简化形式。 我们说\beta满足条件(a);

(b) 在中的不等式,其中,在的情况下,即是最低的nogood,使得域中的所有值都出现在所有中。现在生成新的nogood 并且是最短的。 形成了increasing nogoods 。我们说\beta满足条件(b)。


如果\beta满足条件(b),第一个简化步骤启动,因为新的nogood ng产生。指针\gamma以这样的方式设置:对于的所有等式其中,满足覆盖条件。指针\gamma被放置到最小索引处,使得注意\gamma指向的不等式,其中是简化形式的increasing nogoods的最高nogood(eg. 对于(4)中的nogoods和P6的值域,ng'是ng5,)如果\gamma取走一个值,则可以生成新的nogoods并将\beta设置为\gamma。 否则,我们不需要更新\beta。 现在\beta仍然满足条件(b)。


根据上述更新\beta后,我们发现了简化形式的increasing nogoods。 如果\beta仍然满足条件(b),即已生成新的nogoods,我们需要检查是否可以根据定理8修剪值。

考虑第4页上的变量域和(4)中给出的nogoods。如果incNGs(I,E,N)(X)有m表示3个列表的大小,我们按以下方式进行传播。

【终于有个例子了,想哭QAQ,例子是重点】

{1,2},且D(x4)=D(x5)={1}

传播结束后,D(x1) = {1},D(x2) = {2},D(x3) = {1,2}, D(x4) =D (x5) = {1}, D(x6) = {1,2}。个体nogoods的GAC只能从D(x1)修剪值2。 我们的过滤同时会将1从D(x2)中移除。 找到β和γ的步骤可以同时进行。 我们只需要检查β是否应该设置为γ

假设P= (X, D, C)是一个CSP,其中X的大小是n。我们给出了incNGs(I,E,N)(X)的滤波算法如下。 目前,请忽略框架框中高亮的代码,这些代码是为算法的增量版本保留的。

算法1是滤波算法的最顶层。 每当修改X中的可变域或者扩展I,E和N时,就调用该算法。指针α初始化为0,β初始化为3个列表的大小,γ设置为⊥。 整数变量p告诉β为什么更新的原因,即β满足哪种条件。如果3个列表为空(第1-3行),则约束将自动为ENTAILED,这意味着可以处理约束。 第4行调用函数UpdateAlpha()来更新指针α。 第5行调用函数UpdateBeta()根据最短nogood规则和定理7更新指针β。第6-13行检查α=β是否为β。 如果为真,并且由于条件(a)而更新β,则该约束是ENTAILED,因为将来修剪只能在α和β-1之间进行。如果两个指针相等并且由于条件(b)而更新β,则该约束是FAILED的,因为在α(=β)处的n的LHS是可满足的,但是这个nogood的LHS的否定是一个nogood。 因此,当前节点应该failed。 第14-16行调用函数CheckE()来检查最后生成的nogood是否满足定理8中的条件。

在下文中,Prune(v,x)修剪来自D(x)的v值。 当x.assigned(v)检查x是否赋值v时,x.in(v)检查是否v∈D(x),x.size()是是否返回 |D(x)|。 我们假设最后三个函数具有恒定的时间复杂度。

Algorithm 2 更新\alpha。它从索引i = 0开始扫描,并且仅当未被赋予非值Ei(第6-8行)时停止,在这种情况下a被设置为i(第12行)。 在扫描期间,如果Ei = ,由于此时nogood的LHS为真,Ni可以从修剪(第3-4行)。

(不只是更新β,同时也更新了γ)

算法3更新β。 当β≥α时,扫描从α开始。 我们使用数组S [],S [i]记录在扫描nogoods的RHS中的不等式中的每个变量xi期间遇到的值的数量。 S [i]不计算已经从xi(第23-25行)的域修剪的值。第7-16行更新γ。如果覆盖条件不满意,则第8和9行将γ重置为γ。 如果γ是⊥,则线11-13将γ设置为i,并且满足覆盖条件。 第17-21行检查是否由于条件(a)而停止扫描,并在更新第33-39行中的β之前设置更新β的原因p。第26-29行检查是否由于条件(b)而停止扫描,并在更新第33-39行中的β之前设置更新β的原因p。 如果由于条件(b)而停止扫描并且γ是非⊥值(34行),则β被设置为γ(35行)。 否则,β被设置为被中断的i。

如果由于条件(b)而更新β,则调用算法4。 第2-7行首先检查E中是否存在从α+ 1到β-1的非⊥值。 如果是(第12行),则必须在最后生成的nogood的LHS中,它不满足定理8中的条件。该约束是一致的意味着域过滤完成。 现在α和β之间的nogoods由简化形式的increasing nogoods组成。如果不是(第8-11行),则值Eα从其对应的变量域中被修剪,因为是increasing nogoods中简化形式的唯一nogood。 现在这个约束是ENTAILED,因为β=α。

我们还没有对算法1的一致性水平进行精确描述,但它在单个nogoods上比GAC更强,并且具有多项式时间复杂度。

Theorem 9. 算法1终止并强制执行incNGs(I,E,N)(X)的一致性,该一致性在每个单独的nogood上严格地强于GAC。

Theorem 10. 算法1在O(db | X |)的复杂度内运行约束incNGs(I,E,N)(X),其中d是最大域大小,b是从可变域修剪值的成本。

6 Incremental Filtering Algorithm 增量滤波算法

虽然是多项式,但算法1在全局约束的每次调用期间从头开始执行是昂贵的(a)在类似AC3的算法内的约束传播和(b)在搜索期间添加新的增加的nogoods(在搜索期间前进到子节点并在递归方法中传播期间生成额外的nogoods)。 我们可以使用以下定理使算法1扩展。

Theorem 11. 对于全局约束incNGs(I,E,N)(X),每当在类似AC3的约束滤波算法期间调用算法1时,两个指针α和β可以从最后一次调用中继承

Theorem 12. 假设I,E和N是由increasing nogoods \Lambda构成的。 进一步假设I',E'和N'是由增加的nogoods 构成的。在使用算法1对incNG(I, E, N)(X)进行域滤波之后,用于强制执行incNG(I', E', N')(X)的两个指针α'和β'可以分别初始化为α和β的值。

增量滤波算法可以通过添加标记为\blacklozenge的突出显示的算法并将代码替换为右边的\blacktriangle标记来获得。 注意,在算法1的开始,α,β,γ和p的初始化仅针对根节点。 在后续节点中,这四个节点从最新传播之后的一个节点初始化,或者在其域过滤之后从先前全局约束节点初始化。

8 Conclusion and Future Work

我们的贡献是五个。 首先,基于increasing nogoods的特殊语义和结构,我们提出了一个具有相同含义但修剪能力更强的全局约束。 其次,我们证明了SBDS及其变体添加的nogoods是increasing的,因此这些方法可以适应全局约束。 第三,从全局约束中受益,我们设计了一个较小版本的ReSBDS,具有较小的空间和时间开销。第四,我们为increasing nogoods约束提供了一个多项式时间的滤波算法,该算法也有一个有效且简单的增量版本。 第五,广泛的实验证实了我们提案的效率。

ReSBDS的优势在于,只需要很少的给定子集就可以打破大量的对称性。increasing nogoods全局约束显着减少了SBDS及其变体的开销,使得处理更大的给定对称集合成为可能,这反过来可以修剪更多的搜索空间。

Nogood学习是改进回溯搜索的一般技术[2]。 我们设想除了对称性破坏之外,increasing nogoods约束适用于CP中的其他场景

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值