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

abstract

搜索过程中的对称破缺(SBDS)在回溯时动态地增加了条件对称破缺约束conditional symmetry breaking constraints(这不是好事),以避免在对称等价的已访问搜索空间中进行探索。约束存储中存在大量这样的独立nogoods,这些独立nogoods在约束传播中很弱。我们引入了增加nogoods(increasing nogoods)的概念,给出了增加nogoods序列的一个全局约束,incNGs。随着NG的增加,全局推理允许额外的修剪。 我们正式证明了在SBDS中的搜索节点处,NG为给定的对称性积累,并且其变体正在增加。 因此,我们可以在搜索期间为每个给定的对称性仅维持一个增加的NG全局约束。我们给出incNG的多项式时间过滤算法,并且还是在每个单独的NG上比GAC更强的有效增量对应物。 我们通过广泛的实验证明了incNGs如何增加传播并加快针对SBDS,其变体,SBDD和精心定制的静态方法的搜索。

1 Introduction

对称性在许多约束问题中都很常见。它们可以静态[18,1,4,11],也可以动态[3,8,19]。虽然每种方法都有优点和缺点,但本文的重点是研究SBDS(搜索过程中的对称性破坏)[8,6]及其变体,这些变体在搜索过程中动态地添加了条件对称性破坏约束。ReSBDS[12]改编自SBDS,当只给出对称的子集时,SBDS试图用较小的开销打破额外的对称组合。

SBDS和ReSBDS的开销是增加了大量具有弱修剪能力的约束。 我们观察到在搜索节点处为每个对称性g添加的对称性破坏约束是与语义相关的nogoods。 我们提出increasing nogoods的概念。 推导出一个全局约束(incNGs),它在逻辑上等同于一组递增的nogoods。 随着nogoods的增加,全局推理允许额外的修剪。 因此,对于每个给定的对称性,我们只能维持一个incNG。Light ReSBDS仅添加一个子集或暗示ReSBDS添加的nogoods,但在时间和空间上都有较小的开销。我们给出了incNGs的多项式时间过滤算法及其增量版本,它比每个个体的GAC强。 进行了大量实验,以证明incNGs如何增加传播并加速针对SBDS,其变体,GAP-SBDD [7]以及精心定制的静态方法的搜索。

2 Background

约束满足问题(CSP)P是一个元组(X, D, C),其中X是一组有限变量,D是一组有限域,每个都有一个D(x),C是一组约束,每个都是交叉积的子集。约束是广义弧一致性(GAC)当且仅当约束范围内的变量在其域中被赋予任何值时,在约束范围内的所有其他变量的域中存在兼容值(称为支持)。 如果每个约束都是GAC,则CSP是GAC。 赋值x = v将值v赋给变量x。 完整赋值是一组赋值,一个用于X中的每个变量。部分赋值是完整赋值的子集。 P的解决方案是完全赋值,满足C的每个成员。

nogood是对不能包含在任何解中的部分赋值的否定。 Nogoods也可以用等效的暗示形式表达。 有针对性的nogood(directed
nogood)从变量xk的初始域中排除值vk是形式的含义,意味着赋值不一致。当一个nogood, ng,被表示为隐含时,其左手边left hand side (LHS)和右手边right hand side(RHS) 是根据=>的位置定义的。如果lhs(ng)为空,则ng是无条件的。 从现在开始,当上下文清楚时,我们将directed nogoods简称为nogoods

在本文中,我们考虑使用二进制分支的搜索树,其中每个非叶节点恰好有两个子节点。 如果节点P0在节点P1下的子树中,则P0是P1的后代节点(descendant node),P1是P0的祖先节点(ancestor node)。

我们假设与搜索树节点相关联的CSP总是使用类似AC3的[13]约束过滤算法制作GAC,除了我们的全局约束。

在这里,我们将对称性视为解决方案集的属性。 解对称[20]是在赋值时保留解的置换。

当由m2修剪的所有节点(分别为解决方案)也将被m1修剪时,对称破坏方法m1在节点(分别为方法)修剪中比方法m2更强,由表示。当时,对称破坏方法m1在节点(相应的解)修剪中比方法m2严格强,表示为。注意分别表示

