- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
11 1 7 13
9 4 15 3 12 5 8 6 2 10 14
11 9 4 15 1 3 12 7 5 8 6 13 2 10 14
Hale Waihona Puke 11 1 7 139 15 3 4 12 5 8 6 2 10 14
11 1 7 13
9 3 5 2
4 15 12 8 6 10 14
11 1 7 13
9 4 15 3 8 12 5 6 2 10 14
9
2 另一个状态空间法描述的例子 假设房间里有一个人,一个箱子和一筐苹果。苹果 吊在天花板下方,人直接摘不到,需要站在箱子上才能 摘到苹果。如图所示
C
苹果
人 A
箱 B
10
(1) 状态:选择为(W,X,Y,Z) W——人所处在的水平面上的位置 X ——人所处的高度位置,在 地 面,X=0 在箱子上,X=1 Y——箱子所在的水平面上的位置 Z——是否摘到苹果的状态,=0,未摘到 =1,摘到
4
例如
假设初始状态为: 11 1 7 13 9 3 5 2 8 10 4 13 12 6 14
我们要求的目标状态为: 1 5 9 13 2 6 10 14 3 7 11 15
5
4 8 12
如何把初始状抬转换为目标状态 ——选择移动一个棋子。 每移动一次棋子,就会有一个新的状态,所有可能 的状态一起,就构成了该问题的状态空间。 解决该问题,就是尝试各种不同的走步,直到寻找 到达到目的状态的路径,到达目标状态为止。 从初始状态开始,尝试不同的走步,就构成了一个 有不同状态组成的图。
11 9 1 7 5 13 2
4 15 11 4 15 3 12 1 9 3 12 8 6 7 5 8 6 10 14 13 2 10 14
11 9 4 15 1 5 3 12 8 6 7 13 2 10 14
9 15 11 1 3 4 12 7 5 8 6 13 2 10 14
11 1 7 13
9 3 5 2
减少数据存储的一种方法是,给出某种实现状态转 换的走步策略,这样,我们只要给出了初始状态,策 略(也就是操作符F),就可以由初始状态或前一个状 态推出下一个状态,直到达到目标状态。而且这是使 用比较多的方法。 因此,要实现对某个问题的状态空间描述,需要: 确定状态描述方法,特别是初始状态的描述; 确定状态间联系的描述方法,较好的表示出不同状 态之间的联系,确定操作符集合及其对状态描述的作 用; 目标状态的描述。 我们来看一个例子
11 9 1 7 5 13 2
4 15 11 4 15 3 12 1 9 3 12 8 6 7 5 8 6 10 14 13 2 10 14
11 9 4 15 1 5 3 12 8 6 7 13 2 10 14
9 15 11 1 3 4 12 7 5 8 6 13 2 10 14
11 1 7 13
9 3 5 2
(111) → (333)
31
(111)→(113) 含义就是执行操作,将A移动到 柱子3上。
1 2 3 移动A到柱子3上 B C A
32
(113)→(123) 含义就是执行操作,将柱子1上 的圆盘B移动到柱子2上。
1 2 3 移动B到柱子2上
A C B
33
(1)将三圆盘问题分解为第二级的二圆盘问题,其 中包含一个一圆盘问题。只要解决了第二级的三个问 题,原来的问题就获得了解决。 (2)二圆盘问题就是将两个圆盘按规定的堆放顺序 堆叠在某一个柱子上。 二圆盘问题又可以再分解为第三级的一圆盘问题—— 将一个圆盘从原来的柱子上移动到另一个柱子上。这 个问题是简单的。 (3)只要解决了第三级的全部问题,则第二级的问 题也就得到了解决。 (4)只要解决了第二级的全部问题,最原始的问题 也就得到了解决。
11
(2) 句法规则 • 人走动规则——用goto(U) 描述的含义:人从原来水平位置走到新的水平 位置U,例如
(W , 0 , Y , 0 )
goto (U )
→ (U , 0 , Y , 0 )
状态为 (W,0,Y,Z) 表示人在水平位置W,处于地面, 箱子在位置Y,没摘到苹果。在goto(U)操作下,变成新 状态 (U,0,Y,Z)——人走到U,还是摘不到苹果,箱子在 位置Y,摘不到苹果。
这些符号的含义
29
2 问题的归约解决方法
首先我们约定问题的描述方法。 我们用一个数据结构来表示三个圆盘在柱子上的 位置。 格式为:(CBA) 含义为:每个位置的字母的取值,就表示对应圆 盘所在的柱子的编号。例如(1 2 3)表示圆盘C在 柱子1上,圆盘B在柱子2上,圆盘A在柱子3上。 这样,A、B、C的取值只可能是1,2,3三个数 之一。 对于以上问题,我们用归约法描述,可以表示为
20
3 状态图 状态图表示方法,就是用图论的方法来描述状态空 间的各个状态以及它们之间的相互关系。 在前面给出了一个图,它也可以叫做状态图。但是 这个图太复杂。我们用节点来表示上图中的各个实际 状态,就构成状态图。 状态图是由节点,有向弧线等构成的图。
21
实际上,就是将前面的图中的状态,用一个节点来表示
1 2 3
A B C
26
1
2
3
C=1,B=1,A=1 (111)
A B C
1 A B C
2
3
移动AB到柱子2上,是一 个移动二圆盘问题
A B
C=1,B=2,A=2 (122)
27
1
2
3
移动AB到柱子2上后
C
A B
C=1,B=2,A=2 (122)
3 移动C到柱子3上 是一个移动一园盘问题
1
2
C
A B
到苹果 的状态 标志 箱子的位置坐标
19
人的位置坐标
是否在 箱子上 的状态 标志
现假设有障碍物存在,我们的运动必须沿着特定的路 径进行:A D,D E, E F, F B, B F,F G,G C, 再爬上去苹果。 又该如何描述?
G A人 C E D B箱 F
苹果
如果需要寻找苹果的位置,又该如何描述 如果不知道障碍物的位置,需要寻找并避开障碍,又该如何描述?
13
对于与前面提到的命题,箱子原来处于B,人走到 B后,才能将箱子移动到苹果所处的位置C。将具体 的实例数据带入,得到
( A ,0 , B , Z )
goto ( B )
→ ( B ,0 , B , Z )
( B ,0 , B , Z )
pushbox (C ) (C
→ (C ,0, C , Z )
12
• 推箱子 pushbox (V) 它的作用是将箱子从原始水平位置推到新位置V。 例如:
(W , 0 , W , Z )
pushbox (V )
→ (V , 0 , V , Z )
要推箱子,我们认为人和箱子在水平面同一位置W, 人在地面故X=0,在操作pushbox(V)的作用下,人将箱 子移动到位置V。当然这时人和箱子还是在水平面同一 位置,人站在地面上,故新状态为(V,0,V,Z),Z表示 现在还不关心Z的取值,当然一般认为现在Z=0。
25
1 梵塔问题 这个问题是:有3根柱子1,2,3和大小不同的三 个圆盘A,B,C,每个圆盘的中心有一个孔,可以 让柱子穿过,从而他们可以堆叠在柱子上。最初,全 部圆盘都堆在柱子1上,最大的圆盘C在最下面,最 小的圆盘A在最上面。现要求将所有圆盘都移到柱子 3上,同时有限制条件为:每次只能移动最上面的一 个圆盘放到另一个柱子上,任何时候都不允许将大的 圆盘对方到小的圆盘之上。
15 4 12 8 6 10 14
11 1 7 13
9 3 5 2
4 15 12 6 8 10 14
11 1 7 13
9 3 5 2
4 12 15 8 6 10 14
23
状态图表示,主要是为了我们分析问题的方便,在 计算机内部,我们还是用一个数据结构来表示。
24
2.3. 2 问题的归约描述方法
所谓问题的归约描述方法,实际上就是把一个复 杂问题,分解为一组较简单的问题来描述和解决的方 法。只要解决了这些相对简单的问题,就可以解决原 来复杂的问题。 我们还是通过一个例子来讨论。
30
条件
二 圆 盘 问 题 (111) → (122) (122) → (322) (111) → (113) (113) → (123) (123) → (122) 一 圆 盘 问 题 (322) → (321) (321) →(331) (331) → (333) (322) → (333)
初始条件
由于还没有摘到苹果,应该有Z=0,这里我们还可 以不关心它。
14
• 爬到箱子上或从箱子上下来 用climbox 表示,如果原来在箱子上,该操作表 示人从箱子上下来,否则表示人从地面爬到箱子上。 需要注意这时人和箱子处于同一水平位置。例如
(W , 0 , W , Z )
c lim box
→ ( W ,1 , W , Z )
16
这样,我们就有了状态集合{ (A,0,B,0), (B,0,B,0), (C,0,C,0), (C,1,C,0), (C,1,C,1), (C,0,C,1) } 操作集合F: { goto(), pushbox(), climbox, grasp } 从初始状态(A,0,B,0),每经过一个操作,都转换 到下一个特定状态 ——从前以状态和操作符,可以确定下一个状态, 这样就不必存储每一个可能的状态,可以节省存储空 间和搜索时间。
17
(3) 该命题的状态空间描述:
goto(B)
(A,0,B,0)
pushbox(C) (B,0,B,0) (C,0,C,0)
climbox
(C,1,C,0)
grasp (C,1,C,1)