状态空间搜索

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








B3
迭代加深
结合广度优先和深度优先的优点 算法: 令d = 1 最大搜索深度 d 的深度优先搜索 如果找到目标结点,那么结束搜索,否则 d=d+1, goto 2
计算机与信息学院 刘勇








迭代加深搜索过程
计算机与信息学院 刘勇








深度优先搜索
open
1 2 3 4 5 6 7 8 9 10 A B,F C,D,E,F D,E,F E,F F G,I H,I I
close
A A,B A,B,C A,B,C,D A,B,C,D,E A,B,C,D,E,F A,B,C,D,E,F,G A,B,C,D,E,F,G,H A,B,C,D,E,F,G,H,I



A*算法
定义g*(n)为已发现的初始结点到结点n 所有路径中的最小代价路径的代价。 定义h*(n)为结点n到目标结点的最小代价估 计,也称启发式函数。 f*(n) =g*(n)+ h*(n) 利用f*加速搜索的算法 使用Open表、Close表
计算机与信息学院 刘勇








计算机与信息学院 刘勇








3、基于搜索的问题求解模式
问题的形式化:将环境状态简化为适于问题求解 的状态,用状态空间图描述问题。
给出初始状态 设计算子:对动作建模 目标函数:目标的形式化 给出路径代价函数
求解过程:在状态空间图中找到一条从初始结点 到达目标的路径。这条路径上的所有边对应算子 组成的序列,就是解决问题的一个方案 关键技术:搜索
计算机与信息学院 刘勇








广度优先搜索
open
1 2 A B,F
close
A
A B C D E G H F I
3 4 5 6 7 8 9
F,C,D,E C,D,E,G,I D,E,G,I E,G,I G,I I,H H
A,B A,B,F A,B,F,C A,B,F,C,D A,B,F,C,D,E A,B,F,C,D,E,G A,B,F,C,D,E,G,I
计算机与信息学院 刘勇








2、搜索的定义和分类?
定义:根据问题的实际情况不断寻找可利用的知识, 从而构造一条代价较少的推理路线,使问题得到圆满 解决的过程称为搜索。 分类:盲目搜索和启发式搜索。
盲目搜索是按预定的控制策略进行搜索,在搜索过程中获 得的中间信息不用来改进控制策略。效率不高,不便于复杂问 题的求解。 启发式搜索是在搜索中加入了与问题有关的启发性信息, 用以指导搜索朝着最有希望的方向前进,加速问题的求解过程 并找到最优解。
计算机与信息学院 刘勇








问题实例——八数码问题
状态:8个棋子在3×3 的棋盘上的任意一个 摆放 初始状态:右上图 算子(后继函数): left、right、up、down 目标函数:右下图 路径代价:1
计算机与信息学院 刘勇
1 2 7 5 8 3 4 6
初始状态
1 2 3 4 5 6 7 8
可把状态空间记为三元状态(S,F,G)。
计算机与信息学院 刘勇








2、状态空间的搜索策略
计算机与信息学院 刘勇








3. 状态空间的一般搜索过程
对一个确定的具体问题来说,与解题有关的状态空 间往往只是整个状态空间的一部分,因此只要能生成并 存储这部分状态空间就可求得问题的解。 人工智能采用的基本思想:首先把问题的初始状态( 即初始节点)作为当前状态,选择适用的算符对其进行 操作,生成一组子状态(或称后继状态、后继节点、于 节点),然后检查目标状态是否在其中出现。若出现, 则搜索成功,找到了问题的解;若不出现,则按某种搜 索策略从已生成的状态中再选一个状态作为当前状态。 重复上述过程,直到目标状态出现或者不再有可供操作 的状态及算符时为止。
计算机与信息学院 刘勇








启发式信息加速搜索
盲目搜索的缺陷 根据与问题相关的知识问 题,引入启发式信息。 定义:f(n)为经过结点n的 且从起点到目标的最短路 径函数。 f(n)的值越小,表 示路径越短 策略:从初始结点S出发, 选择f(n)最小的子结点
S B C D E F G H








