文章目录
2 Constraint satisfaction problems: examples
- 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.
此时需要适当选择表述,提高效率等。
- Q: 快速阅读章简介,说出本章行文中分类标准。
A:
the domains over which they are defined
integer, real, boolean, symbolic
之前的四类都是satisfaction问题,如果同时需要优化(最小或最大化)某个objective就是optimization问题. 后者也单独作为了本章一节。
2.1 Basic concepts
- 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可以看成指定“变元类型”,也可以看成一元谓词。
- 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)∣x∈Dx,y∈Dy,x<y}.
从根本上来说,syntax在原始定义中没有涉及,且不是必须的、本质的。 - 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
- 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}. - Q: 如何理解 x − y ≤ 10 − 11 z x , y x-y\le 10-11z_{x,y} x−y≤10−11zx,y中的数字 10 , 11 10,11 10,11?
A: 对于 x − y x-y x−y有界的情况,想表达 x ≠ y x\ne y x=y(也就是 x < y ∨ x > y x<y\vee x>y x<y∨x>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} x−y≤10−11zx,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 x−y≤m−(m+1)zx,y,y−x≤(m+1)zx,y−1中的 m m m理论上可以取任何大于等于10的整数。不过10可以限制得最严格,具有某种意义上“最佳”性。 - Q: 八皇后问题中直观中有16个所谓“自由度”,为什么可以用8个变量表示?
A: 因为已知每列有且仅有一个皇后,因此可以用8个变量表示8个皇后依次所在的行。
然而,这不能拓展到“8x8棋盘放7个皇后”等问题。实际上,从这里就折射出普遍和特殊的思想。特殊的representation可以提高效率,但其难以泛化。 - Q: x i − x j ≠ i − j x_i-x_j\ne i-j xi−xj=i−j中依次出现字母 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)两个变量。 - 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
- Q: spreadsheet的例子让你有什么有关于编程“模式”(如约束式、命令式)的感想?
A: 例:在一些特殊条件下(一般是非常简单的case)命令式程序可以很容易地与约束式程序相互转化。此处的例子中可以用命令式程序依次求解出 D 4 , D 5 , E 7 , E 8 D4,D5,E7,E8 D4,D5,E7,E8.
但是比如说已知其它求 B 5 B5 B5,那就不能直接地把约束式转化成命令式。而公式中若出现条件判断,带条件判断的循环等,就反过来比较难把命令式转化成约束式。 - 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 x∈R;l,r∈F.
F F F是计算机可表示的浮点数集,特别地,包括 ± ∞ \pm \infty ±∞.
当 r − l r-l r−l足够小,我们可以认为近似找到了解。
规避问题:计算机能表示的实数是有限的,且方程未必有根式解。
注:容易理解的是,如果理想中的一台计算机能表示无限个(所有的)实数,那么就肯定不需要interval CSPs. 另一方面,如果确保方程有根式解,那么其实也可以尝试用计算机精确表示解。虽然仍然只能表示有限个数,但是只要合理地设定一个足够大的集合,那么也是有可能在实际应用中足够的。因此这两个问题综合起来才是我们需要interval CSPs的原因。