人工智能课件

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

• 4.扩展:
• (1) 生成直接后继的集合TGenAllSuccessors(node) ; • (2) 计算f(suc),更新OPEN表和CLOSED表。将node移 至CLOSE表,对suc T: • 若suc不OPEN表或CLOSED表中,则计算f(suc),并将 suc加入OPEN表中; • 若suc已经在OPEN表中,且新路径更短,则更新 f(suc)的值为新代价; • 若suc已经在closed表中,且新路径更短,则将 closed表从CLOSED表移至OPEN表,并更新f(suc); • (3) 跳转到” 2.选择”.
• 如果有多个可纳式启发函数可用,h1, h2, …, hn ,选择哪个最好? • 可以通过定义多个函数的复合
h(n)= max{h1(n),h2(n),…,hn(n)}
来获得其中最好的启发。
30
子问题、模式库等
• 子问题的最优解的耗散是完整问题的耗散下界 。
因为只考虑了4个数字,所以是原问题的子问题。
具有单调性的启发函数的A*
启发函数具有单调性的A*搜索算法的执行过 程描述:
• 1.初始化: • OPEN={初始状态s},CLOSED= 。 • 2.选择: • (1)若OPEN=,搜索算法失败; • (2) OPEN ,从OPEN表中按照某种策略选择 一个状态node。
• 3.目标检测:
• (1) 若IsGoal(node)=True,则得一解,算法结束; • (2) 若IsGoal(node)=False ,则执行”4.扩展”.
• 4.扩展:
• (1) 生成直接后继的集合TGenAllSuccessors(node) ; • (2) suc T, suc在OPEN表,则更新f(suc);若suc在 CLOSED表,则不做任何操作;否则,将f(suc)赋予 suc并放入OPEN表; • (3) OPENOPENT, CLOSEDCLOSED{node} ; • (4) 跳转到” 2.选择”.
一般的图搜索
基本要素:
• 初始状态 • 后继函数 • 目标测试 • 路径耗散
数据结构
• OPEN表:保存待扩展的节点(也称前端节点或 边缘节点)。 • CLOSED表:保存已扩展了的节点。
评价函数
• 量化从任意状态n到某个目标状态代价的评价函 数f(n)。
算法的三个关键步骤:
• 选择、目标检测、扩展。
显然,两个模式对应的转换步数,是原问题的下 界。
* * * 3
当前模式x
2
4 * 1 3 *
1
4 *
2
* *
31
目标模式sg
预习
阅读5.4、5.5。
2 1 7 6
当前状态x
8
3 5 4
1 8 7
2 6
3 4 5
11
目标状态s
贪婪搜索
• 启发式搜索也称最佳优先搜索。 • 贪婪搜索或贪婪最佳优先搜索:
– f(n) = h(n) – 若n是目标节点,则h(n)=0。
• 启发函数h(n)基于领域知识,前瞻(或
猜测)从当前节点抵达任意目标节点的最 小代价。 h(n)越小,代表n越有希望好。
一般的启发式搜索算法
• 搜索算法的不同,归根结底在于,对OPEN表 节点扩展顺序的策略不同。 • OPEN表节点扩展策略一般受制于一下因素:
– 称为评价函数的f(n) 。其中,n可以是任意节点 。一般地,f(n) 有实际意义,如表示代价或耗
散时,值越小越好。
– 选择下一个节点时考虑OPEN表哪些节点。
单调性
• 单调性(一致性)。h(n)满足以下条件就是 一致的:对于每个结点n,通过任何行动a生 成的n的每个后继结点n‘,满足下列三角不等 式:h(n) ≤ cost(n, a, n‘) + h(n‘)。该三角形是 由n,n‘和离n最近的目标构成。
• 试证明:
– 如果h(n)是一致的,那么,它一定也是可纳的。 – 如果h(n)是一致的,那么,沿着任何路径的f(n) 值是非递减的。
信息度
• 信息度。何时一个启发策略要比另一个
启发策略好? • 在两个A*启发策略的h1和h2中,如对搜索 空间中的任一状态n都有h1(n) h2(n) h*(n) ,就称策略h2比h1具有更多的信息度 (或h2比h1更占优) • 须注意的是:更多的信息性需要更多的计 算时间,从而有可能抵消减少搜索空间所 带来的益处!
A
f(A)=830
G
f(G)=480
C
495+150 =645
G
370+100 =470
(e) 扩展E之后
26
思考题
• 如何用A*求解旅行商问题?
27
补充:如何设计A*的启发函数
松弛 子问题 多个启发函数的复合 迭加
28
启发函数的设计原则和方法
• 降低了问题的行动(操作)限制,称为松弛。 • 以八数码为例。
• 启发式搜索是OPEN表是优先队列的搜索。
启发式搜索算法举例
• 八数码 • f(n) = g(n) + h(n)的选取
g(n) = “x所在的搜索深度”; h(n) = “x与sg相比,错位数字的数目”。
Baidu Nhomakorabea
• 错位数h(n) = 5。显然, 5 ≤ “实际需要的最 少步数”,满足h(n) ≤ h*(n)。
可纳性、单调性、 信息度
A*搜索
• 若一个启发式搜索:对任意节点n,h(n) h*(n),且对所有目标节点g有h(g)=0,则称 之为A*搜索。
• 可纳性。启发函数对任意节点n满足满足
h(n) h*(n),则称该算法是可纳的,称h是 可纳的启发函数。 • 根据A*定义,所有A*搜索都是可纳的。
g(A)=0 h(A)=300
A C
245+150 =395 (b) 扩展A之后
23
D
265+165 =430
f(A)=300
(a) 初始状态
270+210 =480
A
f(B)=480
B E
370+80 =450
C
D f(D)=430
B
395+210 =605
A
490+300 =790
(c) 扩展C之后
人工智能
第五章
徐长明
主要内容
• 阅读教材5.1、 5.2、5.3、5.4、5.5。
• • • • • 爬山法和动态规划法 最佳优先搜索算法 可纳性、单调性以及信息性 博弈树搜索 计算复杂度
最佳优先搜索
s
搜索就是寻找问题的解 的过程,即,寻找从初 始状态s到目标状态g的 路径。
g
x
y
假设单步的路径耗散值 非负,即,cost (x, y) ≥ 0。
• h1(n) = “x与sg相比, 错位数字的曼哈顿距离 之和”; • h2(n) = “x与sg相比,错位数字的数目”。 • h1 (n) = 6 ;h2 (n) = 5。
2 1 7 6
当前状态x
8
3 5 4
1 8 7
2 6
3 4 5
20
目标状态sg
思考题
启发函数h(n) 城市 到G的直线距离 A 300 B 210 C 150 D 165 E 80 F 120 G 0
• 一般地,评价函数定义为 f(n) = g(n) + h(n)
– 搜索算法或许已发现多条从初始节点s到节点n 的路径,它们的最小代价为g(n) 。 – 虽然从节点n到任一目标节点g的所有路径的最 小代价尚不知道,但是可由领域知识对其作出 估计,通过启发函数h(n)实现。 – 于是,f(n)表示从初始节点s经由节点n到达目标 节点g的最优路径的代价估计值。
24
A
f(B)=480
B E
C
D f(D)=430
B
f(B)=605
A
f(A)=790
A
530+300 =830
G
480+0 =480
f(E)=450 (d) 扩展D之后
问题:
(1)生成的搜索树中出现了目标G,算法结束了么? (2)为什么? 25
A
f(B)=480
B E
C
D
B
f(B)=605
A
f(A)=790
可纳性
• 请证明:A*算法是最优的。
证:若问题有解,令最优解G的耗散为C* 。
• 假设一个非最优解G‘出现在边缘上。G‘是解,故 h(G’)=0,f(G‘)=g(G’)+h(G‘)=g(G’)> C* 。 • 对于任意一个处于最优解路径上的结点n,而f(n) 不会高估经过n的最优解的路径耗散,总有 f(n)≤f(G)=C*。 • f(n) ≤C*<f(G’)综上,故G’将不会得到扩展,算法最 终将得到最优解。
一般的图搜索算法描述
图搜索算法的执行过程描述:
• 1.初始化: • OPEN={初始状态s},CLOSED= 。 • 2.选择: • (1)若OPEN=,搜索算法失败; • (2) OPEN ,从OPEN表中按照某种策略选择 一个状态node。
• 3.目标检测:
• (1) 若IsGoal(node)=True,则得一解,算法结束; • (2) 若IsGoal(node)=False ,则执行”4.扩展”.
寻找从城市A到城市G的最短路径
21
启发函数h(n) 城市 到G的直线距离 A 300 B 210 C 150 D 165 E 80 F 120 G 0
寻找从城市A到城市G的最短路径
22
A*搜索搜索最短路径的过程
考虑将A*搜索用于树搜索。即,下述过程没有考虑 状态重复的问题。(a)~(e)描述了搜索的几个阶段。 A B
– 八数码的行动描述:A与B水平或垂直相邻,且B是空 的。 – 松弛a:一个数字可以从方格A移动到方格B,如果A 与B相邻; – 松弛b:一个数字可以从方格A移动到方格B,如果B 是空的。 – 松弛c:一个数字可以从方格A移动到方格B。
• 注意:将松弛问题作为启发函数时,应保证容 易求解。
29
启发函数的设计原则和方法
相关文档
最新文档