人工智能经典推理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
搜索术语(用图来描述状态空间) •节点:对应于状态描述 •节点深度:根节点的深度为0, 其他节点的深度规定 为父节点深度加1, 即dn+1=dn+1。
•扩展节点:应用操作符将上一状态(节点ni)变迁
到下一状态(节点nj),ni表示被扩展节点,nj 即是 由ni 扩展出的子节点。 •路径:从节点ni到nk的路径是由相邻节点间的弧线 构成的折线,通常要求路径是无环的,否则会导致搜 索过程进入死循环。 •搜索图:在搜索解答路径的过程中只画出搜索时直 接涉及到的节点和弧线,构成所谓的搜索图。 •Open表:存放已经生成但未扩展节点 •Close表:存放已扩展或将要扩展的节点 •S0表示问题的初始状态 •G表示搜索过程所得到的搜索图 •M表示当前扩展节点新生成的且不为自己先辈的子 节点集。
4 5
2 8 3 1 4 7 6 5
7 8
2 8 3 1 4 7 6 5
10
1 2 3 8 4 7 6 5
11
2 8 3 1 6 4 7 5
2 8 3 1 6 4 7 5
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 8 1 4 3 7 6 5
2 8 3 1 4 5 7 6
1 2 3 7 8 4 6 5
15 16
2 3 4 1 8 7 6 5
17
2 8 3 1 6 4 7 5
2 8 3 1 6 4 7 5
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 8 1 4 3 7 6 5
2 8 3 1 4 5 7 6
1 2 3 7 8 4 6 5
1 2 3 8 4 7 6 5
从图中得,解的路径是: S0 → 3 → 8 → 17
1
宽度优先搜索
2
2 3 1 8 4 7 6 5
3 4
2 8 3 1 4 7 6 5
5
6
2 3 1 8 4 7 6 5
7
2 3 1 8 4 7 6 5
8 9
2 8 3 1 6 4 7 5
10 11 12
2 8 3 1 4 7 6 5
13
2 8 3 1 4 7 6 5
14
1 2 3 8 4 7 6 5
* 数字1 - 8指示相应棋牌。
初始状态S0: 2 3 1 8 4 7 6 5
目标状态Sg:1 2 3 8 0 4 7 6 5
制定操作算子集: * 直观方法——为每个棋牌制定一套可能的走步:左、上、 右、下四种移动。这样就需32个操作算子。 *简易方法——仅为空格制定这4种走步,因为只有紧靠 空格的棋牌才能移动。 * 空格移动的唯一约束是不能移出棋盘。
1 2 3 7 8 4 6 5
1 2 3 8 4 7 6 5
…
2 8 3 6 4 1 7 5
目标
…
例:八数码难题
设深度界限dm=4
2
2 3 1 8 4 7 6 5
12
1
2 8 3 1 4 7 6 5
3 6
2 3 1 8 4 7 6 5
9
2 3 1 8 4 7 6 5
13
2 8 3 1 6 4 7 5
3.2 盲目搜索
• 特点:不需重排OPEN表 • 种类:宽度优先、深度优先、等代价搜索等。
3.2.1 宽度优先搜索
定义
以接近起始节点的程度逐层扩展节点的搜索方法。 特点: 一种高代价搜索,但若有解存在,则必能找到它。 算法
3.2 盲目搜索 开始
把S放入OPEN表
OPEN表为空表?
是
失败
图搜索过程图
开始 把S放入OPEN表
是 OPEN表为空表? 否 把第一个节点(n)从OPEN表移至CLOSED表
失败
n为目标节点吗?
否 把n的后继节点放入OPEN表的 末端,提供返回节点n的指针
是
成功
修改指针方向
重排OPEN表 图3.1 图搜索过程框图
树/不修改指针; 图/修 改指针; 修改指针:ຫໍສະໝຸດ Baidu最优解
目标
3.2 盲目搜索
3.2.2 深度优先搜索
定义
首先扩展最新产生的(即最深的)节点。
算法
防止搜索过程沿着无益的路径扩展下去,往 往给出一个节点扩展的最大深度——深度界限。 与宽度优先搜索算法最根本的不同在于:将 扩展的后继节点放在OPEN表的前端。(算法框图
见教材)
例:八数码难题
深度优先搜索
求解的问题——给定初始布局(即初始状态)和目标布 局(即目标状态),如何移动棋牌才能从初始布局到达 目标布局
解答路径——就是一个合法的走步序列
用宽度优先搜索方法解决该问题: 为问题状态的表示建立数据结构:3×3的一个矩阵, * 矩阵元素S ij∈{0,1,…,8};其中1≤i,j≤3, * 数字0指示空格,
3.1 图搜索策略
• 图搜索控制策略 一种在图中寻找路径的方法。 图中每个节点对应一个状态,每条连线对 应一个操作符。这些节点和连线(即状态与 操作符)又分别由产生式系统的数据库和规 则来标记。求得把一个数据库变换为另一 数据库的规则序列问题就等价于求得图中 的一条路径问题。
一般图搜索过程
状态空间搜索的基本思想是:先把问题的初始状态作 为当前扩展节点对其进行扩展,生成一组子节点,然后 检查问题的目标状态是否出现在这些子节点中。若出现 ,则搜索成功,找到了该问题的解;若没出现,则再按 照某种搜索策略从已生成的子节点中选择一个节点作为 当前扩展节点。重复上述过程,直到目标状态出现在子 节点中或没有可供扩展的节点为止。
1 2 3 8 4 7 6 5
2 8 3 6 4 1 7 5
2 8 3 1 6 7 5 4
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 8 1 4 3 7 6 5
2 8 3 1 4 5 7 6
目标
3.2 盲目搜索
2
2 3 1 8 4 7 6 5
1
2 8 3 1 4 7 6 5
3
2 3 1 8 4 7 6 5
2 3 1 8 4 7 6 5
2 8 3 1 6 4 7 5
4
2 8 3 1 4 7 6 5
2 8 3 1 4 7 6 5
1 2 3 8 4 7 6 5
…
…
2 8 3 1 6 4 7 5
2 8 3 1 6 4 7 5
否 把第一个节点(n)从OPEN表移至CLOSED表 扩展n,把n的后继节点放入OPEN 表的末端,提供返回节点n的指针
是否有后继节点 为目标节点? 否 图3.2 宽度优先算法框图
是
成功
例:八数码难题
3×3九宫棋盘,放置数码为1 - 8的8个棋牌,剩下一个 空格,只能通过棋牌向空格的移动来改变棋盘的布局。
•扩展节点:应用操作符将上一状态(节点ni)变迁
到下一状态(节点nj),ni表示被扩展节点,nj 即是 由ni 扩展出的子节点。 •路径:从节点ni到nk的路径是由相邻节点间的弧线 构成的折线,通常要求路径是无环的,否则会导致搜 索过程进入死循环。 •搜索图:在搜索解答路径的过程中只画出搜索时直 接涉及到的节点和弧线,构成所谓的搜索图。 •Open表:存放已经生成但未扩展节点 •Close表:存放已扩展或将要扩展的节点 •S0表示问题的初始状态 •G表示搜索过程所得到的搜索图 •M表示当前扩展节点新生成的且不为自己先辈的子 节点集。
4 5
2 8 3 1 4 7 6 5
7 8
2 8 3 1 4 7 6 5
10
1 2 3 8 4 7 6 5
11
2 8 3 1 6 4 7 5
2 8 3 1 6 4 7 5
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 8 1 4 3 7 6 5
2 8 3 1 4 5 7 6
1 2 3 7 8 4 6 5
15 16
2 3 4 1 8 7 6 5
17
2 8 3 1 6 4 7 5
2 8 3 1 6 4 7 5
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 8 1 4 3 7 6 5
2 8 3 1 4 5 7 6
1 2 3 7 8 4 6 5
1 2 3 8 4 7 6 5
从图中得,解的路径是: S0 → 3 → 8 → 17
1
宽度优先搜索
2
2 3 1 8 4 7 6 5
3 4
2 8 3 1 4 7 6 5
5
6
2 3 1 8 4 7 6 5
7
2 3 1 8 4 7 6 5
8 9
2 8 3 1 6 4 7 5
10 11 12
2 8 3 1 4 7 6 5
13
2 8 3 1 4 7 6 5
14
1 2 3 8 4 7 6 5
* 数字1 - 8指示相应棋牌。
初始状态S0: 2 3 1 8 4 7 6 5
目标状态Sg:1 2 3 8 0 4 7 6 5
制定操作算子集: * 直观方法——为每个棋牌制定一套可能的走步:左、上、 右、下四种移动。这样就需32个操作算子。 *简易方法——仅为空格制定这4种走步,因为只有紧靠 空格的棋牌才能移动。 * 空格移动的唯一约束是不能移出棋盘。
1 2 3 7 8 4 6 5
1 2 3 8 4 7 6 5
…
2 8 3 6 4 1 7 5
目标
…
例:八数码难题
设深度界限dm=4
2
2 3 1 8 4 7 6 5
12
1
2 8 3 1 4 7 6 5
3 6
2 3 1 8 4 7 6 5
9
2 3 1 8 4 7 6 5
13
2 8 3 1 6 4 7 5
3.2 盲目搜索
• 特点:不需重排OPEN表 • 种类:宽度优先、深度优先、等代价搜索等。
3.2.1 宽度优先搜索
定义
以接近起始节点的程度逐层扩展节点的搜索方法。 特点: 一种高代价搜索,但若有解存在,则必能找到它。 算法
3.2 盲目搜索 开始
把S放入OPEN表
OPEN表为空表?
是
失败
图搜索过程图
开始 把S放入OPEN表
是 OPEN表为空表? 否 把第一个节点(n)从OPEN表移至CLOSED表
失败
n为目标节点吗?
否 把n的后继节点放入OPEN表的 末端,提供返回节点n的指针
是
成功
修改指针方向
重排OPEN表 图3.1 图搜索过程框图
树/不修改指针; 图/修 改指针; 修改指针:ຫໍສະໝຸດ Baidu最优解
目标
3.2 盲目搜索
3.2.2 深度优先搜索
定义
首先扩展最新产生的(即最深的)节点。
算法
防止搜索过程沿着无益的路径扩展下去,往 往给出一个节点扩展的最大深度——深度界限。 与宽度优先搜索算法最根本的不同在于:将 扩展的后继节点放在OPEN表的前端。(算法框图
见教材)
例:八数码难题
深度优先搜索
求解的问题——给定初始布局(即初始状态)和目标布 局(即目标状态),如何移动棋牌才能从初始布局到达 目标布局
解答路径——就是一个合法的走步序列
用宽度优先搜索方法解决该问题: 为问题状态的表示建立数据结构:3×3的一个矩阵, * 矩阵元素S ij∈{0,1,…,8};其中1≤i,j≤3, * 数字0指示空格,
3.1 图搜索策略
• 图搜索控制策略 一种在图中寻找路径的方法。 图中每个节点对应一个状态,每条连线对 应一个操作符。这些节点和连线(即状态与 操作符)又分别由产生式系统的数据库和规 则来标记。求得把一个数据库变换为另一 数据库的规则序列问题就等价于求得图中 的一条路径问题。
一般图搜索过程
状态空间搜索的基本思想是:先把问题的初始状态作 为当前扩展节点对其进行扩展,生成一组子节点,然后 检查问题的目标状态是否出现在这些子节点中。若出现 ,则搜索成功,找到了该问题的解;若没出现,则再按 照某种搜索策略从已生成的子节点中选择一个节点作为 当前扩展节点。重复上述过程,直到目标状态出现在子 节点中或没有可供扩展的节点为止。
1 2 3 8 4 7 6 5
2 8 3 6 4 1 7 5
2 8 3 1 6 7 5 4
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 8 1 4 3 7 6 5
2 8 3 1 4 5 7 6
目标
3.2 盲目搜索
2
2 3 1 8 4 7 6 5
1
2 8 3 1 4 7 6 5
3
2 3 1 8 4 7 6 5
2 3 1 8 4 7 6 5
2 8 3 1 6 4 7 5
4
2 8 3 1 4 7 6 5
2 8 3 1 4 7 6 5
1 2 3 8 4 7 6 5
…
…
2 8 3 1 6 4 7 5
2 8 3 1 6 4 7 5
否 把第一个节点(n)从OPEN表移至CLOSED表 扩展n,把n的后继节点放入OPEN 表的末端,提供返回节点n的指针
是否有后继节点 为目标节点? 否 图3.2 宽度优先算法框图
是
成功
例:八数码难题
3×3九宫棋盘,放置数码为1 - 8的8个棋牌,剩下一个 空格,只能通过棋牌向空格的移动来改变棋盘的布局。