- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
3.4.1 与或树盲目搜索
一般搜索过程 广度优先搜索 深度优先搜索 举例
18
或图的一般搜索过程 与/或图的 或图的
• 对于一个”与”节点,只有当其子节点全部为可解节点时 对于一个” 只有当其子节点全部为可解节点时, 节点 只有当其子节点全部为可解节点时 它才为可解节点,只要子节点 只要子节点中有一个为不可解节点,它就 它才为可解节点 只要子节点 是不可解节点; • 对于一个”或”节点 只要子节点中有一个是可解节点时 对于一个” 节点,只要子节点中有一个是可解节点时 只要子节点中有一个是可解节点时, 它就是可解节点,只有当全部都是 只有当全部都是不可解节点时,它才是不 它就是可解节点 只有当全部都是 可解节点. • 像这样由可解子节点来确定父节点、祖父节点等为可解节 可解子节点来确定父节点、 可解子节点来确定父节点 点的过程为可解标示过程 可解标示过程; 点的过程为可解标示过程;由不可解子节点来确定其父节 祖父节点等为不可解节点的过程为不可解标示过程 不可解标示过程; 点、祖父节点等为不可解节点的过程为不可解标示过程; • 在与/或树的搜索过程中将反复使用这两个过程,直到初 始节点(即原始问题)被标示为可解或不可解节点为止.
3.4 与或树搜索(问题归约法)
3.4.1 3.4.2 3.4.3
与或树的表示 与或树搜索 启发式与或树搜索
1
问题的与或图表示
在现实世界中,经常会遇到这样的问题: 在现实世界中,经常会遇到这样的问题:一 个问题可以有几种求解方法, 个问题可以有几种求解方法,只要其中一种方法 可以求解问题,则该问题被求解。也就是说, 可以求解问题,则该问题被求解。也就是说,对 求解该问题来说,方法之间是"或 的关系 的关系。 求解该问题来说,方法之间是 或"的关系。但在 用每一种方法求解时, 用每一种方法求解时,又可能需要求解几个子问 这些子问题必须全部求解, 题,这些子问题必须全部求解,才可能用该方法 求解原始问题。也就是说,这些子问题之间是"与 求解原始问题。也就是说,这些子问题之间是 与 "的关系。此类问题可以用与或图来表示。如下图 的关系。 的关系 此类问题可以用与或图来表示。 所示: 所示
(CBA) (1,1,1)(1,2,2) (1,2,2)(3,2,2) (3,2,2)(3,3,3) C B A
(1,1,1)
1,2,2
3,2,2
(3,3,3)
15
举例(三阶梵塔)
与或树表示
(1)把A、B盘从1号杆移到2号杆;
(1,1,1)=>(3,3,3)
(2)把C盘从1号杆移到3号杆; (3)把A、B盘从2号杆移到3号杆;
1 3 2 4 5 t1
3) 4)
t4
t3 t2 A
5)
此时,closed 表就是由节点1,2,3,4,5和t1,t2,t3,t4构成的解树,如图中粗线所示。
22
与/或树的深度优先搜索算法
1、把初始节点S0放入OPEN表; 2、移出为OPEN表的第一个节点N放入CLOSED表,并冠以序号n; 3 、如果节点N 的深度大于等于深度界限,则转第5部的第(1); 4、若节点N可扩展,则做下列工作:
11
可解性判别
1 3 2 4 B 5 t1
t4
t3 t2 A
12
可解性判别
S0
A D
B C 3 G L M 3 0 0 2 2 2 E 2 H F
2
2
13
例题
三阶梵塔
C B A
(1,1,1)
三元组
(i, j, k)
i 代表金盘C所在的杆号;j代表金盘B所在的 杆号;k代表金盘A所在的标号。
14
4
与节点
与
只有解决所有子 问题,才能解决其父辈 问题的节点集合。 与关系集合中,各 个结点之间用一端小圆 弧连接标记。称为k- 连接符 .
5
或节点
● 等价变换:利用同构或同态的等价变换,把它 变换为若干个较容易求解的新问题。若新问题中 有一个可求解,则就得到了原问题的解.
E B F
A
D
或
只要解决某个问 题就可解决其父辈问 题的节点集合。称为 1-连接符 .
目标 目标
9
其它几个概念与术语
1. 本原问题 本原问题:不能再分解或变换,而且直接可解的子问 题。 2. 终止结点 终止结点:本原问题对应的节点。(可解节点) 3. 端节点 在与或图(树)中无子节点的节点。 端节点: 4. 与节点:一个节点的子节点如果是“与”关系,称~ 与节点 5. 或节点 或节点:一个节点的子节点如果是“或”关系,称~
2
3
“分解 分解”和“等价变换 等价变换”概念 分解 等价变换
与/或树表示法:对于一个复杂的问题,可以通过“分解” 和“等价变换”两种手段相结合使用,得到一个图,这个 图就是与/或图。 ● 分解:把一个复杂问题分解为若干个较为简单的 子问题,每个子问题又可继续分解为若干个更为较为简单 的子问题,重复此过程,直到不需要再分解或不能解为止. 然后对每个子问题分别进行求解,最后把各子问题的解复 合起来就得到了原问题的解.
(1)扩展N,将其子节点配上指向父节点的指针后放入OPEN表的首部; (2)考察这些子节点中是否有终止节点。若有,则标记它们为可解节点,并 将它们也放入CLOSED表,然后由它们的可解返回推断其先辈节点的可解性, 并对其中的可解节点进行标记。如果初始节点也被标记为可解节点,则搜索 成功,结束。否则 (3)删去OPEN表中那些具有可解先辈的节点(因为其先辈节点已经可解,故已 无需再考察节点的必要),转步2;
25
解树的代价
解树的代价就是树根的代价。树根的代价是从树叶开始自 下而上逐层计算求得的。 计算方法: 设h(x)表示节点x的代价,c(x,y)表示节点x到其 子节点y的代价(即边xy的代价),则: (1)若x是终止节点,h(x)=0; (2) 若x是或节点, h(x)=min{c(x,yi)+h(yi)}(1≤ i≤ n) (3) 若x是与节点x,则有两种计算公式 h(x)=∑{c(x,yi)+h(yi)} 称为和代价法; h(x)=max{c(x,yi)+h(yi)}(1≤ i≤ n)称为最大代价法,其中 y1,y2 , y3 。。。。 yn是x的子节点。 (4)对非终止的端节点x, h(x)=∞
19
• 与或图搜索 与或图搜索:边扩展节点边确定初始节 点是否可解。一旦能够确定初始节点的 可解性,则搜索停止,并根据返回指针 从搜索树中得到一个解图(树)。
20
1、把初始节点S0放入OPEN表; 2、移出为OPEN表的第一个节点N放入CLOSED表,并冠以序号n; 3、若节点N可扩展,则做下列工作: (1)扩展N,将其子节点配上指向父节点的指针后放入OPEN表尾部; (2)考察这些子节点中是否有终止节点。若有,则标记它们为可解节 点,并将它们也放入CLOSED表,然后由它们的可解返回推断其先辈 节点的可解性,并对其中的可解节点进行标记。如果初始节点也被 标记为可解节点,则搜索成功,结束。否则 (3)删去OPEN表中那些具有可解先辈的节点(因为其先辈节点已经可 解,故已无需再考察节点的必要),转步2; 4、若N不可扩展,则做下列工作: (1)标记N为不可解节点,然后由它的不可解返回推断其先辈节点的 不可解性,并对其中的不可解节点进行标记。如果初始节点S0也被 标记为不可解节点,则搜索失败,表明原始问题无解,退出。否则 (2)删去OPEN表中那些具有不可解先辈的节点(因为其先辈节点已不 可解,故已无再考察这些节点的必要),转步2;
G I
6
上述两种方法也可以结合起来使用,此时的图称为” 或 上述两种方法也可以结合起来使用 此时的图称为”与/或” 此时的图称为 树.
7
Q
Q1
Q2
Q11
Q12
Q13
Q11’
Q12’
Q13’
Q21
Q22
Q23
Q21’
Q22’
Q23’
图中的弧线表示所连边为“与”关系,不带弧边的边为或关 系。
8
初始节点s a c b
(1,1,1)=>(1,2,2)
(1,2,2)=>(3,2,2)
(3,2,2)=>(3,3,3)
(1,1,1)=>(1,1,3)
(1,2,3)=>(1,2,2)
(3,2,1)=>(3,3,1)
(1,1,3)=>(1,2,3)
(3,2,2)=>Байду номын сангаас3,2,1)
(3,3,1)=>(3,3,3)
16
在三阶梵塔问题中,共有七个终止节点,对应于七个 本原问题,它们是通过“分解”得到的。 若把这些本原问题的解按从左至右的顺序排列,就得 了原始问题的解: (1,1,1)=>(1,1,3) (3,2,2)=>(3,2,1) (1,1,3)=>(1,2,3) (3,2,1)=>(3,3,1) (1,2,3)=>(1,2,2) (3,3,1)=>(3,3,3) (1,2,2)=>(3,2,2)
注意:终止节点一定是端节点,但端节点不一定是终 止节点。
10
可解节点: 6. 可解节点:节点须满足下列 条件之一: (1) 终止节点是可解节点; (2)一个与节点可解,当且仅当其子节点全都可解; (3)一个或节点可解,只要其子节点至少有一个可解; 7.不可解节点: 不可解节点: 不可解节点 关于可解节点的三个条件全部不满足的节点称为不可 解节点。 8.解树 解树: 解树 由可解节点所构成,并且由这些可解节点可推出初 始节点(它对应于原始问题)为可解节点的子树.
5、若N不可扩展,则做下列工作:
(1)标记N为不可解节点,然后由它的不可解返回推断其先辈节点的不可解 性,并对其中的不可解节点进行标记。如果初始节点S0也被标记为不可解节 点,则搜索失败,表明原始问题无解,退出。否则 (2)删去OPEN表中那些具有不可解先辈的节点(因为其先辈节点已不可解,故 已无再考察这些节点的必要),转步2;