搜索期间的对称性破坏(SBDS)[8,6]在搜索期间为问题添加了约束,以便在从搜索节点回溯之后,添加的约束确保在后续搜索中不允许该节点的对称等效。 优点是该方法可以破坏任意种类的对称性。 部分SBDS(ParSBDS)[4,16]是SBDS,但仅处理所有对称性的给定子集。LDSB [14]是捷径SBDS [8]的进一步发展,它只处理有效对称性及其组成。 递归SBDS [12](ReSBDS)通过不仅破坏给定的对称性而且还破坏一些对称性组合来扩展ParSBDS。

SBDD [3,7]是另一种广泛使用的动态对称破缺方法,它通过检查当前状态是否由记录的nogoods主导来打破对称。

3 A Global Constraint for Increasing Nogoods

如果nogoods可以形成一个序列,一组有针对性的nogoods正在增加

其中,(i)对于所有      (ii)没有nogoods被另一个暗含。我们根据上下文将nogoods视为一组或一个序列。

每一个增加的nogoods(increasing nogoods)序列有如下的形式:

可以使用3个整数列表紧凑地编码一系列增加的nogoods:I(索引),E(相等)和N(不相等)。

我们对LHS上的每一个等式和RHS上的每一个不等式进行编码。列表具有相同的长度。 考虑3个列表中的第i个元组(I{i}, Ei, Ni)。 如果,则元组在nogood的LHS上编码。 如果,则它在nogood的RHS上编码

假设我们有四个nogoods

这些nogoods是正在增加的,因为且任何一个都没有被另一个暗示。 3个列表的推导如下。

推导过程如下:

(3)中得出的3个列表具有以下特征。

Lemma 1. I, E, N中的每个(Ii, Ei, Ni)对应于等式或不等式,其可以被认为是变量-值对。 所有对都是不同的。

直接后果是确保这3个列表的大小具有上限。

Theorem 1. 假设P=(X, D, C)是一个CSP,其中|X|=n,I,E和N是由一个increasing nogoods序列建造的。则这三个列表的最大大小是

接下来,我们提出一个全局约束,相当于这些nogoods,但具有比每个单独的nogood更强的修剪能力。 假设P =(X,D,C)是CSP,I,E和N是具有相同大小m的3个列表,其形式为(3)。一个increasing-nogoods全局约束incNGs(I,E,N)(X)具体表示为

这意味着如果Ni是非⊥值,并且当存在非⊥值时,在I中i之前具有索引的所有变量被分配给E中的相应值,则值Ni将从D(xIi)中被修剪。 注意,incNGs(I,E,N)(X)是由I,E和N参数化的全局约束族。

由于空间限制,我们没有证据表明从一系列increasing nogoods构造的全局约束在逻辑上等同于increasing nogoods的结合。

4 Deriving incNGs(I,E,N)(X) from SBDS and Its Variants

