1、约束满足问题 (CSP) Constraint Satisfaction Problems (CSP) (对于困难的决策,我们将推迟到它变得容易的时候再做决定) R&N: Chap. 5,我们想做些什么?,搜索技术通常按照一个任意的次序对可能进行选择,一般很少有效的信息能够帮助如何进行选择在许多问题中,状态的到达与进行选择的次序无关(“可交换”) ,即采取不同的次序进行选择也一样可以到达同一个状态那能否通过选定某种适合的选择次序能够更有效的解决这些问题呢?甚至可以避免进行选择?,约束传播 Constraint Propagation,将一个皇后放入到一个方格里 移去所有可能攻击到的方格,6 6
2、 5 55 5 6,5 5 5 5 5 6 7,Constraint Propagation,计算每一行、每一列不会受到攻击的方格数 将一个皇后放置在有着最小数目的行或列上 再次移去可能受到攻击的所有方格,3 443 3 5,4 3 3 3 4 5,重复前述过程,Constraint Propagation,432 3 4,3 3 3 4 3,Constraint Propagation,422 1 3,3 3 3 1,Constraint Propagation,221,2 2 1,Constraint Propagation,Constraint Propagation,21,1 2,Co
3、nstraint Propagation,1,1,Constraint Propagation,我们需要些什么?,后继函数与目标测试还需要: 通过约束传播( propagate the constraints )信息,比如通过对一个皇后位置的约束来影响其他皇后的位置 提前的失败测试(failure test)约束的清晰表示约束传播算法,约束满足问题 (CSP) Constraint Satisfaction Problem (CSP),变量的集合 variables X1, X2, , Xn 每一个变量Xi所有可能的取值,构成该变量的值域Di;通常Di是有限的 约束的集合 constraint
4、s C1, C2, , Cp 每个约束描述了一个变量子集与特定的某些值合法的结合对应关系 目标: 每一个变量都得到了一个赋值,且所有的约束得到满足,地图着色问题,7 个变量 WA,NT,SA,Q,NSW,V,T每个变量的值域是一样的: red, green, blue两个相邻的变量不能取相同的值: WANT, WASA, NTSA, NTQ, SAQ, SANSW, SAV,QNSW, NSWV,8-皇后问题,8 个变量 Xi, i = 1 to 8每个变量的值域均为: 1,2,8约束表示为如下形式: Xi = k Xj k for all j = 1 to 8, ji 对角线也是相同的约束,
5、Street Puzzle(课本习题5.13),Ni = English, Spaniard, Japanese, Italian, Norwegian Ci = Red, Green, White, Yellow, Blue Di = Tea, Coffee, Milk, Fruit-juice, Water Ji = Painter, Sculptor, Diplomat, Violinist, Doctor Ai = Dog, Snails, Fox, Horse, Zebra,The Englishman lives in the Red house The Spaniard has
6、a Dog The Japanese is a Painter The Italian drinks Tea The Norwegian lives in the first house on the left The owner of the Green house drinks Coffee The Green house is on the right of the White house The Sculptor breeds Snails The Diplomat lives in the Yellow house The owner of the middle house drin
7、ks Milk The Norwegian lives next door to the Blue house The Violinist drinks Fruit juice The Fox is in the house next to the Doctors The Horse is next to the Diplomats,Who owns the Zebra? Who drinks Water?,Street Puzzle,Ni = English, Spaniard, Japanese, Italian, Norwegian Ci = Red, Green, White, Yel
8、low, Blue Di = Tea, Coffee, Milk, Fruit-juice, Water Ji = Painter, Sculptor, Diplomat, Violinist, Doctor Ai = Dog, Snails, Fox, Horse, Zebra,The Englishman lives in the Red house The Spaniard has a Dog The Japanese is a Painter The Italian drinks Tea The Norwegian lives in the first house on the lef
9、t The owner of the Green house drinks Coffee The Green house is on the right of the White house The Sculptor breeds Snails The Diplomat lives in the Yellow house The owner of the middle house drinks Milk The Norwegian lives next door to the Blue house The Violinist drinks Fruit juice The Fox is in t
10、he house next to the Doctors The Horse is next to the Diplomats,Street Puzzle,Ni = English, Spaniard, Japanese, Italian, Norwegian Ci = Red, Green, White, Yellow, Blue Di = Tea, Coffee, Milk, Fruit-juice, Water Ji = Painter, Sculptor, Diplomat, Violinist, Doctor Ai = Dog, Snails, Fox, Horse, Zebra,T
11、he Englishman lives in the Red house The Spaniard has a Dog The Japanese is a Painter The Italian drinks Tea The Norwegian lives in the first house on the left The owner of the Green house drinks Coffee The Green house is on the right of the White house The Sculptor breeds Snails The Diplomat lives
12、in the Yellow house The owner of the middle house drinks Milk The Norwegian lives next door to the Blue house The Violinist drinks Fruit juice The Fox is in the house next to the Doctors The Horse is next to the Diplomats,(Ni = English) (Ci = Red),(Ni = Japanese) (Ji = Painter),(N1 = Norwegian),(Ci
13、= White) (Ci+1 = Green) (C5 White) (C1 Green),Street Puzzle,Ni = English, Spaniard, Japanese, Italian, Norwegian Ci = Red, Green, White, Yellow, Blue Di = Tea, Coffee, Milk, Fruit-juice, Water Ji = Painter, Sculptor, Diplomat, Violinist, Doctor Ai = Dog, Snails, Fox, Horse, Zebra,The Englishman live
14、s in the Red house The Spaniard has a Dog The Japanese is a Painter The Italian drinks Tea The Norwegian lives in the first house on the left The owner of the Green house drinks Coffee The Green house is on the right of the White house The Sculptor breeds Snails The Diplomat lives in the Yellow hous
15、e The owner of the middle house drinks Milk The Norwegian lives next door to the Blue house The Violinist drinks Fruit juice The Fox is in the house next to the Doctors The Horse is next to the Diplomats,(Ni = English) (Ci = Red),(Ni = Japanese) (Ji = Painter),(N1 = Norwegian),(Ci = White) (Ci+1 = G
16、reen) (C5 White) (C1 Green),一元(unary)约束,Street Puzzle,Ni = English, Spaniard, Japanese, Italian, Norwegian Ci = Red, Green, White, Yellow, Blue Di = Tea, Coffee, Milk, Fruit-juice, Water Ji = Painter, Sculptor, Diplomat, Violinist, Doctor Ai = Dog, Snails, Fox, Horse, Zebra,The Englishman lives in t
17、he Red house The Spaniard has a Dog The Japanese is a Painter The Italian drinks Tea The Norwegian lives in the first house on the left N1 = Norwegian The owner of the Green house drinks Coffee The Green house is on the right of the White house The Sculptor breeds Snails The Diplomat lives in the Ye
18、llow house The owner of the middle house drinks Milk D3 = Milk The Norwegian lives next door to the Blue house The Violinist drinks Fruit juice The Fox is in the house next to the Doctors The Horse is next to the Diplomats,Street Puzzle,Ni = English, Spaniard, Japanese, Italian, Norwegian Ci = Red,
19、Green, White, Yellow, Blue Di = Tea, Coffee, Milk, Fruit-juice, Water Ji = Painter, Sculptor, Diplomat, Violinist, Doctor Ai = Dog, Snails, Fox, Horse, Zebra,The Englishman lives in the Red house C1 Red The Spaniard has a Dog A1 Dog The Japanese is a Painter The Italian drinks Tea The Norwegian live
20、s in the first house on the left N1 = Norwegian The owner of the Green house drinks Coffee The Green house is on the right of the White house The Sculptor breeds Snails The Diplomat lives in the Yellow house The owner of the middle house drinks Milk D3 = Milk The Norwegian lives next door to the Blu
21、e house The Violinist drinks Fruit juice J3 Violinist The Fox is in the house next to the Doctors The Horse is next to the Diplomats,有限CSP vs. 无限CSP Finite vs. Infinite CSP,有限CSP : 每个变量的值域有有限个值 无限CSP : 一些或所有的变量的值域是无限的 E.g., 实数线性规划:本课程只讨论有限CSP,CSP 描述为搜索问题,n个变量 X1, ., Xn 合法赋值 : Xi1 vi1, ., Xik vik, 0
22、k n, 即取值vi1, ., vik满足所有与变量Xi1, ., Xik有关的约束 完全赋值: k由0到n,每个变量都得到了赋值 变量值域大小为d, 则有O(dn) 种完全赋值 状态: 合法赋值 初始状态: 空赋值 , 即 k = 0,也就是还没有变量得到赋值 状态的后继: Xi1vi1, ., Xikvik Xi1vi1, ., Xikvik, Xik+1vik+1 目标测试: k = n,即n个变量都得到了赋值,4 变量 X1, ., X4 令节点N的合法赋值为: A = X1 v1, X3 v3 以为变量X4取值为例 令X4 的值域为 v4,1, v4,2, v4,3 A的后继为以下赋
23、值中的合法赋值:X1 v1, X3 v3 , X4 v4,1 X1 v1, X3 v3 , X4 v4,2 X1 v1, X3 v3 , X4 v4,3 ,回溯搜索 Backtracking Search,本质即使用递归的简化深度优先算法,回溯搜索 (3 变量),赋值 Assignment = ,赋值 Assignment = (X1,v11),X1,v11,回溯搜索 (3 变量),赋值 Assignment = (X1,v11), (X3,v31),X1,v11,v31,X3,回溯搜索 (3 变量),赋值 Assignment = (X1,v11), (X3,v31),X1,v11,v31,
24、X3,X2,假设没有一个X2的取值能构成合法赋值,回溯搜索 (3 变量),赋值 Assignment = (X1,v11), (X3,v32),X1,v11,X3,v32,v31,X2,回溯搜索 (3 变量),赋值 Assignment = (X1,v11), (X3,v32),X1,v11,X3,v32,X2,假设仍然没有一个X2的取值能构成合法赋值,搜索算法回溯到前一个变量(X3)并尝试另外的赋值。但假设X3只有两个可能的取值。于是算法回溯到X1,v31,X2,回溯搜索 (3 变量),赋值 Assignment = (X1,v12),X1,v11,X3,v32,X2,v31,X2,v12,
25、回溯搜索 (3 变量),Assignment = (X1,v12), (X2,v21),X1,v11,X3,v32,X2,v31,X2,v12,v21,X2,回溯搜索 (3 变量),Assignment = (X1,v12), (X2,v21),X1,v11,X3,v32,X2,v31,X2,v12,v21,X2,回溯搜索 (3 变量),Assignment = (X1,v12), (X2,v21), (X3,v32),X1,v11,X3,v32,X2,v31,X2,v12,v21,X2,v32,X3,回溯搜索 (3 变量),Assignment = (X1,v12), (X2,v21), (
26、X3,v32),X1,v11,X3,v32,X2,v31,X2,v12,v21,X2,v32,X3,算法不需要考虑那些在其它 子树中次序一样的X3赋值,回溯搜索 (3 变量),Assignment = (X1,v12), (X2,v21), (X3,v32),X1,v11,X3,v32,X2,v31,X2,v12,v21,X2,v32,X3,由于只有三个变量,因此 赋值已完全,回溯搜索 (3 变量),回溯算法 Backtracking Algorithm,CSP-BACKTRACKING(A) If assignment A is complete then return A X select
27、 a variable not in A D select an ordering on the domain of X For each value v in D do Add (Xv) to A If A is valid then result CSP-BACKTRACKING(A) If result failure then return result Return failureCall CSP-BACKTRACKING(),该递归算法会保存太多的数据到内存中,用迭代改进将会节省许多内存, 感兴趣的同学可以进一步思考。,地图着色问题 Map Coloring,CSP回溯效率的关键问
28、题,CSP-BACKTRACKING(A) If assignment A is complete then return A X select a variable not in A D select an ordering on the domain of X For each value v in D do Add (Xv) to A If a is valid then result CSP-BACKTRACKING(A) If result failure then return result Return failure,下一个将选择哪一个变量来赋值? The current as
29、signment may not lead to any solution, but the algorithm still does know it. Selecting the right variable to which to assign a value may help discover the contradiction more quickly变量X的(多个)值应该按一个什么样的次序进行赋值? The current assignment may be part of a solution. Selecting the right value to assign to X ma
30、y help discover this solution more quicklyMore on these questions in a short while .,CSP回溯效率的关键问题,下一个将选择哪一个变量来赋值? 当前的赋值不一定就能得到问题的解,正确的选择一个变量将有助于更快的发现约束关系变量X的(多个)值应该按一个什么样的次序进行赋值? The current assignment may be part of a solution. Selecting the right value to assign to X may help discover this solutio
31、n more quicklyMore on these questions in a short while .,CSP回溯效率的关键问题,下一个将选择哪一个变量来赋值? 当前的赋值不一定就能得到问题的解,正确的选择一个变量将有助于更快的发现约束关系变量X的(多个)值应该按一个什么样的次序进行赋值? 当前的赋值可能会是解的一部分,正确的选择一个值赋给X将有助于更快的找到解More on these questions in a short while .,CSP回溯效率的关键问题,下一个将选择哪一个变量来赋值? 当前的赋值不一定就能得到问题的解,正确的选择一个变量将有助于更快的发现约束关系变量
32、X的(多个)值应该按一个什么样的次序进行赋值? 当前的赋值可能会是解的一部分,正确的选择一个值赋给X将有助于更快的找到解 有关问题将很快得到解答,CSP回溯效率的关键问题,前向检验 Forward Checking,把值5赋给X1导致变量X2, X3, ., X8 的值域减小(值域中的一些值被移去),一种简单的约束传播技术 :,地图着色问题的前向检验,地图着色问题的前向检验,地图着色问题的前向检验,地图着色问题的前向检验,空集:当前的赋值 (WA R), (Q G), (V B) 无法得到(构成)问题的解,地图着色问题的前向检验,前向检验 (通用形式),一旦一对变量和值(Xv)加入到赋值A ,
33、则 do:对于每个A之外的变量 do:对每一个与联系Y和A中的变量的约束C do: 将所有不满足C的值从Y的值域中移去,回溯算法修改,CSP-BACKTRACKING(A, var-domains) If assignment A is complete then return A X select a variable not in A D select an ordering on the domain of X For each value v in D do Add (Xv) to A var-domains forward checking(var-domains, X, v, A)
34、 If a variable has an empty domain then return failure result CSP-BACKTRACKING(A, var-domains) If result failure then return result Return failure,CSP-BACKTRACKING(A, var-domains) If assignment A is complete then return A X select a variable not in A D select an ordering on the domain of X For each
35、value v in D do Add (Xv) to A var-domains forward checking(var-domains, X, v, A) If a variable has an empty domain then return failure result CSP-BACKTRACKING(A, var-domains) If result failure then return result Return failure,不再需要校验A是否合法,回溯算法修改,CSP-BACKTRACKING(A, var-domains) If assignment A is co
36、mplete then return A X select a variable not in A D select an ordering on the domain of X For each value v in D do Add (Xv) to A var-domains forward checking(var-domains, X, v, A) If a variable has an empty domain then return failure result CSP-BACKTRACKING(A, var-domains) If result failure then ret
37、urn result Return failure,需要传递更新后的变量值域,回溯算法修改,CSP-BACKTRACKING(A, var-domains) If assignment A is complete then return A X select a variable not in A D select an ordering on the domain of X For each value v in D do Add (Xv) to A var-domains forward checking(var-domains, X, v, A) If a variable has an
38、 empty domain then return failure result CSP-BACKTRACKING(A, var-domains) If result failure then return result Return failure,回溯算法修改,下一个将选择哪一个变量来赋值? 最多约束变量启发式 Most-constrained-variable heuristic 最多约束变量启发式 Most-constrained-variable heuristic 对该变量的赋值应该按照什么次序进行尝试? 最少约束值启发式 Least-constraining-value heur
39、istic,以上启发式规则容易使人困惑记住所有的变量最终都将得到一个赋值,然而值域中仅有一个值必须赋给变量,最多约束变量启发式,下一个将选择哪一个变量来赋值?选择具有最少剩余值的变量基本原理: 将分支因子最小化,8-Queens,4 3 2 3 4,前向检验,8-Queens,4 2 1 3,前向检验,Map Coloring,SA的剩余值域大小为1(剩余值Blue) Q的剩余值域大小为2 NSW, V 和 T的剩余值域大小为3 选择 SA,最多约束变量启发式,下一个将选择哪一个变量来赋值?在同样拥有最小剩余值域的多个变量(即受到的约束最多)中,选择其中受到其他未赋值变量的约束个数最多的变量基
40、本原理: 增加未来移去值的数量,以减少未来的分支因子,Map Coloring,在未进行任何赋值之前,所有变量的值域大小均为3,但SA陷入的约束个数(5)比其他变量多 选择SA并对其进行赋值(如 Blue),最少约束值启发式,对选定变量的赋值应该按照什么次序进行?选择X的一个值首先对X进行赋值,该值将最少的移去当前赋值之外的变量值域的值基本原理: 由于仅有一个值最终会赋给X ,应首先选取最少约束的值,因为该值看起来最不可能导致非法的赋值说明: 需要对所有的值采用启发式进行前向检验,而不仅是针对已选的值,Map Coloring,Q的值域还剩余两个值: Blue and Red 把Blue赋给Q
41、 ,则导致SA剩余0个值,而赋Red则剩余1个值,Blue,Map Coloring,Q的值域还剩余两个值: Blue and Red 把Blue赋给Q ,则导致SA剩余0个值,而赋Red则剩余1个值,Modified Backtracking Algorithm,CSP-BACKTRACKING(A, var-domains) If assignment A is complete then return A X select a variable not in A D select an ordering on the domain of X For each value v in D d
42、o Add (Xv) to A var-domains forward checking(var-domains, X, v, A) If a variable has an empty domain then return failure result CSP-BACKTRACKING(A, var-domains) If result failure then return result Return failure,1) Most-constrained-variable heuristic 2) Most-constraining-variable heuristic3) Least-
43、constraining-value heuristic,Applications of CSP,CSP techniques are widely used Applications include: Crew assignments to flights Management of transportation fleet Flight/rail schedules Job shop scheduling Task scheduling in port operations Design, including spatial layout design Radiosurgical proc
44、edures,Radiosurgery,Tumor = bad,Brain = good,Critical structures = good and sensitive,Minimally invasive procedure that uses a beam of radiation as an ablative surgical instrument to destroy tumors,The CyberKnife,linear accelerator,robot arm,X-Ray cameras,Inputs,1) Regions of interest,Inputs,2) Dose constraints,Dose to tumor,Falloff of dose around tumor,Falloff of dose in critical structure,Dose to critical structure,Beam Sampling,Constraints,Case Results,50% Isodose Surface,80% Isodose Surface,