约束式编程学习笔记[0] CSP基本概念 整数示例 实数示例

2 Constraint satisfaction problems: examples

  1. Q: 列举"modeling"中可能出现的困难。
    A:

For other problems the appropriate representation as a CSP is by no means straightforward and relies on a non-trivial ‘background’ theory that ensures correctness of the adopted representation.

这时需要专家知识对问题进行表述,并论证正确性。
以及

more than one natural representation exists.

此时需要适当选择表述,提高效率等。

  1. Q: 快速阅读章简介,说出本章行文中分类标准。
    A:

the domains over which they are defined
integer, real, boolean, symbolic

之前的四类都是satisfaction问题,如果同时需要优化(最小或最大化)某个objective就是optimization问题. 后者也单独作为了本章一节。

2.1 Basic concepts

  1. Q: ⟨ C ; D E ⟩ \langle \mathcal C; \mathcal D\mathcal E\rangle C;DE中的两者有什么区别和联系?
    A: 先由后者限定各个变量 y i y_i yi的定义域,在此基础上再由前者进一步进行约束。从更大的角度来看,限定定义域也是一种特殊的约束。
    某种意义上,两者是“全集和子集”的关系。

a constraint C C C on Y Y Y we mean a subset of …

满足约束就是在子集中。
注:从这个角度可帮助理解(对于 m m m元约束)满足约束的记号是 ( d i 1 , ⋯   , d i m ) ∈ C (d_{i_1},\cdots,d_{i_m})\in C (di1,,dim)C.
注:此处可以联系数理逻辑中论域、扩展的一阶语言、变元的类型、谓词等概念。如 m m m元谓词对应 m m m元约束。而 D E \mathcal D\mathcal E DE可以看成指定“变元类型”,也可以看成一元谓词。

  1. Q: 如何理解"no syntax was assumed".
    A: 在最基础的定义中,约束都是直接由子集表示的。syntax实际上可以看成辅助表示子集,提高书写效率的某些合理描述方式和人为约定。例如 x < y x<y x<y表示集合 { ( x , y ) ∣ x ∈ D x , y ∈ D y , x < y } \{(x,y)|x\in D_x, y\in D_y,x<y\} { (x,y)xDx,yDy,x<y}.
    从根本上来说,syntax在原始定义中没有涉及,且不是必须的、本质的。
  2. Q: 简要阐释"define constraints and CSPs to the sequences".
    A: 定义约束时都是有序的,不是无序的set,这在实际求解中带来好处。(必要性)
    这么做是可行的。举例:通过移项,引入辅助变量等手段。(可行性)
    注:更深入地,这和谓词和函项在计算机中的表示有关。在计算机内部表示中并不会用中缀的函项符和谓词符,所以其实移项只是表面而不是本质。比如,我们想把 a a a排在 b b b前,那么对于谓词 A ( b , a ) A(b,a) A(b,a)应当相应构造 A r e v e r s e A_{reverse} Areverse,使得 A r e v e r s e ( a , b ) = A ( b , a ) A_{reverse}(a,b)=A(b,a) Areverse(a,b)=A(b,a),从而在转换后的CSP中使用谓词 A r e v e r s e A_{reverse} Areverse. 这样构造谓词的过程在展示给人看时可能用移项表示。