从SBDS及其变体中导出incNG(I,E,N(X)

在本节中,我们首先介绍了一种具有较小开销的ReSBDS的改编。接下来,我们证明了由SBDS或它的变量所添加的约束从根节点累积到搜索节点以获得相同的对称性,从而形成一组increasing nogoods。

4.1 Light ReSBDS 

介绍了一种具有较小开销的ReSBDS的改编。

通过类似AC3的[13]约束滤波算法对域进行过滤修剪。 如果在约束c的传播期间修剪了值v,我们说这种修剪受约束c的影响。

递归SBDS(Recursive SBDS) [12](ReSBDS)使用可回溯集T来记录其违规可以指示对称性破坏约束已经满足的所有赋值。 根据这些违规行为,将增加额外的限制。假设被记录在T中,因为在节点P0处添加了约束. 假设在后代节点P1处进一步违反该分配,即从D(xj)修剪a。 修剪表明已经令人满意。这种修剪通过问题约束或对称破坏约束来实现。 仅考虑后一种情况,我们提出了如下的没有T的ReSBDS方法的简易版本。

[Light ReSBDS (LReSBDS)] 假设G是对称的集合。LReSBDS总是通过ParSBDS添加约束。一旦通过具有部分赋值A的节点P0处的对称破坏约束从D(xi)修剪值v,则对于所有g∈G,添加对称破坏约束

这里,约束的递归添加是通过传播机制完成的,该传播机制仅在每个可变域不再改变时停止传播。

由于空间限制,我们在没有证据的情况下说明了ReSBDS和LReSBDS之间的比较。

条件:当给定相同的对称集并且两者都使用相同的静态变量和值排序时。

我们推测,但我们还没有找到一个例子。

4.2 Deriving incNGs(I,E,N)(X)

【证明了由SBDS或它的变量所添加的约束从根节点累积到搜索节点以获得相同的对称性,从而形成一组increasing nogoods】

在下文中,通过SBDS的变体,我们指的是ReSBDS和LReSBDS。

SBDS或其变体在搜索路径上为相同的对称性g添加的所有约束形成一组increasing nogoods。

Theorem 4. 假设G是一组对称性。 进一步假设在搜索节点P1处,由SBDS(或其变体)从根节点累积到P1以用于对称性g的约束是R,其中g∈G。R是一组increasing nogoods

在搜索期间,所有子节点都从其父节点继承I,E和N。 每次SBDS或其变体引入nogood时,都会扩展3个列表来记录nogood。 假设每个节点在添加新的nogood时应该发布一个新的increasing nogoods约束。然而,我们在下面表明,在父节点中发布的对称性g的增加的对象约束总是被其子节点中发布的相应的约束所包含。 因此,每个搜索节点仅需要针对每个给定的对称性处理一个增加的nogoods约束

添加到父节点的所有对称性破坏约束也将添加到子节点。 具有以下定理是直截了当的。

Theorem 5. 假设g是对称的,P0和P1是搜索节点,其中P1是P0的后代。 假设P0构造I,E,N,P1相应地由SBDS(或其变体)构造I‘,E’,N‘。我们有

为了实现LReSBDS,我们需要知道修剪是受问题约束还是对称破坏约束的影响。 因此,我们需要访问对称破坏约束的滤波算法。 这可以在用于LReSBDS的incNG的约束滤波算法中容易地实现

5 A Filtering Algorithm 一种滤波算法

假设是一个increasing nogoods的序列。 一个nogood ng_{i}低于(lower than)nogood ng_{j} 当且仅当 i <j,且ng_{j}高于ng_{i}

假设\Lambda是具有当前域D的increasing nogoods序列。一个nogood ng由\Lambda产生,当且仅当(i)存在ng',\Lambda产生ng‘,且产生ng,或者(ii)我们可以找到一个,且\Lambda的一个子序列,其中p=| D(x) |,使得其中rhs(ng)是中最右边的赋值。

如果\Lambda不能产生任何nogoods,那么一系列increasing nogoods就会减少。 在本文的其余部分,我们假设\Lambda始终是一个形式为的increasing nogoods的序列。

Theorem 6. \Lambda是简化形式或具有简化形式的increasing nogoods的等效序列。 等效序列的大小永远不会增加。

简化程序反复检查条件(ii)以适当地生成新的nogood。 假设根据条件(ii)从\Lambda生成新的nogood ng并且ngk是\Lambda中的最低nogood,使得:子句分解确保等于。因为ng暗示等价于。如果不能生成新的nogood,则它是简化形式。 否则,我们继续从产生新的nogood。

【下面是一个很棒的例子,基本可以解释前面在干嘛】

考虑(4)中给出的nogoods,其中{1,2},且D(x4)=D(x5)={1}。考虑ng1和ng2。在x3\neq1,和x3\neq2中,其中有一个一定是false的,因为x3必须取一个值。因此我们可以产生nogood,也就是,可以通过将最右边的赋值移到右边来表示为一个。现在,是一个等价于的新ncreasing nogoods序列。考虑ng4,x5的域是单例模式(有且仅有一个元素的集合)。就产生了。现在(<ng0, ng5>等价于<ng0, ng1, ng4>)x4的域是单例模式,产生了。现在<ng0, ng6>等价于<ng0, ng5>。不会再有新的nogood产生,因此<ng0, ng6>是<ng0, ng1, ng2, ng3>的简化形式。

可能出现有不止一个\Lambda的子序列满足条件(ii)。我们给出了最短nogood规则(the shortest nogood rule):每当根据条件(ii)从A生成多个nogood时,我们选择最短的生成。 换句话说,我们使用子序列生成,其中最高的nogood是A中最低的

赋值x=v满足\Lambda中的覆盖条件,当且仅当换句话说,当一个赋值x=v第一次出现在nogood(即ng)的LHS的序列中时,对于除v以外的所有,x\neqv’将出现在低于ng的nogood的RHS上。

对于简化形式的increasing nogoods序列,我们只考虑一个修剪条件:当\Lambda中的nogood的LHS为真时,其RHS被强制执行值修剪。

所描述的简化过程似乎要求重复扫描increasing nogoods序列,这是低效的。 在下文中,我们解释了覆盖条件如何允许我们仅扫描nogood序列一次以将其转换为简化形式

再一次考虑(4)中的nogoods。如果,D(x5)={1,2},在<ng0, ng1, ng4>中的ng4就不会产生ng5,因为条件(ii)不满足。这是因为x5=2没有满足覆盖条件。我们没有证据证明以下定理。

Theorem 7. 假设\Gamma是根据具有当前域的最短nogood规则从\Lambda转换的新的等效序列的increasing nogoods。 只有当赋值满足\Lambda中的覆盖条件时,\Gamma才能产生更多新的nogoods,其中ng是\Gamma中最高的nogood

考虑(4)给出的nogoods,根据第六页的值域:{1,2},D(x4)=D(x5)={1}。我们从ng0开z扫描。赋值x2=1不满足ng覆盖条件,因为。在ng2,赋值x4=1和x5=1满足覆盖条件,因为他们都是单例模式的值域现在新的nogood产生,它的RHS是不用再一次从第一个nogood开始扫描,一个新的nogood就会立刻产生。因为,另一个新的nogood也会立刻产生。现在1,不满足约束条件覆盖条件。我们可以停止了,<ng0, ng6>等价于原来的序列且是简化形式。

因此,我们只需扫描ng0及以上的序列。 对于每个nogood,我们检查从ng0到这里的nogoods是否满足条件(ii)。 此外,我们还检查并记录LHS上的新赋值是否满足覆盖条件。 一旦启动第一个化简步骤,就不再需要检查条件(ii)。 我们何时停止:不满足覆盖条件,其中ng是最后生成的nogood。

在我们的过滤算法中,第一步是使用在当前域下LHS为真的nogoods进行修剪。 然后可以扔掉这些nogoods。 剩下的nogoods仍然形成一个增加的序列,可以变成简化形式。简化形式的单个修剪条件仍然是昂贵的检查。 事实证明,如果序列中第一个nogood的LHS中最左边的赋值在当前域下不是真的,我们可以更有效地检测简化形式的修剪。 这种形式很容易获得。

Lemma 2. 假设x=v是最左边的赋值且在当前域下是假的,\Delta中在x=v前的赋值的集合。进一步假设是increasing nogoods的序列,其中\Gamma等价于\Lambda而且是\Lambda的更简化形式。

假设我们有一个增加的序列,其形式如上一个引理中给出的那样。 通过重复应用单个修剪条件,我们得到以下结果,这给出了非常简化的修剪条件。

Thorem 8. 假设\Gamma\Lambda的简化形式,其中的第一个赋值在当前域x下不为真。值\Gamma中会被移除,如果其中x\neqv是无条件nogood

在下文中,我们基于以下两个主要步骤给出了一种有效的过滤算法:对LHS为真的nogoods进行效果修剪,并将剩余的increasing nogoods序列的简化版本转换为简化形式。我们使用\Lambda的I,E和N编码来解释我们的算法。指针\alpha用于索引3个列表以对LHS为真的nogoods进行修剪

 

----指针\alpha被设置为最大的z引,使得注意\alpha指向中不满意的等式,其中是LHS不正确的最低nogood。 对于低于ngp的所有nogood,他们的RHS可以强制修剪值。

 

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

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值