常用搜索策略
基础知识 状态空间搜索法 与或树搜索法 博弈树搜索法
随机搜索-遗传算法
分析与讨论
计算机与信息学院 刘勇








一. 基础知识
1、为何要搜索?
人工智能所要解决的问题大部分是结构不良或非 结构化的问题,对这样的问题一般不存在成熟的算法 可供利用,而只能是利用已有的知识一步丛地摸索着 前进。如何确定推理路线,使其付出的代价尽可能的 少,而问题又能得到较好的解决? 在人工智能中,即使对结构性能较好,理论上有 算法可依的问题,由于问题本身的复杂性以及计算机 在时间、空间上的局限性,也需要通过搜索来求解。
right
3+3 8 3 2 1 4 7 6 5
3+4 2 8 3 7 1 4 6 5
3+2 2 3 1 8 4 7 6 5
down
4+1 1 2 3 8 4 7 6 5 5+0 1 2 3 8 4 7 6 5
right
5+1 1 2 3 7 8 4 6 5
down
计算机与信息学院 刘勇





计算机与信息学院 刘勇
G
3,0








f(n)=?
f(n) =g(n) + h(n)
g(n)表示起始结点到n的最小代价 路径的代价 h(n)表示n到目标结点的最小代价 路径的代价
S
g (n)
n
h(n)
g=? h=?
G
计算机与信息学院 刘勇








f(n)≈f*(n)
g * (n)是初始结点到结点n的最小代价路径的代价估计 h * (n)是结点n到目标最小代价的代价估计 f * (n)是经过结点n的最小代价路径的代价估计 f * ( n) g * ( n) h * ( n) f * ( n) f ( n)
计算机与信息学院 刘勇








H2 全局择优搜索
每当要选择一个节点进行考察时,局部择优搜 索只是从刚生成的子点节中进行选择,选择的范围 比较狭窄,因而又提出了全局择优搜索方法。这种 方法搜索时,每次总是从0PEN表的全体节点中选择 一个估价值最小的节点。
f(x)=g(x)则它就成为代价树的广度优先搜索
S
g * (n)
n
h * (n)
G
计算机与信息学院 刘勇








启发式搜索 H1 局部择优搜索
局部择优搜索是一种启发式搜索方法,是对深 度优先搜索方法的一种改进。其基本思想是:当一 个节点被扩展以后,按f(x)对每一个子节点计算估价 值,并选择最小者作为下一个要考察的节点,由于 它每次都只是在子节点的范围内选择下一下要考察 的节点,范围比较狭窄,所以称为局部择优搜索, 下面给出它的搜索过程。
目标状态








1 2 7 5 8 3 4 6
right up left
1 2 7 5 8 3 4 6
up left
1 2 7 5 3 4 8 6
right up down left
1 2 7 5 8 3 4 6
right up
„„
计算机与信息学院 刘勇








二. 状态搜索法
1、状态(State)的基本概念
A*算法
初始化open表、close表为空,定义s为初始状态结点。 计算f*(s) := g*(s) + h*(s)。将s加入到open表中。 如果open表为空,则搜索失败退出, 否则从open表中取出第一个结点n,将n插入到close表中 如果n是目标结点,搜索成功,返回问题的解 应用每一个可用的算子Opi ,扩展n生成子结点 mi, a) 计算g*(mi)=g*(n)+ C*(n, mi); f*=g*(mi)+h*(mi); b) 如果m已经存在于open表中或者在close表中,且先前计 算的g*(mi)小于等于当前的g*(mi),那么goto 5。否则从 open表或close表中取出与mi相同的子结点mi’ c) 令mi := mi’ ,将mi的父指针指向n d) 将结点mi插入到open表,然后将open表按f值排序。 7. goto 3 1. 2. 3. 4. 5. 6.
计算机与信息学院 刘勇








