约束式编程学习笔记[5] local consistency (1) 剪定义域

5 Local consistency notions

5.1 Node consistency

  1. Q: 为什么本章以考察Node consistency为起点?
    A: 其考察一元谓词,一个谓词。最简单。
  2. Q: Node consistency对应的传播过程有什么效果?
    A: 缩减某些变元的定义域。(实际上,一元约束跟定义域的含义几乎没有区别)
  3. Q: 如何理解vacuously consistent?
    A: 没有一元谓词,自然就不违反node consistency了。
    假命题蕴涵一切命题(空虚的真)。
    这没有提供任何有意义的信息。

5.2 Arc consistency

  1. Q: 考察二元约束 C ( x , y ) C(x,y) C(x,y),形式化表示 C C C何时是arc consistent.
    A: ∀ x ∈ D x ∃ y ∈ D y , s . t . ( x , y ) ∈ C \forall x\in D_x \exists y\in D_y,s.t. (x,y)\in C xDxyDy,s.t.(x,y)C
    ∀ y ∈ D y ∃ x ∈ D x , s . t . ( x , y ) ∈ C \forall y\in D_y\exists x\in D_x,s.t. (x,y)\in C yDyxDx,s.t.(x,y)C
  2. Q: 为什么arc consistency和global consistency互不蕴涵?深入考察"local"的文字含义与上述事实的关联。
    A:
    举例:3皇后问题。或举例: x = y , x ≠ y , x ∈ { 0 , 1 } , y ∈ { 0 , 1 } x=y,x\ne y,x\in\{0,1\},y\in\{0,1\} x=y,x=y,x{ 0,1},y{ 0,1}. 是arc consistent但不global consistent.(前者重点在变量的local,后者重点在约束的local)
    解释:"local"只表示各个局部满足(变量或约束的局部),总体不一定满足。各个局部的满足可能是不同的集合保证的,各集合间没有交集。
    如果定义域中出现多余的元素,即 x = y , x ∈ { 0 } , y ∈ { 0 , 1 } x=y,x\in\{0\},y\in\{0,1\} x=y,x{ 0},y{ 0,1}则global consistent不arc consistent.
    解释:node consistent和arc consistent实际上都有利用consistent进行“剪枝”的意味,即利用"local"的考察,分类讨论判断一些具体的取值可不可行。
    从根本上讲,"local"一词,实际上就包含了分类讨论之意,即分开看各个局部的情况,使得好的在集合中,坏的不在集合中。反之,"global"并未作此局部性的考察,所以可能**不具有“最优”**性质,没有剪过枝(好的在集合中,多余了一些坏的也在集合中)。
  3. Q: 当所有约束都是()元的且所有变量定义域()时,arc consistency显然蕴涵()。
    A: 2,都是单元素集,global consistency

5.3 Hyper-arc consistency

  1. Q: 如何理解迄今三种consistency的名称?
    A: 把变量看作点,约束看作超边,整个系统看作(无序)超图。
    当然,下一节就对应有向图了。之后还有有序超图。

5.4 Directional arc consistency

  1. Q: 本节的directional arc consistency如果针对 ≺ \prec 关系考察,那么相比arc consistency,可能少剪枝哪些部分?
    A: 对于 a ≺ b a\prec b ab D b D_b Db没有被剪。只剪了靠前的变量。
  2. Q: 回忆在定义CSP时是在变量序列上定义的。那么如果想用directional arc consistency剪最后一个变量的定义域该怎么办呢?
    A: 对于CSP P \mathcal P P,直接在其变量序列上定义另一个序 ≺ \prec ,并依据此序构造一系列谓词,并得到新的CSP P ≺ P_\prec P,再对 P ≺ P_\prec P应用directional arc consistency.

猜你喜欢

转载自blog.csdn.net/tritone/article/details/121173935