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\)直接计算\(o_1,o_2\),还可能\(i_3=0,o_2=1\)推出\(i_1=i_2=1,o_1=0\)等。

  1. Q: \(k\)元谓词one的析取范式是什么?
    A: \((\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)\)
  2. Q: 用boolean CSP处理八皇后问题时,有多少条形如\(\sim(x_{i,j}\wedge x_{k,l})\)的约束用来表示“对角线”方向?
    A: 特别注意\(i\ne k\).
    \(2\cdot(2C_2^2+2C_3^2+\cdots+2C_7^2+C_8^2)\)

2.5 Symbolic constraint satisfaction problems

  1. Q: 解说\(C_{1,2}=\{(HOSES,SAILS),\cdots,(LASER,STEER)\}\)的来源和含义。
    A: \(x_i\)表示i打头的行或列填什么单词。每个单词在这里是一个symbol.
    \(x_1\)\(x_2\)构成的有序二元组满足\(x_1\)的第三个字母是\(x_2\)的首字母,枚举得到一个元素个数为6的集合,是\(D_1\times D_2\)的子集。这就是约束\(C_{1,2}\).
    注:把单词而不是字母当成symbol,因此才需要枚举。否则直接形式化的说“\(x_1\)的第三个字母是\(x_2\)的首字母”并不需要枚举。
  2. Q: 尝试按一定的章法分类13种temporal relations. 并解释13这个数的来源。
    A: 举例:设\(A\)事件持续区间\([-1,1]\),则\(-2,-1,0,1,2\)共5个整数共\(C_5^2\)种可能。再加上before, after, during三种不在\(C_5^2\)中的。
    注:以上的\(A\)事件只有两个所谓的“关键时间点”,即开始和结束。照这样计算,一个有\(n\)个关键时间点的事件与一个有2个关键时间点的事件间的关系有\(C_{2n+1}^2+n+1\)种可能性。
    思考:有\(n\)个和有\(m\)个之间呢?
    再举例(另一种分类方式):\(3*3=9\)\(REAL-OVERLAP\)(参见课本),即起点的前或中或后至终点的前或中或后。剩下\(2*2=4\)种,对应两种meet的(紧挨着)和两种完全分开的。
  3. Q: 书中对Qualitative Temporal Reasoning的第一种表示,缺点是“无限”,不方便求解。那它有什么好处呢?
    A: 这还是通用和专用的trade-off问题。显然第一种表示更加通用,拓展性强。比如容易拓展至有大于2个“关键时刻”的事件,可以显式表示\(a_{start}<b_{start}\)这类约束等等。第二种表示更加专用。符合条件时,用专用的表示效率更高。
  4. Q: \(C_{i,j,k}=T_3\cap(D_{i,j}\times D_{i,k}\times D_{j,k})\)是什么意思?
    A: 每一条约束都针对某事件三元组。注意此处每个\(x_{i,j}\)定义域并不是整个\(TEMP\),而是其子集\(D_{i,j}\),这其实本质上也是一条约束。
    \(T_3\)是一个可以事先枚举的集合,其与\(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的第二种表示中,\(arrow(FE,FG,FB)\)约束也是有序的。
  7. Q: Analysis of Polyhedral Scenes的两种表示分别对应什么样的数据结构?
    A: 第一种:以点为图的节点,以边为图的(有向)边,以符号为“权”的有向图。
    第二种:以边为超图的节点(两个方向如\(AB,BA\)的两条边为两个节点),以点或“反向”关系为超图的(有序)超边,以节点种类或“反向”关系\(edge\)为“权”的有序超图。

2.6 Constrained optimization problems

  1. Q: 叙述背包问题的约束和objective function
    A: 约束:\(\sum a_i x_i\le v\),其中\(a_i\)是“重量”。目标函数:\(\sum b_ix_i\),其中\(b_i\)是“价值”。
  2. Q: 为什么硬币问题中要引入600个变量?
    A: 本质是用枚举把\(\forall i \exists x_j\)中的存在量词(不好求解)转化成实实在在存在的594个变量。虽然变量数量多了,但是容易求解。
    参考名词:“构造性数学”
  3. Q: Golomb Ruler问题中,\(x_j-x_i\ne x_l-x_k\) for all different pairs \((i,j)\) and \((k,l)\)有什么冗余?为什么?
    A: 由于已经有\(x_i<x_{i+1},\forall i\in\{1,\cdots, m-1\}\),因此只需考虑disjoint pairs,即\(i\ne k,j\ne l\).
    其实课本的“人工预剪枝”还有点太保守了,完全可以进一步剪去\(i<k<l<j\)这类情况(和对称的另一种)。