知识表示方法状态空间法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指向节点 nj (相邻)的
那一段弧的代价
nj
(不相邻的)两个节点
间路径的代价等于连接
该路径的各个节点的所
有弧线的代价之和
k 1
c(ni , ni1)
i0
n0 c(n0,n1)
c(nk-1,nk) nk
引入代价的概念后,我们的问题可能是:
寻找初始节点到目标节点之间的代价最小的 路径
对应的原始问题:寻找从初始状态到目标状 态的操作符代价之和最小的操作符序列
P+1
P≠7,8,9
P+3
表示位置
1 23 4 56 7 89
初始状态:(2,0,3,1,8,4,5,6,7)
部分状态空间图
目标状态:(1,2,3,8,0,4,5,6,7)
注意:
➢事先规定操作符的前后顺序,便于编程 ➢不要生成已有的状态(节点),防止进入死循环
例2:迷宫问题
给图上加一个坐标系,定义每一个分叉路口 为一个状态。
例5 :修道士(Missionaries)和野人(Cannibals)问题 (简称M-C问题)。
设在河的一岸有三个野人、三个修道士和一条船, 修道士想用这条船把所有的人运到河对岸,但受以下 条件的约束:
一是修道士和野人都会划船,但每次船上至多可载 两个人;
二是在河的任一岸,如果野人数目超过修道士数, 修道士会被野人吃掉。
利用图论的技术,我们要解决两个问题: 第一、找出初始节点到目标节点的一条路径。对应 于寻找初始状态到目标状态的操作符序列 第二、找出初始节点到目标节点的一条代价最小的 路径。对应于寻找将初始状态变换到目标状态所用 操作符代价之和最小的操作符序列
3. 例子
例1:八数码问题
八数码的任何一种摆法是一个状态,状态总数 为9!。用一个长度为9的一维数组来描述状态: (q1, q2, …,q9) 其中,qi 取0, 1, …, 8个数,0表示空格,且取值互 不相同。 算符是空格的上、下、左、右移动
寻找从初始状态到目标状态的某一个操作符序列
状态空间法的解:
从初始状态变换到目标状态的操作符序列
11 9 4 15 1 3 12 7586 13 2 10 14
1234 5678 9 10 11 12 13 14 15
2. 状态图示法
状态空间法(求解过程)的表示方法:用图来表 示(借助于图论中某些技术)
类似地,在人工智能中,一种最基本的求解方法就 是试探搜索法,即,通过在某个可能的解空间(例 如,所有可能的走法)中寻找一个解
这种基于解空间的问题表示和求解方法就是 状态空间法,其基础是状态和算符(算子)
1. 问题状态描述 状态:
描述某一类不同事物间的差别而引入的一
组最少变量q0 ,q1 ,…, qn的有序集合
②问题的求解:从问题表示方法出发,找到一个合 理的办法来求解 在人工智能中,常有的方法有:
➢搜索法 ➢推理法 ➢计算方法
状态空间法
在日常的一些智力游戏(八数码、走八卦阵、走迷 宫等)中,我们采用的策略:试着向前走,如果走 不通,则往后退,不停地试、试、试,直到成功
124 578 36
123 456 78
初始状态为(1…1),目标状态为(3…3) 操作符m(i, j):表示一个盘从 i 根柱子搬到第 j 根 柱子。 T(k):表示第 k 根柱子上(最上面)的盘的大小。 操作符集合为:
O={m( i , j ) | T( i )<T( j )}
部分状态空间图
例4:猴子与香蕉问题
a cb
a
cb
用一个四元组(W,x, Y, z)来表示问题的状态 W:猴子的水平位置 x: 当猴子爬到箱子顶上取1,否则取0 Y: 箱子的水平位置 z: 当猴子摘到香蕉时取1,否则取0
(b, 0, b, 0)
pushbox
climbbox
(c, 0, c, 0) (b, 1, b, 0)
climbbox
(c, 1, c, 0)
grasp
(c, 1, c, 1) 目标状态
部分状态空间图
acb
(a,0,b,0) 初始状态
Goto(b) Pushbox(c)
Goto(b)
(b,0,b,0) Climbbox
要完成某一个具体问题的状态描述,必须完 成三项工作: ①如何描述状态,特别是初始状态 ②操作符集合及其对状态描述的作用 ③如何描述目标状态 即定义好三元状态(S, F, G)中的三个成分
状态空间法:
从某一个初始状态开始,每次施加一个操作符,递 增地建立操作符序列,直到达到目标状态为止
状态空间法的问题:
利用最优化技术中的算法,可以得到结果: x = y = z = 5.0
解释:长、宽、高都等于5米时,体积最大
说明:在计算数学的课程中,主要关心求解的
具体算法
在人工智能中,重点关注两个方面的内容: ①问题的表示(知识的表示):即要找到问题的一
种合适的表示方法 在人工智能中,我们要涉及到:
➢ 状态空间法 ➢ 问题归约法 ➢ 谓词逻辑法 ➢ 样本向量法
操作的表示: 用符号Pij表示从左岸到右岸的运人操作 用符号Qij表示从右岸到左岸的操作
其中: i表示船上的修道士人数 j表示船上的野人数
操作集
本问题有10种操作可供选择:
F={P01, P10, P11, P02, P20,Q01, Q10, Q11, Q02, Q20}
ni0 nik
如果从节点 ni 到 nj 存在 一条路径,则称节点 nj 是 从节点 ni 可到达的节点, 或者称 nj 是 ni 的后裔节 点、称 ni 是 nj 的祖先。
ni 祖先 后裔 nj
当用有向图来表示状态空间法时,对应关系: ➢图中的一个节点对应于某一个状态 ➢图中的一个有向弧对应于某一个算符
例:描述在坐的同学
变量可以有: 年级 班级 姓名 性别 学号 ……
根据要解决的问题、从 中选择最少的一组变量 例:
✓ 区分哪一个班:年级、 班级
✓ 区分哪一位同学:姓 名、性别、学号
矢量形式: Q=[ q0, q1, …, qn ]T
其中,元素 qi ( i=0, 1,…, n)为集合的分 量,称为状态变量。
Pushbox(c) (c,0,c,0)
(b,1,b,0)
Climbbox Pushbox(a)
(c,1,c,0)
(a,0,a,0)
Pushbox(c)
Pushbox(a) Grasp
(c,1,c,1) 目标状态
猴子摘香蕉问题的状态空间图
解序列为: {Goto(b), Pushbox(c), Climbbox, Grasp}
注:有向弧的旁边可以标以具体算符
状态 操作符
节点 有向弧
问题:寻找从初始状态到目标 状态的某个操作符序列
转 化 为
问题:寻找图中初始节点(对应初 始状态)到目标节点(对应于目标 状态)的一条路径
在某些情况下,每个操作符作用、成本是不一
样的,需要引入代价的概念
ni
c (ni , nj) 表示从节点 ni
具体状态:给每一个状态变量一个具体的 值(符号、数值等)。
矩阵形式
q11 ... q 1n
Q
q m1 ... q mn
例:八数码问题
123
矢量形式的状态表示:
478
1 ,2 ,3 ,4 ,7 ,8 ,6 ,5 ,0 6 5
矩阵形式的状态表示:
1 2 3
4
7
8
6 5 0
算符(操作符):使问题从一个状态 变换到另一状态的手段。
目标状态为(4,4) 操作符为人的上、 下、左、右走动
初始状态为(1,1)
部分状态空间图
例3:梵塔问题(三个盘)
对于 n 个盘的问题,我们用 n 维向量
(a1 a2…an)
a
...
表示问题的一个状态
a a
2 1
其中ai = 1, 2, 3 表示第i个盘位于第一、二、 三个柱子上,a1 an中盘的大小从大到小
如果记空格的位置为P,这时空格的移动规则是:
1 23
123856740
8 5 6 P 1 234 5 6 7 8 9 74
P-3
表示位置
P-1
P
P+1
P+3
空格移动规则
代码
规则
1
左移
2
上移
3
右移
4
下移
前提条件
P≠1,4,7
应用结果
P 位置与 P-1 位置上的元素互换
P≠1,2,3
P-3
P≠3,6,9
知识表示方法 --状态空间法
用计算机技术解决实际问题的一般思路:
实际 问题
问题表达 知识表达 数学建模
结果的解释
求解的方法 或者算法
例:求侧面积为150平方米的体积最大的长方体?
y x
z
设长、宽、高分别为 x, y, z 侧面积为:2(xy + yz + xz) 体积为:xyz 数学模型
max xyz s.t. 2(xy + yz + xz)=150
状态空间记作三元状态:(S, F, G)
例:十五数码问题
11 9 4 15
13
12
7586
13 2 10 14
1234 5678 9 10 11 12 13 14 15
初始状态:左图 目标状态:右图 操作符集合F=[空格的左移、上移、右移、下移]
可能的求解过程
注:在程序和图示求解过程中,需要规定好操作符 的使用顺序
图是由节点(不一定是有限个的节点)的集合构
成的
注意:在图论中,图的定义中还包括边的集合
有向图和无向图:
无向图:一对节点可能互为后裔,边用线段
来表示
有向图:一对节点用弧线连接起来,并且从一
个节点指向另一个节点 父辈节点或祖先n i
后继节点或后裔nj
对于某一个节点序列
(ni0 , ni2 , … nij , …, nik) 如果每一个节点 nij-1 都有一个 后继节点 nij 存在,则将这一 序列称为从节点 ni0 到 nik 的 长度为 k 的路径。
初始状态是(a, 0, b, 0),目标状态是(c, 1, c, 1)
操作符: ①猴子当前位置W走到水平位置U:goto(U):
(W, 0 , Y, z)(U, 0 , Y, z) 注:猴子必须不在箱子上 ② 猴 子 将 箱 子 从 W 位 置 推 到 水 平 位 置 V: pushbox(V):
问题表达知识表达数学建模求解的方法或者算法结果的解释例求侧面积为150平方米的体积最大的长方体y设长宽高分别为xyz侧面积为2xyyzxz体积为xyz数学模型maxxyzst2xyyzxz150xz利用最优化技术中的算法可以得到结果xyz50解释长宽高都等于5米时体积最大在计算数学的课程中主要关心求解的具体算法在人工智能中重点关注两个方面的内容问题的表示知识的表示即要找到问题的一种合适的表示方法在人工智能中我们要涉及到状态空间法问题归约法谓词逻辑法样本向量法问题的求解从问题表示方法出发找到一个合理的办法来求解在人工智能中常有的方法有搜索法推理法计算方法在日常的一些智力游戏八数码走八卦阵走迷宫等中我们采用的策略试着向前走如果走不通则往后退不停地试试试直到成功1532764814725836类似地在人工智能中一种最基本的求解方法就是试探搜索法即通过在某个可能的解空间例如所有可能的走法中寻找一个解这种基于解空间的问题表示和求解方法就是状态空间法其基础是状态和算符算子1
右岸的状态可由下式确定: 右岸修道士数 m'=3-m 右岸野人数 c'=3-c 右岸船数 b'=1-b 在这种表示方式下,m和c都可取0、1、2、3中之 一,b可取0和1中之一。因此,共有4×4×2=32种状态。
这32种状态并非全有意义,除去不合法状态和修道 士被野人吃掉的状态,有意义的状态只有16种:
例如:走步、规则、数学算子、运算 符号等等。
例:描述在坐的同学(续)
状态变量可以有: 年级 班级 姓名 性别 学号 ……
操作符: 入学 正常升级 毕业
例:八数码问题
123 478 算符: 6 5
1、数字的上、下、左、右移动 2、空格的上、下、左、右移动
问题的状态空间:一个表示问题全部可能状
态及其关系的图,它包含了三个集合: 1. 所有可能的问题初始状态集合S 2. 操作符集合F 3. 目标状态集合G
S0=(3, 3, 1) S1=(3, 2, 1) S2=(3, 1, 1) S3=(2, 2, 1) S4=(1, 1, 1) S5=(0, 3, 1) S6=(0, 2, 1) S7=(0, 1, 1) S8=(3, 2, 0) S9=(3, 1, 0) S10=(3, 0, 0) S11=(2, 2, 0) S12=(1, 1,0) S13=(0, 2, 0) S14=(0, 1, 0) S15=(0, 0, 0) 有了这些状态,还需要考虑可进行的操作。
操作是指用船把修道士或野人从河的左岸运到右 岸,或从河的右岸运到左岸。
每个操作都应当满足如下条件: 一是船至少有一个人(m或c)操作,离开岸边的 m和c的减少数目应该等于到达岸边的m和c的增加数 目; 二是每次操作船上人数不得超过2个; 三是操作应保证不产生非法状态。 因此,操作应由条件部分和动作部分: 条件:只有当其条件具备时才能使用 动作:刻划了应用此操作所产生的结果。
如果野人会服从任何一次过河安排,请规划一个确 保修道士和野人都能过河,且没有修道士被野人吃掉 的安全过河计划。
解:首先选取描述问题状态的方法。在这个问题 中,需要考虑两岸的修道士人数和野人数,还需要考 虑船在左岸还是在右岸。从而可用一个三元组来表示 状态
S=(m, c, b) 其中,m表示左岸的修道士人数,c表示左岸的野人数, b表示左岸的船数。
(W, 0, W, z) (V, 0, V, z) 注:猴子与箱子必须在同一位置
操作符: ③猴子爬到箱子上:climbbox:
(W, 0, W, z) (W,1, W, z) ④猴子摘到香蕉:grasp:
(c, 1, c, 0) (c, 1, c, 1)
初始状态
(a, 0, b, 0) goto(b)
相关文档
最新文档