未校对

7 Constraint propagation algorithms

  1. Q: 举例说明“Sometimes a CSP can already be solved solely by means of a constraint propagation algorithm”.
    A: 对于具体例子有unifier问题,线性方程组等。
    更抽象的有关于有向图“归纳”造instantiation的定理等。
  2. Q: 在propagation过程中,我们需要关注stabilizing结果的存在性(“收敛性”),唯一性,以及()。
    A: 算法的效率(“收敛速度”)(即:减少redundant/irrelevant applications)

7.1 Generic iteration algorithms

7.1.1

  1. Q: 为什么用偏序关系作为考察迭代的框架?
    A: 迭代形成链,链内部往往有一定序关系,可证明收敛性等。
    要有序关系,但不同链之间往往难以排成全序(如,对于笛卡尔积,定义:\(a\)逐元素都先于\(b\)\(a\)才先于\(b\)),所以用偏序。
  2. Q: 为了证明一族有限个单调函数对于有最小元的偏序集的least common fixed point(最小公共不动点)可以由()得到,只需归纳利用单调性。
    这里的least是在偏序关系中的最小,定义是(),单调也是在偏序关系中的单调,定义是()。
    A: 对偏序集\(D\)最小元素\(\perp\)任意应用若干次\(f_{n_i}\)直至找到不动点
    \(d\sqsubseteq e,\forall e\in D\)\(d\)为最小元(“小于等于”一切元)
    \(f(d)\sqsubseteq f(e),\forall d\sqsubseteq e\)\(f\)为单调函数
    注:这里的单调性是非常强的性质,它保证了应用后两个函数结果仍可以比较!这就在某种程度上绕过了考察偏序集的一些困难,从而导出了此命题。
  3. Q: 接上,保持单调,再加入()和可交换条件,则可显式写出最小公共不动点为()。
    A: 幂等(idempotent),\(f_1\cdots f_k(\perp)\)(当然,此处可任意交换函数复合的顺序)
    注:可以看到幂等在此起了核心作用。看起来像是能“吸收”任何新复合进来的。
  4. Q: Semi-commutativity即“推入下标大的函数,结果变大”时,除了幂等和单调再加入()条件才能推出和2.类似的结论,因为()
    结论(不是问条件)与2.不同的点是()
    A: inflationary(\(x\sqsubseteq f(x)\)
    从外往内交换越交换越大(而不是相等) 这只有一个方向 还需要inflationary给出另一个方向
    最小公共不动点必须是\(f_1f_2\cdots f_k (\perp)\),不能用其它顺序去复合函数
  5. Q: 类似于单调有界必有极限的思想,对于有限偏序集,考察()(当然,单调等条件继承1.)的有限函数集合,不断迭代后一定能找到不动点。
    如果想加强结论,使得这不动点确实是公共不动点从而套用1.,可以加入()条件。
    A: inflationary
    regular(即如果\(f(d_m)\ne d_m\)则在\(step>m\)之后\(f\)至少被迭代过程使用了一次)

7.1.2

  1. Q: 考察计算最小公共不动点的算法。之前有关交换性的结论对应()的做法,()对应依次应用各个函数的做法。
    而regular条件对应()的做法。
    A: 任意顺序应用所有函数
    有关半交换性的结论
    不断尝试应用函数,如果应用某个函数\(g\)导致\(f\)\(f(d)=d\)变成\(fg(d)\ne g(d)\)了,就照顾regular条件而将\(f\)添加进待考察集合\(G\). (如果不产生这种效果即可直接删除\(g\))当\(G\)空了就说明迭代完成。
  2. Q: 接上,关于“regular”的算法处,为什么我们要添加“多余”的函数进入\(G\)
    A: 精确计算哪些函数要添加可能花费过大。
  3. Q: 接上,“字典序”和“循环不变量”等证明算法正确性的用法此处是具体如何使用的?
    A: 某量在循环中单调且“有界”或说有限("well-foundedness",没有无穷递降序列),就可确定最终一定“停在某个值”(“极限”)。
    比如此处按字典序\((d,cardG)\),可以论证\(d\)最后停留在某一不动点。
    “循环不变量”:谓词\(\forall f\in F-G, f(d)=d\)是循环不变量,所以最终“极限”\(d\)确实是公共不动点。

7.1.3

  1. Q: 解说记号\((\perp_1,\cdots,\perp_n)\).
    A: Cartesian product of the partial orderings中,每个分量都是最小元,则总体也是笛卡尔积的最小元。
  2. Q: 为什么要考虑函数“是否依赖于某个变量”(即:该变量的改变是否可能影响函数值)的性质?
    A: 可以快速检测\(g(d)=d\)是否成立(这显然等价于对于\(g\)的"scheme",\(g(d[s]) = d[s]\)
    可以快速检测\(f(g(d))=f(d)\)是否成立(这显然等价于\(f\)依赖于某个\(i\),使得\(d[i]\ne g(d[i])\)
    就不需要依次检测每个变量,多了很多无谓比较。
    注:这里两次用到\(g(d)\),显然应该新引入变量\(d'\)存储\(g(d)\),而不要重复计算。

7.2 From partial orderings to CSPs

  1. Q: 对于CSP问题,偏序集(分量)元素,公共不动点,函数,单调分别具体指什么?
    A: 偏序集(每个分量)的元素是:定义域的子集或约束的子集(一元关系或多元关系),各个集合(关系)之间以“包含于”关系形成偏序
    公共不动点:满足local consistency(无法再剪枝)
    函数:“剪枝规则”
    单调:剪枝规则“保持包含于关系”
  2. Q: 最小元指的是空集嘛?
    A: 如果按本书的偏序集不动点算法记号,则不是。是全集。

7.3 - 7.6

  1. Q: 对于node consistency,我们使用“交换性对应的算法”“半交换性对应的算法”还是“regularity对应的算法”?
    A: 交换性对应的算法(因为node consistency的剪枝过程有交换性)。即以任意顺序应用一遍。
  2. Q: 对于arc consistency,我们使用哪种算法?
    A: 没有交换性或半交换性。只能对有限情况,使用regular对应的算法。
  3. Q: 为什么有向的arc consistency就有了半交换性?
    A: 假设总是拿编号大变量去剪编号小变量的定义域。
    那么只有“拿3剪2,再拿2剪1”这样的结构会让1额外被多剪。

7.7 - 7.8

  1. Q: 对无向path consistency使用算法时,考察的函数集合是什么?
    A: 对于每个三元组\(x,y,z\),都有3个函数(3条规则)
  2. Q: 如何理解"Note that in contrast to the Arc Algorithm Theorem we do not need to assume that the CSP is finite, but only that its binary constraints are finite."
    A: 此处偏序集的元素是二元关系,而不是定义域。所以不要求定义域有限,而是二元关系有限。
  3. Q: 对于有向情况,如何理解\(V_{x,y}\)里只有5类元素,缺了一类?这个有向指的是dirctional path consistency嘛?
    A: 确定剪了\((x,y)\)的二元关系,考察它可能影响的函数(关于\(x,y,u\)的函数)
    \(x,u\)先后顺序不确定,\(y,u\)也不确定,所以各自对应了两类函数(即\(f^y_{x,u},f^y_{u,x},f^x_{u,y},f^x_{y,u}\).
    \(x,y\)先后顺序确定,故只对应一类函数\(f_{x,y}^u\)
    这里的有向只是讨论\(x,y,u\)间关系。即实际操作中哪些转置哪些不转置。
    “consistency”仍然是无向path consistency的定义,即剪每个二元约束,并不是像directional path consistency一样只剪“靠前”的二元约束。
  4. Q: 接上,directional path consistency可以带来()性。待考察的函数集合是()
    A: 半交换
    把一共\(C_n^3\)个函数排列成“四面体”,即“越来越小的一系列三角形”。前面是剪编号小的(依据编号大的)。即第一个是\(f_{x_1,x_2}^{x_n}\).
    这样一来,所有非交换的情况肯定都是先应用后面的函数(先剪了编号大的,从而使得应用靠前函数依据编号大剪编号小受到影响)

7.9

  1. Q: k-consistency的不充要对构造算法有影响嘛?
    A: 这个不充要性是“规则下封闭”不等价于“local consistency”。前者可以推出后者。而我们本章就是得到函数不动点(规则封闭),能推出local consistency. 所以不影响。
  2. Q: 为什么额外引入\(\frac {C_X}{C_X\cap \bar {C_X}}\)规则对应的那些函数?
    A: 提升算法实际运行的效率,但不改变等价性。

7.11

  1. Q: 对于“同类”算法,规则集直接取并就可以保证算法收敛结果能()
    A: 同时满足多种local consistency
  2. Q: 解说“This vast repertoire of operations is sufficient to describe the domain reduction rules that we considered so far”
    A: 通过证明基本操作具有性质,操作间复合保持性质,构造出一系列满足性质的操作。
    类似于“原始递归函数”等的思想。
    具体地,思想类似于\(f(a)<f(b),g(a)<g(b),h(a_1,a_2)<h(b_1,b_2),h(f(a),g(a))<h(f(b),g(b))\)(其中所有涉及字母a的都小于对应的涉及字母b的)
  3. Q: 解说前述某些算法的不确定性。
    A: 某些“算法”的“select”等步不确定,所以并不是狭义定义下的算法。
    实际运行中,根据数据结构不同(队列?哈希?),将具体地schedule它们(具体实现不同,效率和稳定性等可能不同)。
  4. Q: (为了效率)使用本章的算法一定要得到local consistent CSP嘛?
    A: 不一定。比如中途fail直接停止。fail的那一刻不一定local consistent.
    (但实际上你可以做一些多余的动作,比如对arc consistency,直接剪到全空,则trivially arc consistent了)