2.2 Constraint satisfaction problems on integers

  1. Q: S E N D + M O R E = M O N E Y SEND+MORE=MONEY SEND+MORE=MONEY问题中,如果各个domain都是自然数集,那么需要哪些约束来描述这个问题?
    A: S , M S,M S,M [ 1 , 9 ] [1,9] [1,9]间整数,而其余字母都是 [ 0 , 9 ] [0,9] [0,9]间整数(注:从这可以看出2.1题0.的思想),且各个字母互不相同(注:这可以称为一条alldifferent约束)。且:
    1000 S + 100 E + 10 N + D + 1000 M + 100 O + 10 R + E = 10000 M + 1000 O + 100 N + 10 E + Y 1000S+100E+10N+D+1000M+100O+10R+E=10000M+1000O+100N+10E+Y 1000S+100E+10N+D+1000M+100O+10R+E=10000M+1000O+100N+10E+Y.
    注:也可以考虑“进位”,即 D + E = 10 C 1 + Y , N + R + C 1 = 10 C 2 + E D+E=10C_1+Y,N+R+C_1=10C_2+E D+E=10C1+Y,N+R+C1=10C2+E等等。其中 C i ∈ { 0 , 1 } C_i\in\{0,1\} Ci{ 0,1}.
  2. Q: 如何理解 x − y ≤ 10 − 11 z x , y x-y\le 10-11z_{x,y} xy1011zx,y中的数字 10 , 11 10,11 10,11
    A: 对于 x − y x-y xy有界的情况,想表达 x ≠ y x\ne y x=y(也就是 x < y ∨ x > y x<y\vee x>y x<yx>y)可以引入取值为 { 0 , 1 } \{0,1\} { 0,1}的辅助变量 z x , y z_{x,y} zx,y.
    对于 x − y ≤ 10 − 11 z x , y x-y\le 10-11z_{x,y} xy1011zx,y,当 z x , y z_{x,y} zx,y取1时变为 x < y x<y x<y,否则相当于没有额外约束(因为已知有界)。
    另一条也类似。
    可以看出,这里 x − y ≤ m − ( m + 1 ) z x , y , y − x ≤ ( m + 1 ) z x , y − 1 x-y\le m-(m+1)z_{x,y},y-x\le (m+1)z_{x,y}-1 xym(m+1)zx,y,yx(m+1)zx,y1中的 m m m理论上可以取任何大于等于10的整数。不过10可以限制得最严格,具有某种意义上“最佳”性。
  3. Q: 八皇后问题中直观中有16个所谓“自由度”,为什么可以用8个变量表示?
    A: 因为已知每列有且仅有一个皇后,因此可以用8个变量表示8个皇后依次所在的行。
    然而,这不能拓展到“8x8棋盘放7个皇后”等问题。实际上,从这里就折射出普遍和特殊的思想。特殊的representation可以提高效率,但其难以泛化。
  4. Q: x i − x j ≠ i − j x_i-x_j\ne i-j xixj=ij中依次出现字母 i , j , i , j i,j,i,j i,j,i,j,这是否和2.1题2.矛盾?
    A: 不矛盾。 i , j i,j i,j并不是变量, x i , x j x_i,x_j xi,xj才是。这样一来每条约束都是依次出现 ( x i , x j ) (x_i,x_j) (xi,xj)两个变量。
  5. Q: The Zebra Puzzle中,如果给5栋房子指定数字1到5,那么3号房主人是violinist怎么表达?如果指定数字1到5对应的characteristic不是房子的序号而是饮料种类(比如water指定为2,等等. 而非原来的“最左边房子指定为1,它右边的指定为2”,等等),该representation与前面相比有何异同之处?
    A: violinist=3
    在新的representation中,(不含有加减号的)等式的意义仍然类似。比如如果我们指定water对应2,那么violinist=2就表示小提琴家喝水,而mid=green的含义是“中间的房子是绿色的”
    然而,这样一来从左到右的5栋房子用5个变量表示,例如left, midleft, mid, midright, right,他们之间的度量和序结构消失了,这使得"to the right", "next to"等不方便表达。这实际上相当于该问题不再是on integers,而是on symbols.

2.3 Constraint satisfaction problems on reals

  1. Q: spreadsheet的例子让你有什么有关于编程“模式”(如约束式、命令式)的感想?
    A: 例:在一些特殊条件下(一般是非常简单的case)命令式程序可以很容易地与约束式程序相互转化。此处的例子中可以用命令式程序依次求解出 D 4 , D 5 , E 7 , E 8 D4,D5,E7,E8 D4,D5,E7,E8.
    但是比如说已知其它求 B 5 B5 B5,那就不能直接地把约束式转化成命令式。而公式中若出现条件判断,带条件判断的循环等,就反过来比较难把命令式转化成约束式。
  2. Q: 对于找多项式零点的问题,我们把原始CSP转化成什么,作为所谓“解”,来规避什么问题?
    A: 转化成等价的数个interval CSPs即
    ⟨ f ( x ) = 0 ; x ∈ [ l , r ] ⟩ \langle f(x)=0;x\in[l,r]\rangle f(x)=0;x[l,r],其中 x ∈ R ; l , r ∈ F x\in\mathbb R;l,r\in F xR;l,rF.
    F F F是计算机可表示的浮点数集,特别地,包括 ± ∞ \pm \infty ±.
    r − l r-l rl足够小,我们可以认为近似找到了解。
    规避问题:计算机能表示的实数是有限的,且方程未必有根式解。
    注:容易理解的是,如果理想中的一台计算机能表示无限个(所有的)实数,那么就肯定不需要interval CSPs. 另一方面,如果确保方程有根式解,那么其实也可以尝试用计算机精确表示解。虽然仍然只能表示有限个数,但是只要合理地设定一个足够大的集合,那么也是有可能在实际应用中足够的。因此这两个问题综合起来才是我们需要interval CSPs的原因。

猜你喜欢

转载自blog.csdn.net/tritone/article/details/120433268
今日推荐