D-启发式搜索-人工智能(AI)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20
Robot Navigation
f(N) = h(N), 其中 h(N) = 与目标的Manhattan 距离 (不是 A*) 8 7 6 7 7 8 6 7 6 5 4 3 2 3 4 5 7 6 5 5 4 3 4 3 2 1 0 0 1 2 3 2 3 4 5 6 5 4 5 6
21
Robot Navigation
2 1
此处的启发函数h无 疑是可纳的
26
如何处理可重复访问状态?
c=1 h = 100 1 2 90 100 0
2 1 f = 1+100 4+90 2+1
?
104
如果因为该新节点的状态是重复访问的, 就将它丢弃的话,那么搜索算法下一个 就将扩展目标节点,因此返回一个非最 优解
27
如何处理可重复访问状态?
G 为目标节点 h(G) = 0
9
8-Puzzle Heuristics
5
4 7 2 3
8
1 6
1
4 7
2
5 8
3
6
STATE(N)
Goal state
h1(N) = 不在位数码牌的个数 = 6 是 ??? h2(N) = sum of the (Manhattan) distances of every tile to its goal position = 2 + 3 + 0 + 1 + 3 + 0 + 3 + 1 = 13 is admissible h3(N) = sum of permutation inversions = 4 + 6 + 3 + 1 + 0 + 2 + 0 + 0 = 16 is not admissible
1
2
29
如果新路径耗散 之前的路径耗散,那么丢弃该 重复访问状态的节点对 A* 不会产生负面影响
[因此,实际上如果一个节点的重复访问状态是已经被其 祖先节点访问过的话,可以将其丢弃] [搜索树可能会变得庞大,达到访问状态的指数级]
A* 仍然是最优的,但状态仍可能会被多次访问 幸运的是,对于许多可纳函数,是所谓一致可纳 的,这使得算法在处理重复访问状态上变得非常 高效
5 4 7 2 3 8 1 6 1 4 7 2 5 8 3 6
Heuristic Function
启发函数
STATE(N)
Goal state
h1(N) = 不在位的牌数 = 6
[为什么它是对目标距离的一个估计呢?]
2
Other Examples
5 4 7 2 3 8 1 6 1 4 7 2 5 8 3 6
1 100 1 2 90 100 0 102 104
2 1 1+100 2+90 4+90 2+1
相反的,如果不因为状态的重复访问而丢弃 新节点,那么搜索算法将会找到最优解,并 停止
28
但是 ...
如果不丢弃那些重复访问状态的节点,搜索树 可能会达到指数级的访问状态数量
1 1
1 1+1 1 1 2+1 2+1 2+1 2+1 2 4 4 4 4 4 4 4 4 1+1
6
STATE(N)
h1(N) = 不在位的数码牌个数 h2(N) = 与目标位置的Manhattan距离的和 都是一致的吗? (为什么呢?)
33
结论 #2
若启发函数h是一致的,则只要A*扩展 一个节点,那一定是找到了到达该节点 状态的最优路径
34
证明 (1/2)
1) 考虑节点N及其子节点N’ 由于h是一致的: h(N) c(N,N’)+h(N’) = g(N)+h(N) g(N)+c(N,N’)+h(N’) = 因此,其它任何一条路径都不可能使f更低
= 2 + 3 + 0 + 1 + 3 + 0 + 3 + 1 = 13 是 可纳的
h3(N) = sum of permutation inversions = 4 + 6 + 3 + 1 + 0 + 2 + 0 + 0 = 16 is not admissible
12
8-Puzzle Heuristics
15
结论 1
A*
完备
最优来自百度文库
[即使不丢弃重复访问的节点,以上结论也 是成立的]
16
时间限制问题
当一个问题无解时,如果该问题的状态空间是无限的或者 不限制重复访问的次数,那么A*将不停的永远运行下去。 其他的一些情况,也可能使A*花费大量的时间才会停止。 因此,实际应用中,对A*将会给定一个时间的限制。如果 在时间限制内没有找到解,则停止运行。这样的话,将没 有办法知道该问题是否无解,或者是否需要更多的时间就 能找到解 当AI系统“小”且一次只是解决一个搜索问题时,以上 的问题不会成为太大的问题,不必过虑. 但是当AI系统变得很大,需要同时解决许多个搜索问题, 其中一些是无解问题的时候,该如何定义相应的时间限制 呢?有兴趣的同学可以进一步阅读相关文献…… (如 Motion Planning ...)
10
8-Puzzle Heuristics
5
4 7 2 3
8
1 6
1
4 7
2
5 8
3
6
STATE(N)
Goal state
h1(N) = 不在位数码牌的个数 = 6 是可纳的 h2(N) =每个数码牌与其目标位置的 (Manhattan) 距离和
h3(N) = sum of permutation inversions = 4 + 6 + 3 + 1 + 0 + 2 + 0 + 0 = 16 is not admissible
是 ??? = 2 + 3 + 0 + 1 + 3 + 0 + 3 + 1 = 13
11
8-Puzzle Heuristics
5
4 7 2 3
8
1 6
1
4 7
2
5 8
3
6
STATE(N)
Goal state
h1(N) = 不在位数码牌的个数 = 6 是可纳的 h2(N) =每个数码牌与其目标位置的 (Manhattan) 距离和
22
最佳优先搜索(贪婪搜索)
Best-First Search
评价函数 f 将搜索树的每一个节点N映射为 一个实际的数值 f(N) 0 最佳优先搜索按照节点的f值升序排列边缘队 列
23
A* 搜索
1) f(N) = g(N) + h(N), 其中:
• • g(N) = 从起始节点到节点N的路径耗散 h(N) = 可纳启发函数
2+4
5
f(N) = h(N) =
S 数码牌与其目标位置的距离
8-Puzzle
6
5
2 5 4 3 4 6
2
1
0
5
6
Best-First Efficiency
Local-minimum problem
最佳优先效率
f(N) = h(N) = 与目标的直线距离
7
什么是我们能证明的?
如果状态空间是无限的,通常搜索是不完 备的 如果状态空间是有限的,但不丢弃那些重 复访问的状态的话,通常搜索也是不完备 的
30
一个启发函数 h 是一致 (或单调)的,若 1) 对于每个节点N及其每一个子节点N’ : N h(N) c(N,N’) + h(N’) c(N,N’) 2) 对于每个目标节点G: h(N) N’ h(G) = 0 h(N’) 一致启发函数也是可纳的
(三角形不等式)
Consistent Heuristic
3
8-Puzzle
f(N) = h(N) = 不在位数码牌的个数
3 3 4
5
3
4 2
4 3 3
2
4 5
1
0
4
4
白色为空位
8-Puzzle
f(N) = g(N) + h(N) 式中 h(N) =不在位数码牌的个数
3+3
1+5
2+3
3+4 5+2
0+4 1+3 2+3
3+2
3+4 1+5
4+1
5+0
Heuristic (Informed) Search
(我们试着做一些聪明的选择)
R&N: Chap. 4, Sect. 4.1–3
启发式(有信息)搜索
1
启发函数 h(N) 0 估计从状态(N)到目标状 态的耗散 其值与当前的搜索树无关;仅取决于状态 STATE(N) 和目标测试 GOAL? Example:
f(N) = g(N)+h(N), 式中 h(N) = 与目标的Manhattan距离 (A*) 8+3 6+5 8 7+4 7 6+3 6 5+6 5 4+7 4 3+8 3 2+9 2 3+10 3 4 7+2 7 6+1 6 7+0 7 6+1 6 8+1 8 7+2 7 6+3 6 5+4 5 4+5 4 3+6 3 2+7 2 3+8 3 4 5 5+6 5 4+7 4 3+8 3 3 2+9 2 1+10 1 0+11 0 1 2 5 6 5 4 5 6
5
4 7 2 3
8
1 6
1
4 7
2
5 8
3
6
STATE(N)
Goal state
h1(N) = 不在位数码牌的个数 = 6 是可纳的 h2(N) =每个数码牌与其目标位置的 (Manhattan) 距离和 = 2 + 3 + 0 + 1 + 3 + 0 + 3 + 1 = 13 是 可纳的 h3(N) = sum of permutation inversions = 4 + 6 + 3 + 1 + 0 + 2 + 0 + 0 = 16 is not admissible
一致启发函数
直觉: 一致启发函数将会随着搜索树的深入变得越 来越精确 31
Admissibility and Consistency
一致启发函数也是可纳的
可纳启发函数不一定是一致的,但许多的可 纳启发函数是一致的
一致性和可纳性
32
8-Puzzle
5 8 1 2 3
4
7
2
3
1
6
4
7
5
8 goal
13
怎样构造一个可纳的 h ?
一个可纳的启发函数通常可看作是一个松弛 问题(通过去除一些约束限制得到)的最优 解的耗散 在机器人导航中:
• 曼哈顿距离对应于去除障碍物的限制 • 欧几里得距离对应于去除障碍物的限制及机器人 只能在格子内移动的约束
详情在本课稍后叙述
14
(AI中被最广泛应用的算法)
如果状态空间是有限的,并丢弃那些重复 访问的状态,那么搜索是完备的,但通常 不是最优的
8
Admissible Heuristic
令h*(N)为从节点N到目标节点的最优路
可采纳的启发
径的耗散
启发式函数h(N) 是可纳的,若:
0 h(N) h*(N)
可纳的启发式函数总是最优的!
2) 对于所有的弧: c(N,N’) > 0
3) 采用 SEARCH#2 搜索算法(节点扩展时目
标测试) 最佳优先(Best-first)搜索于是被称为 A* search
24
结论 1
A*
完备
最优
[即使不丢弃重复访问的节点,以上结论也 是成立的]
25
如何处理可重复访问状态?
c=1 h = 100 1 2 90 100 0
1) f(N) = g(N) + h(N), 其中:
• • g(N) = 从起始节点到节点N的路径耗散 h(N) = 可纳启发函数
A* 搜索
2) 对于所有的弧: c(N,N’) > 0
3) 采用 SEARCH#2 搜索算法(节点扩展时目标测
试)
最佳优先(Best-first)搜索于是被称为 A* search
N
N’
f(N)
f(N’)
35
一致启发函数下的状态重复访问
当一个节点被扩展时,保存其状态到CLOSED 表中 当一个新的节点N生成时: • 如果STATE(N)已在CLOSED中,则丢弃N • 如果在边缘里存在节点N’有STATE(N’) = STATE(N) ,则丢弃其中f最大的一个( N 或 N’ )
17
8-Puzzle
f(N) = g(N) + h(N) 式中 h(N) = 不在位的数码牌个数
3+3
1+5
2+3
3+4 5+2
0+4 1+3 2+3
3+2
3+4 1+5
4+1
5+0
2+4
18
Robot Navigation
19
Robot Navigation
f(N) = h(N), 其中 h(N) = 与目标的Manhattan 距离 (不是 A*) 8 7 6 7 8 6 7 6 5 4 3 2 3 4 5 7 6 5 5 4 3 4 3 2 1 0 1 2 3 2 3 4 5 6 5 4 5 6
STATE(N)
Goal state
h1(N) =不在位的牌数 = 6
h2(N) = 每个数码牌与其目标位置的
(Manhattan) 距离和 = 2 + 3 + 0 + 1 + 3 + 0 + 3 + 1 = 13 h3(N) = sum of permutation inversions = n 5 + n8 + n4 + n2 + n1 + n7 + n3 + n6 =4 +6 +3 +1 +0 +2 +0 +0 = 16
相关文档
最新文档