赞
踩
约束传播和回溯是解决约束满足问题的两种基本技术。 在解的搜索过程中,通过约束传播丢弃不属于任何解的变量对和值对,保证广义弧的一致性,避免了无结果的搜索。
然而,约束传播经常被调用,对许多CSP几乎没有影响。 在预测何时调用约束传播以求解CSP方面投入了大量精力。 然而,对于不同的约束条件,还没有一个有效的解决方法。
本文给出了一个新的定理,用于在一个值图中识别所有alldifferent约束的边,这些约束的去除会导致无用的约束传播。 我们证明了【如果表示变量赋值】的【预期可去除边】存在【一个交替循环】,则该边(和赋值)可以在没有约束传播的情况下被丢弃。 基于这个定理,我们提出了一种新的优化技术,用于早期检测无用约束传播,该技术可以结合到针对alldifferent约束的任何现有算法中。 在8个领域的93个基准问题实例上,新方法的实现比现有方法提高了1到5倍。 此外,新算法具有良好的可扩展性,在较大的问题上比现有的算法运行速度更快。
【如果表示变量赋值】的【预期可去除边】存在【预期可去除边】,对于表示变量赋值的(定语修饰预期可去除边)预期可去除边存在一个交替循环
约束规划[Rossi et al.,2006]是解决复杂组合问题的一种强有力的技术,在计算机科学和其他领域有着广泛的应用。 约束满足问题(CSP)定义了一组变量,这些变量的值必须满足某些指定的约束。 AllDifferent约束[Lauriere,1978]是一种全局约束,其中所有变量必须具有不同的值。 Alldifferent约束是最重要也是最困难的约束类型之一,在许多应用中都有出现,如谜题、图着色、调度、推荐或匹配[Hoeve,2001]。
回溯[Golomb和Baumert,1965]和约束传播[APT,1998]是求解CSPS最常用的两种技术。 搜索CSP解决方案相当于遍历所有可能的变量赋值,在最坏的情况下导致指数时间复杂性。 引入约束传播,通过剪枝搜索空间中无用的分支或等效地去除任何问题解中都不存在的不一致变量值赋值来加速搜索过程。 如果在搜索的某一阶段没有不一致的值,我们说约束传播器对所有不同的约束都实现了广义弧一致性(GAC)。 约束传播算法(或约束传播器,过滤算法)经常被用来过滤不一致的变量值分配–越早检测到不一致的分配,约束传播器就越有效。
针对不同的约束,开发了几种约束传播器来实现GAC。 Régin首先将所有alldifferent约束的约束传播问题表述为二部图中的最大匹配问题[Régin,1994]。 Régin证明了一个很有洞察力的定理,证明了不属于二分图任何最大匹配的边一定是不一致的变量值赋值。 这些边可以通过计算变值图的最大匹配和强连通分量来识别。 这个定理构成了几乎所有现有的针对alldifferent约束的GAC的约束传播算法的基础。 由于最大匹配可以增量计算,Régin算法的总体计算量主要取决于计算SCCS的代价。 Gent等[Gent et al.,2008]提出了一种SCC优化技术来扩展Régin算法。 它在搜索过程中拆分各个SCC,并且只计算包含移除的变量-值对的SCC。 在我们之前的工作[Zhang et al.,2018]中,我们提出了一个新的图定理,该定理可以用来在计算最大匹配后去除一些边,从而加速传播过程。 所有这些现有的方法都有相同的最坏情况复杂度,因为它们都需要计算最大匹配,然后是SCCS。
尽管现有的约束传播器效率很高,但一个很少被解决但至关重要的问题是,约束传播器被频繁调用,但大多数时候在求解CSPS时不会删除任何不一致的值。 据报道,大量的约束传播是无用的,并且不会消除所有alldifferent约束的不一致值[Katriel,2006;Gent et al.,2006;Boisberranger et al.,2013]。 在本文的实验部分中,我们还将在图4中的一些基准实例上给出类似的、更详细的结果。 因此,在求解一个CSP的过程中,一个关键问题是何时针对alldifferent约束调用约束传播器。 由于约束传播占计算量的很大一部分,减少无用约束传播的数量可以加快CSP的求解速度。 越早检测到无用的约束传播,CSP求解算法的效率就越高。
然而,确定约束传播是否有效在技术上具有挑战性。 Katriel[Katriel,2006]在假设边从值图中随机移除的情况下,对何时实施GAC进行了理论分析。 她指出,很少有边是重要的,去除它们将有助于减少一些变量的域大小。 她建议推迟约束传播,直到移除一定数量的重要边。 然而,由于重要的边在搜索空间中并不是均匀分布的,在搜索早期缺少一个有用的传播子调用会增加整体计算开销。 Gent等人[Gent等人,2008]扩展了Katriel的思想,提出了一种实用的动态触发器方法,以避免无用的传播。尽管如此,这种方法未能提高性能。 Gent等人[Gent et al.,2008]报道了动态触发器通常会增加所有alldifferent约束相关问题的总体运行时间。 Boisberranger[Boisberranger et al.,2013]提出了一种概率方法,通过计算传播者的调用概率来强制约束一致性(BC)。
总之,据我们所知,目前还没有一种实用的方法来准确有效地确定在求解CSP的过程中何时应该调用约束传播器。 理想情况下,必须避免所有无用的约束传播,每当调用约束传播器时,它必须通过删除一些不一致的值来帮助减少搜索空间。 在Régin’s的开创性理论工作之外所取得的微小进展启发我们推断,Régin’s的洞察力定理可能已经被现有的方法利用到了极限。 现有的各种传播方法已经非常快,具有几乎线性的运行时间,因此任何决定何时调用约束传播子的方法都必须是准确和有效的,否则将会减慢搜索过程。 但是,在不实际运行传播程序的情况下,很难确定是否应该调用传播程序。
在本文中,我们提出了一个新的定理,并发展了一种早期检测无用约束传播的伴随技术。 其主要思想是让传播者自己决定当前约束传播是否有用,一旦确定当前约束传播无用,就立即终止传播过程。 这一思想源于一个新的定理即在一个值图中为所有alldifferent约束识别不重要的边。 我们严格地证明了如果在图中存在一个交替圈且包含边删除后的端结点,则边是不重要的。 据我们所知,这是第一个超越Régin定理的准确而有效的方法,用于早期确定约束传播是否有效。 利用这一定理,我们提出了一种新的异构传播器,它能有效地识别并及时地阻止无用的约束传播。 我们在Gent等人的最先进的CSP求解器中实现了我们的算法。 [Gent et al.,2006]并实现了比现有方法1-5倍的加速。 此外,我们的传播器在大型问题上表现得更好,显示了良好的可扩展性。
约束设计: 约束满足问题(CSP)定义为三元组(x,d,c),其中x是一个变量集{x1,x2,…,xn},d是一个域集{d1,d2,.,dn},其中每个变量xi∈X可以在有限域di∈D中取其值,c是一个约束集,它指定了所有允许的值到变量的赋值。 一个CSP p=(x,d,c)的解是一组值(d1,…,dn)∈D1×··×dn对变量的赋值,使得对于变量xi1,…,xim上的每一个约束c∈C,都存在(di1,…,dim)∈C。 一个约束是广义弧一致的,即一个变量的每一个值都可以扩展到约束的所有其他变量,保持约束的可满足性。 全局约束可以捕获数量不固定的变量之间的关系。 它是建模现实世界中的CSP的一个有用的工具。 在各种全局约束中,alldifferent约束是最重要的约束之一,一个完全不同的约束C指定C中涉及的每对变量不能取相同的值。
图论: 在AllDifferent约束上实施GAC需要在AllDifferent约束的二分值图上找到最大匹配。 给定一个完全不同的约束C,C的值图是二部图B(c)=(XC,DC,E),其中XC是C中涉及的一组变量,DC是一个值域,(Xi,D)∈E IFF D∈Di。
匹配是一组不共享公共节点的边。 最大匹配是有最大数量边的匹配。 匹配节点是连接到给定匹配中的边的节点,否则为空闲节点。 交替路径是指其边在匹配中和匹配中交替出现的路径。 增广路径是两个端点都是自由的交替路径。 注意到最大匹配对于二部图通常不是唯一的; 二部图可能存在多个最大匹配。 允许的边是属于某些(但不是全部)最大匹配的边。 类似地,允许的节点是由一些(但不是全部)最大匹配覆盖的节点。 冗余边是不出现在任何最大匹配中的边。 允许边可以由Berge的一个早期定理确定[Berge,1973]:
The Berge Theorem.是本篇论文明确给出,原论文在Property 1中写出,两个iff完全等价,iff右边描述相同;iff左边描述不同,但是根据定义允许的边是属于某些(但不是全部)最大匹配的边,两者等价。
强制执行AllDifferent的GAC: Régin在Berge定理的基础上提出了第一个适用于AllDifferent约束的GAC算法, 该算法通过去除值图中的冗余边来实现GAC。 该算法首先计算值图的最大匹配,然后基于最大匹配构造值图的有向版本。 通过计算从自由结点开始的交替路径和有向二部图的SCCs 图1显示了一个简单的示例。 SCCs之间不匹配的边缘是多余的边缘,可以并且应该被去除。
有向二部图的SCC代表就是寻找交替循环cyle,强连通分量即对于图中的任意两个节点都存在路径,对于若对于无向图来说只要图中所有节点都在一条路径上就肯定可以,循环时特殊的路径,我们需要自由结点开始的交替路径和交替循环,若我们使用无向边,则我们不会识别到交替循环,我们会删除掉交替循环中的首尾连接边,因为不需要该边所有路径都存在于一条边上了,所有我们要是在一条路径上的结点无法都互相到达,现在能互相到达原因是边是无向的就是双向的可正可反,所以我们要使其单向,就需要创造有向图,若在有向值图当中若保证强连通分量也就是任意两个节点存在路径则必须需要交循环,因此在有向值图当中识别强连通分量的过程就是寻找交替循环。
自Régin提出GAC算法以来,已有许多算法改进和理论分析。 Gent et al. [Gent et al.,2008]提出了一种将SCC分成小的SCC的方法,并且只检查在连续传播之间包含变化的变量-值对的单个SCC。 由于该方法避免了不变SCC的计算,比Régin方法快1-5倍。 在我们之前的工作[Zhang et al.,2018]中,我们提出了一种不使用Berge定理识别冗余边的新方法。 我们将冗余边缘分为两类,第一类边缘可以在找到最大匹配后立即去除,第二类边缘可以通过在较小的子图中计算SCCS来去除。
考虑一个完全alldifferent约束A(x,d)和它的值图B(x,d,e)。 如果一个值图没有多余的边,我们就说它是一致的。
移除边会影响值图的一致性则是重要的边,因此对于一致值图B(X,D,E)的边e是重要的,则去除该边之后图中的一致性被打破,因为他被删除所以当前图存在不一致,如果一个值图没有多余的边,我们就说它是一致的,因为如果存在多余的边即不属于cycle和path,即不属于任何matching,则一定是无法是全局一致的取值,所以冗余边不会存在于一致的值图中,不一致图中则存在冗余边,所以重要的边删除后当前图存在不一致,则图B(X,D,E-e)有冗余边,需要调用约束传播器。边不重要: 移除不重要的边不会影响值图的一致性,即删除边后的图B(X,D,E-e)保持一致,则证明无冗余边,不需要调用约束传播器。
引理1: 考虑一致值图B(X,D,E)和B的最大匹配M,边E(x,y)∈M是不重要的 IFF 图B′(X,D,E-e)至少有两条不相交的M-交替路径连接节点X和Y。
证明: 充分性。 设图B′((X,D,E-e)中存在两条弧不相交的交替路径P1(x,y)和P2(x,y)(图2a)。 因为E是匹配边,所以P1和P2一定是扩充路径W.R.T。 我们可以将P1展开,得到新的匹配M′=P1⊕M,因此P1变成了一条交替路径,P1+P2是一个交替循环W.R.T。 因此,x和y仍处于相同的交替循环中。 由于B与B’之间唯一的区别是边E(x,y)的去除,且x和y是相互可达的,所以B’的所有结点都在同一SCC中,B’保持一致。
必要性。 假设E不重要,这意味着B′(X,D,E-e)和B(X,D,E)具有相同的SCCs。 因为x和y在同一个SCC中,所以必须至少有两条路径连接x和y。 因为E是匹配边,所以B’必须有一个新的最大匹配M’。 因此,必须有一条增广路径连接X和Y W.R.T。 因此,B′(X,D,E-E)至少有两条弧不相交的M-交替路径连接节点X和Y W.R.T。 M,它完成了证明。
**引理2:**对于一个一致值图B和它的一个最大匹配M,不匹配边E(x,y)是不重要的,IFF,图B′(x,d,e-e)至少有两条弧不相交的交替路径连接节点X和Y,其中一条路径以匹配边开始和结束。
证明。 充分性。 假设存在两条弧不相交的交替路径P1(x,y)和P2(x,y),且P1(x,y)以匹配的边开始和结束(图2b),很容易看出P1+P2形成一个交替循环W.R.T。 M因此,节点X和Y必须在同一个SCC中。 B和B’之间唯一的区别是去掉了E(x,y),因此,B’必须具有与B相同的SCCs,并且仍然是一致的。
必要性。 假设E不重要,B′(X,D,E-E)与B具有相同的SCC,因为X和Y处于相同的SCC,所以至少有两条方向相反的路径连接X和Y,这就完成了证明。
引理1和引理2的主要思想是,当从一致值图中去掉边E(x,y)时,如果存在包含节点x和y的交替循环,则该值图保持一致。
我们现在准备提出一个快速过滤算法对所有不同的约束。 定理1允许我们通过寻找交替圈(一致性角度我们改交替路径为环的理念,大小环和对等环)来识别一致值图的不重要边。 在这里,我们将展示如何有效地将不重要边的识别结合到一个现有的约束传播器中,而计算量很小。
一个幼稚的想法是在有向值图中为每个被移除的边寻找一个循环。 如果边缘不重要,则不需要约束传播; 否则,可能需要遍历整个值图。 正如在第2节中所讨论的,传播子的全部计算的大部分用于计算SCCs,而SCCs可以用Tarjan的算法在线性时间内完成[Tarjan,1972]。 (确定识别边是否重要)如果遇到一个重要的边,首先需要遍历整个图,寻找一个交替循环,这将失败,因为边是重要的。 然后我们需要再次遍历该图以找到该图的SCC。(最原始的Régin算法构建残差图) 因此,整个计算代价将至少是原始方法的两倍,这将显着降低整个算法的速度。
针对上述问题,我们设计了一种有效的方法,将重要边的识别引入到Tarjan的SCC算法中。 重要的是要注意,在值图上进行深度优先搜索(DFS)就足以为移除的边找到循环。 另外,请注意,Tarjan的SCC算法本身运行DFS。 因此,它可以自然地适应为删除的边查找循环。 更具体地说,如果在DFS搜索过程中发现了一个back-edge,即non-tree edge指向被访问过的节点,那么我们必须已经找到了一个循环,并且只需要检查该循环是否包含被删除边缘的端节点。 如果找到所有删除的边都在循环中,我们可以立即终止约束传播的过程。
通过检查去除的边缘是否重要,改进了Tarjan的SCC算法。 如果所有移除的边缘都不重要,我们立即停止寻找SCCs的程序。 当存在重要边缘时,我们继续寻找SCCs,并去除SCCs之间的冗余边缘。(最原始的Régin算法) 总的来说,我们的方法在搜索SCCs时只增加了少量的计算量来检查去除的边缘是否是循环的。 在算法1中阐述了SCCS早期检测的思想和步骤。
上述算法的主要步骤与Tarjan的SCC算法相同。 我们只添加第12-14行来检查删除的边是否在周期中,添加第18-19行来决定何时停止当前传播。 在DFS搜索过程中,如果我们遇到一个 (back-edge)后缘E(A,B),那么节点A和B之间的DFS树中的节点必须在一个循环中。 因此,我们使用两个数字(第一次访问节点的DFS索引和最后一次访问节点的DFS索引)来表示一个循环。
为了评估新方法的性能,我们使用Minion约束求解器1.8[Gent et al.,2006]实现了我们的算法。 所有实验都在Windows10工作站上运行,该工作站配有2.8GHz的Intel Xeon E5-2680 V2处理器和16GB的DDR31600MHz RAM。 Minion约束求解器已经用几种优化技术实现了AllDifferent传播器, 如增量匹配[Régin,1994],BFS匹配[Cormen et al.,1990],分阶段传播[Schulte and Stuckey,2004],优先级队列[Schulte and Stuckey,2004],分配优化和SCC分裂[Gent et al.,2008]。 为了实现我们的算法,我们使用了BFS最大匹配和Tarjan的SCC算法。 我们采用深度优先的时间回溯作为搜索策略。
评估的基准问题来自CSP库(http://www.csplib.org/)和Minion约束求解器(https://constraintmodelling.org/minion/),其中包括几个典型的不同约束问题。 这些问题包括Langford数问题(CSPLIB中的prob024)、Golomb标尺问题(CSPLIB中的prob006)、拟群存在性问题(CSPLIB中的prob003)、社会高尔夫球手问题(CSPLIB中的prob010)、优美图问题(CSPLIB中的prob053)、幻方问题(CSPLIB中的prob019)、N-皇后问题(CSPLIB中的prob054)、运动调度问题(CSPLIB中的prob026)。 我们使用Minion、Conjure[Frisch et al.,2005]、Savile Row[Nightingale et al.,2017]生成器为上述8个问题生成了93个大小不同的问题实例。 我们生成的Golomb标尺实例的刻度数为50~80,标尺的最大长度为2500~6400; 具有五个团且每个团的节点数在25~40之间的优美图实例; Langford的20和100个集合的数实例,集合中的数从5到49;拟群存在性实例,阶数从30到65;9个群,每个群有4个高尔夫球手,周数从11到15; 阶数从4到70的幻方实例,皇后数从128到2048的N皇后实例; 团队数量从30到80的体育调度实例。
为了理解检测无用约束传播的重要性,我们首先分析了无用约束传播被调用的频率。 我们从8个问题中选择了31个实例,并使用了Minion的缺省AllDifferent传播器,它是由[Gent et al.,2008]提出的。 这些实例相对较小,可以在一个时间限制内解决,以允许对传播器的有效性进行有效的基准测试。 为此,我们计算了传播者没有消除任何不一致性的全部调用的比例(图4)。 不出所料,大多数调用都是无用的。 例如,对于运动调度、拟群存在性和优美图等问题,超过80%-90%的调用是无用的,因此可以跳过这些调用以减少总体计算量。
接下来,我们将我们的算法与Régin算法[Régin,1994]、Gent算法[Gent et al.,2008]、Zhang算法[Zhang et al.,2018]在93个问题实例上进行了比较。 表1列出了这些算法中使用的单个优化技术。 因为大多数测试的问题实例都非常大,无法快速解决,所以我们将时间限制设置为1200秒,并按照[Gent et al.,2008]计算每秒搜索的节点数。 图5显示了我们的算法和其他三种算法每秒搜索的节点数的比率,显示了新算法提供的预期加速比。 不出所料,在大多数情况下,我们的算法比以前的算法更快,加速比高达5倍以上。
此外,我们的新算法在Langford数、Golomb标尺和优美图问题上表现出更好的性能(图5)。 我们认为这主要是因为这些问题有很大的值图。 对于大型问题实例,在该算法中调用约束传播器只需横切值图的一小部分,修剪搜索空间的大部分。 相比之下,对于小值图的小问题,我们的算法可能有微小的性能改进。 为了支持这一点,我们设计了两个以SCC计算为中心的模拟实验,以评估我们的算法在不同大小的合成二分图上的性能。 类似于对所有不同约束的过滤过程,我们从这些图中随机去除边,并计算SCC直到图中存在多个SCC。 图6a显示了与Tarjan的SCC算法相比,我们的算法总运行时间的加速比。 正如我们所料,密度较大的图具有更高的加速比。 此外,我们还在与所有不同实例具有相同大小的二分图上进行了上述实验。 图6b表明,对于大小与Golomb、优美图、Langford和幻方问题相同的图,加速比大于其他问题,如社会Golfer、拟群。 加速比差异与图的平均度相关(图6b)。
该算法在较大的问题实例上表现出较好的性能,具有良好的可扩展性。 为了量化这种可伸缩性,我们对Langford数、Golomb标尺和优美图问题使用了不同大小的实例。 与Gent算法相比,我们的方法的加速比随着问题的大小而稳步显著地增加(图7)。 这表明新算法是解决实际中各种约束问题的一种可供选择的方法。
各种不同的约束广泛存在于现实世界的约束问题中,有效地传播各种不同的约束对于约束规划具有重要意义。 自Régin将约束传播表述为二分图中的最大匹配以来,尽管经过了许多努力,但理论上没有取得任何进展,现有的基于Régin定理的方法似乎达到了算法瓶颈。 缺乏有效的方法来预测无用约束传播是阻碍CSP研究进一步发展的主要障碍。 本文给出了一个新的定理,证明了一个完全不同的约束问题的值图中不重要边的识别,它的去除不需要调用约束传播。 这是对Régin结果的一个期待已久的理论改进。 利用这一理论结果,我们提出了一种新的优化技术来早期确定无用约束传播,并提出了一种有效的过滤算法(结合Tarjan算法)来显著减少甚至避免无用约束传播。 我们将该算法与Régin算法和其他最先进的算法在基准实例上进行了比较,结果表明新算法的性能明显优于现有算法。 更重要的是,算法的性能随着实例大小的增加而提高,表明新算法具有良好的可扩展性。
将无用约束传播的检测与回溯搜索相结合的思想具有通用性,可用于不同约束之外的其他约束传播。 由于许多其他全局约束,如基数约束[Thalheim,1992]可以用值图来建模,我们的方法对于有效地解决包含不同或相似全局约束的约束满足问题具有很大的潜力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。