约束式编程学习笔记[1] 布尔、符号类问题示例

2 Constraint satisfaction problems: examples

2.4 Boolean constraint satisfaction problems

  1. Q: 相比直接写出函数表达式,用CSP的思想在处理full adder时有什么好处?
    A:

draw in a systematic way more complex conclusions.

具体地,例如除了由 i 1 , i 2 , i 3 i_1,i_2,i_3 i1,i2,i3直接计算 o 1 , o 2 o_1,o_2 o1,o2,还可能 i 3 = 0 , o 2 = 1 i_3=0,o_2=1 i3=0,o2=1推出 i 1 = i 2 = 1 , o 1 = 0 i_1=i_2=1,o_1=0 i1=i2=1,o1=0等。

  1. Q: k k k元谓词one的析取范式是什么?
    A: ( ∼ s 1 ∧ ⋯ ∧ ∼ s k − 1 ∧ s k ) ∨ ( ∼ s 1 ∧ ⋯ ∧ s k − 1 ∧ ∼ s k ) ∨ ⋯ ∨ ( s 1 ∧ ⋯ ∧ ∼ s k − 1 ∧ ∼ s k ) (\sim s_1\wedge\cdots\wedge \sim s_{k-1}\wedge s_k)\vee(\sim s_1\wedge\cdots\wedge s_{k-1}\wedge \sim s_k)\vee\cdots \vee(s_1\wedge\cdots\wedge \sim s_{k-1}\wedge\sim s_k) (s1sk1sk)(s1sk1sk)(s1sk1sk)
  2. Q: 用boolean CSP处理八皇后问题时,有多少条形如 ∼ ( x i , j ∧ x k , l ) \sim(x_{i,j}\wedge x_{k,l}) (xi,jxk,l)的约束用来表示“对角线”方向?
    A: 特别注意 i ≠ k i\ne k i=k.
    2 ⋅ ( 2 C 2 2 + 2 C 3 2 + ⋯ + 2 C 7 2 + C 8 2 ) 2\cdot(2C_2^2+2C_3^2+\cdots+2C_7^2+C_8^2) 2(2C22+2C32++2C72+C82)

2.5 Symbolic constraint satisfaction problems

  1. Q: 解说 C 1 , 2 = { ( H O S E S , S A I L S ) , ⋯   , ( L A S E R , S T E E R ) } C_{1,2}=\{(HOSES,SAILS),\cdots,(LASER,STEER)\} C1,2={ (HOSES,SAILS),,(LASER,STEER)}的来源和含义。
    A: x i x_i xi表示i打头的行或列填什么单词。每个单词在这里是一个symbol.
    x 1 x_1 x1 x 2 x_2 x2构成的有序二元组满足 x 1 x_1 x1的第三个字母是 x 2 x_2 x2的首字母,枚举得到一个元素个数为6的集合,是 D 1 × D 2 D_1\times D_2 D1×D2的子集。这就是约束 C 1 , 2 C_{1,2} C1,2.
    注:把单词而不是字母当成symbol,因此才需要枚举。否则直接形式化的说“ x 1 x_1 x1的第三个字母是 x 2 x_2 x2的首字母”并不需要枚举。
  2. Q: 尝试按一定的章法分类13种temporal relations. 并解释13这个数的来源。
    A: 举例:设 A A A事件持续区间 [ − 1 , 1 ] [-1,1] [1,1],则 − 2 , − 1 , 0 , 1 , 2 -2,-1,0,1,2 2,1,0,1,2共5个整数共 C 5 2 C_5^2 C52种可能。再加上before, after, during三种不在 C 5 2 C_5^2 C52中的。
    注:以上的 A A A事件只有两个所谓的“关键时间点”,即开始和结束。照这样计算,一个有 n n n个关键时间点的事件与一个有2个关键时间点的事件间的关系有 C 2 n + 1 2 + n + 1 C_{2n+1}^2+n+1 C2n+12+n+1种可能性。
    思考:有 n n n个和有 m m m个之间呢?
    再举例(另一种分类方式): 3 ∗ 3 = 9 3*3=9 33=9 R E A L − O V E R L A P REAL-OVERLAP REALOVERLAP(参见课本),即起点的前或中或后至终点的前或中或后。剩下 2 ∗ 2 = 4 2*2=4 22=4种,对应两种meet的(紧挨着)和两种完全分开的。
  3. Q: 书中对Qualitative Temporal Reasoning的第一种表示,缺点是“无限”,不方便求解。那它有什么好处呢?
    A: 这还是通用和专用的trade-off问题。显然第一种表示更加通用,拓展性强。比如容易拓展至有大于2个“关键时刻”的事件,可以显式表示 a s t a r t < b s t a r t a_{start}<b_{start} astart<bstart这类约束等等。第二种表示更加专用。符合条件时,用专用的表示效率更高。
  4. Q: C i , j , k = T 3 ∩ ( D i , j × D i , k × D j , k ) C_{i,j,k}=T_3\cap(D_{i,j}\times D_{i,k}\times D_{j,k}) Ci,j,k=T3(Di,j×Di,k×Dj,k)是什么意思?
    A: 每一条约束都针对某事件三元组。注意此处每个 x i , j x_{i,j} xi,j定义域并不是整个 T E M P TEMP TEMP,而是其子集 D i , j D_{i,j} Di,j,这其实本质上也是一条约束。
    T 3 T_3 T3是一个可以事先枚举的集合,其与 i , j i,j i,j无关。
  5. Q: 你认为课本中的Qualitative spatial reasoning有什么缺陷?
    A: 举例:disjointmeet有区别,但overlap没有区分是否有公共边,分类标准“双标”不清。
    举例:假设了单连通。
  6. Q: Analysis of Polyhedral Scenes的第一种表示中,为什么arrow variable的domain中有 ( ← , → , + ) (\leftarrow, \rightarrow, +) (,,+)却没有 ( → , ← , + ) (\rightarrow, \leftarrow, +) (,,+)(没有对称性)?
    A: 首先,对于arrow形节点,以“中间”线为参考可以唯一定义“左”“中”“右”三边。其次,注意我们这里的边分方向, ← , → \leftarrow,\rightarrow ,可以分别表示相对于节点的两个方向(“出入”)。这样的分方向使得不对称性的产生有了可能。
    (对比:Y形节点有某种意义的“旋转”对称性)
    (对比:+或-边不具有方向)
    在此基础上,我们人为定义沿箭头走的右侧是物体,最终造成了不对称的产生。
    注:类似地,书中Analysis of Polyhedral Scenes的第二种表示中, a r r o w ( F E , F G , F B ) arrow(FE,FG,FB) arrow(FE,FG,FB)约束也是有序的。
  7. Q: Analysis of Polyhedral Scenes的两种表示分别对应什么样的数据结构?
    A: 第一种:以点为图的节点,以边为图的(有向)边,以符号为“权”的有向图。
    第二种:以边为超图的节点(两个方向如 A B , B A AB,BA AB,BA的两条边为两个节点),以点或“反向”关系为超图的(有序)超边,以节点种类或“反向”关系 e d g e edge edge为“权”的有序超图。

猜你喜欢

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