B2 深度优先搜索(depth-first search)
A B C D E F G H I
A B C D E G H F I
新扩展出的节 点先被考察
计算机与信息学院 刘勇








深度优先搜索算法
1. 初始化open表、close表为空,定义S为初始状态 结点 2. 将S 放入open表中 3. 如果open表为空,则搜索失败,否则从open表中 取出第一个结点N,将N放入close表中 4. 如果N是目标结点,搜索成功,返回N 5. 对N的每一个子结点 i,如果open表和close表中 都没有结点i,那么将结点i其插入到open表的第 一个元素之前 6. goto 3
目标
1 2 3 8 4 7 6 5
计算机与信息学院 刘勇



理论Βιβλιοθήκη 与应用如何设计可采纳的启发式函数?
组合启发式函数:如果已有h1, h2 ,··, hm等可 ·· ·· 采纳启发式函数,那么:
h = max(h1, h2 ,··, hm) ·· ··
从经验中学习:已知某些特征x1与x2和h有关, 但不知道具体的关系,那么可以定义 h=c1x1 +c2x2 通过学习调整c1与c2。 ABSOLVER程序能自动生成启发式。魔方的第 一个有用的启发式就是它找到的
„„
G
计算机与信息学院 刘勇








引入f(n)的搜索过程
S 4 4 4 G
计算机与信息学院 刘勇
S
4 4 4 4
n0
f(n)
3 3

n1
n

nk

G








引入f(n)的搜索过程
S
S
g(n)
1,4 1,3 1,4
0,3
n
h(x)
2,2
2,1
2,2
3,1
3,1 4,1
G
f ( n) g ( n) h( n)

0+4







2 8 3 1 6 4 7 5
up right
left
1+5 2 8 3 1 6 4 7 5 2+3 2 8 3 1 4 7 6 5
up down left
1+3 2 8 3 1 4 7 6 5 2+3 2 3 1 8 4 7 6 5
left up right
1+5 2 8 3 1 6 4 7 5 2+4 2 8 3 1 4 7 6 5 3+4 2 3 1 8 4 7 6 5
计算机与信息学院 刘勇








如何设计可采纳的启发式函数?
根据问题特征设计h,例如八数码问题
h1位置不一致的棋子数目 h1 (n)=1+1+0+1+1+0+0+0=4 h2所有棋子到其目标位置的距离和 h2 (n)=1+2+0+1+1+0+0+0=5
结点n
2 8 3 1 6 4 7 5








B1 广度优先搜索
breadth-first search,BFS A B F C D E G I
A B C D E G H F I
先扩展出的节 点先被考察
计算机与信息学院 刘勇








广度优先搜索算法
1. 初始化open表、close表为空,定义S为初始状态 结点 2. 将S放入到open表中 3. 如果open表为空,则搜索失败,否则从open表中 取出第一个结点N,将N放入到close表中。 4. 如果N是目标结点,搜索成功,返回N 5. 对N的每一个子结点 i,如果open表和close表中 都没有结点i,那么将结点i其追加到open表的最 后一个元素之后 6. goto 3
计算机与信息学院 刘勇








4. 状态空间搜索数据结构表示
计算机与信息学院 刘勇








5. 状态空间搜索一般过程
计算机与信息学院 刘勇








计算机与信息学院 刘勇








6. 常用搜索方法 (盲目Blindfold+启发式Heuristic)
计算机与信息学院 刘勇
f(x)=d(x) 它就成为广度优先搜索
计算机与信息学院 刘勇








八数码问题
令g * (n)为初始结点到结点n的深度 令h * (n)为位置不正确的数字个数
2 8 3 1 6 4 7 5
1 2 3 8 4 7 6 5
计算机与信息学院 刘勇
h * (n) 1
1 2 3 8 4 7 6 5
相关文档
最新文档