2.2 The Constraint Satisfaction Problem: Representation and Reasoning
在这里,我们考虑约束满足问题的表示,算法用于解决它们的各种推理以及这些解决方法的分析。
2.2.1 representation
经典的CSP范例既可以是针对特定领域的,也可以通过各种重要方式进行推广(通用的)。 一个重要的专业化考虑了域和约束的扩展性/内涵性。 如果D中的所有域都是有限集,具有扩展表示,那么它们和约束关系可以被扩展地表示和操纵。 然而,即使是大脑和其他相关内容都是有意义的,本章和手册中其他地方描述的许多技术仍然适用。 如果每个约束的范围的大小限制为1或2,则约束是一元和二元的,并且CSP可以直接表示为约束图,其中变量作为顶点,约束作为边。 如果约束的范围不是那么有限,则需要超图来为每个连接所涉及的p个顶点的p-ary约束(p> 2)进行超边界。命题公式SAT的满意度是CSP的另一个特化,其中域被限制为{T,F}并且约束是条款。 3-SAT是典型的NP完全决策问题,是一个进一步的限制,其中每个约束(子句)的范围是3个或更少的变量。
CSP的经典观点最初由Montanari [60]和Mackworth [53]开发。 它与SAT [16,15,54],关系代数和数据库理论[58],计算机视觉[10,41,79]和图形[73]有着密切的联系和联系。
随后开发了经典CSP模型的各种概括。 其中最重要的是约束优化问题(Constraint Optimization Problem,COP),其中有几种显着不同的配方,并且命名法并不总是一致的[19]。 也许最简单的COP公式保留了CSP限制,只允许“硬”布尔值约束,但在变量上增加了成本函数,必须最小化。 例如,这经常出现在调度应用程序中。
2.2.2 Reasoning: Inference and Search
我们将在两大类别下考虑解决CSP的算法:推理和搜索,以及这两种方法的各种组合。如果域Di都是有限的那么推定解的有限搜索空间是Ω=⋊⋉iDi(其中⋊⋉是连接算子的相关代数[58])。理论上,可以枚举Ω,并测试每个n元组以确定它是否是一个解。这种盲计数技术可以在使用两种不同的正交策略时进行改进:推理和搜索。在推理技术中,局部约束传播从Ω中消除大的子空间,理由是它们必须避免解决方案。系统地搜索探索Ω,经常消除单个故障的子空间。两种策略的成功取决于CSP结合的简单事实:要解决它,必须满足所有约束条件,以便变量子集上的局部失效排除所有推定的解决方案,并对这些变量进行相同的投影。这两种基本策略通常在大多数应用中组合使用。
2.2.3 Inference: Constraint Propagation Using Network Consistency 推理:使用网络一致性进行约束传播
CSP推理技术的主要发展是在20世纪70年代发现和开发用于约束传播的网络一致性算法。 在这里,我们将概述该开发。
使用回溯来解决CSP的分析表明,它几乎总是显示出病态的颠簸行为[3]。 颠簸是对回溯搜索树的失败子树的重复探索,这些子树基本上是相同的 - 不同的分别与不同的子树相关的变量。 由于这种不相关的任务具有相应的指数,因此颠簸通常是回溯运行时间中最重要的因素。
所有一致性算法背后的第一个关键见解是,通过收紧约束,使用易处理的,高效的多项式时间算法,可以一劳永逸地识别和消除大量的颠簸行为。 第二个见解是,一致性的级别或范围,本地上下文中涉及的变量集的大小,可以作为参数从1到n进行调整,每个级别的增加需要相应的更多工作。为简单起见,我们将首先描述仅具有有限域和一元和二元约束的CSP一致性算法的开发,但我们将看到,这两种限制都不是必需的。 我们假设读者熟悉图论,集合论和关系代数的基本要素。
节点一致性是最简单的一致性算法。
弧一致性是一种使用二进制约束进一步收紧域的技术。
换句话说,删除Dj中的那些令人难以理解的相应元素,满足Rij。 如果网络的所有弧都是一致的,则网络是弧一致的。 如果所有弧都已经一致,那么只需要通过它们就可以验证这一点。 但是,如果必须使至少一个弧保持一致(即D'i 6 = Di-来自Di的确定)那么必须重新检查一些弧。 基本的弧一致性算法只是重复检查所有弧,直到达到没有进一步域减少的固定点。 该算法称为AC-1 [53]。
Waltz [79]意识到更智能的弧一致性簿记方案只会重新检查那些可能因Di的删除而直接导致不一致的弧。 Waltz的算法,现在称为AC-2 [53],通过弧传播域的修订,直到再次达到固定点。 由Mackworth [53]提出的AC-3是AC-2的概括和简化。 AC-3仍然是使用最广泛且最有效的一致性算法。 对于这些算法中的每一个,让P'= AC(P)是在P上强制执行弧一致性的结果。然后很明显sol(P)= sol(P')和|Ω'|≤|Ω|。
理解所有网络一致性算法的最佳框架是将它们视为从网络中删除本地不一致性,这种不一致性永远不会成为任何全局解决方案的一部分。 当这些不一致性被移除时,它们可能会传播以导致先前一致的相邻弧的不一致。 这些不一致性反过来被删除,因此算法最终单调地到达固定点一致的网络并停止。 不一致的网络与通过应用一致性算法产生的一致网络具有相同的解决方案集; 然而,如果随后将一个回溯搜索应用于一致的网络,则假设相同的变量和值排序,所得到的颠簸行为可能不会更糟并且几乎总是更好。
路径一致性[60]是要考虑的下一个一致性级别。 在弧一致性中,我们使用局部二元约束来收紧一元约束。 在路径一致性中,我们类似地使用对变量三元组的隐式诱导约束来收紧二元约束。
与弧一致性一样,用于强制整个网络的路径一致性的最简单的算法是检查并确保每个长度2 pathz(i, m, j)的路径一致性。 如果必须使任何路径一致,则再次重复通过路径的整个路径。 这是算法PC-1 [53,60]。
算法PC-2 [53]确定,当这些条件具有一致性时,这些另外的路径可能会变得不一致,因为如果需要的话,那么这些路径就会成为对象,并且必须进行进一步的检查。 PC-2在PC-1上的实质性节省,就像AC-3比AC-1更有效[55]。
通常,在建立路径一致性之后,在所有节点对之间存在非平凡的二进制约束。如Montanari [60]所示,如果长度为2的所有路径都是一致的,那么任何长度的所有路径都是一致的,因此不需要考虑更长的路径。一旦建立了路径一致性,沿着任何路径都有一串值,满足路径开始和结束时允许的任何一对值之间的关系。这并不意味着CSP必然有解决方案。如果路径使用一系列兼容值遍历整个网络,如果该路径在节点处自相交,则该节点上的路径上的两个值可能不同。实际上,即使可能没有全局解,也可以与非空域和关系建立一致性,这是弧一致性和路径一致性的特性。没有空域的低级一致性是存在解决方案的必要条件,但不是充分条件。因此,如果一致性确实清空任何域或关系,则没有全局解决方案。
顺便提一下,我们注意到,就关系代数而言,我们对这些算法的抽象描述是具体而非实现。 实现通常可以通过利用约束的语义来实现效率节省,例如所有不同的全局约束alldiff,它要求其范围中的每个变量采用不同的值。
虽然没有直接明显的图论理论概念类似于节点,弧和路径来激发更高形式的一致性,但考虑到长度为2的路径实际上是足够的路径一致性这一事实为概念提供了自然的动机。 由Freuder于1978年引入的k-一致性[26]。 k-一致性要求给定任何k-1变量的一致值,存在任何第k个变量的值,使得所有k个值是一致的(即k值形成由k个变量引起的子问题的解)。 因此,2-consistency相当于arc一致性,3与路径一致性相当。 Freuder提供了一种综合算法,通过实现越来越高的一致性,在没有搜索的情况下找到CSP的所有解决方案。
弗劳德于1985年继续推进(i,j) - 一致性[28]。 如果给定任何i变量的一致值,则存在任何其他j变量的值,使得所有i + j值一致,则约束网络是(i,j) - 一致的。 k-一致性是(k -1,1) - 一致性。 特别注意(1,j) - 一致性,这是现在被称为“单身一致性”的概括。
本文探讨了约束满足问题(CSP)的表示方法,包括经典CSP模型、约束优化问题(COP),以及解决CSP的推理和搜索算法。文章详细介绍了节点一致性、弧一致性和路径一致性等约束传播技术,以及它们如何消除局部不一致性和改善回溯搜索的效率。
2050

被折叠的 条评论
为什么被折叠?



