启发式搜索

合集下载

启发式搜索——精选推荐

启发式搜索——精选推荐

启发式搜索启发式搜索1. 相关概念在宽度优先和深度优先搜索⾥⾯,我们都是根据搜索的顺序依次进⾏搜索,可以称为盲⽬搜索,搜索效率⾮常低。

⽽启发式搜索则⼤⼤提⾼了搜索效率,由这两张图可以看出它们的差别:什么是启发式搜索(heuristic search)⽤当前与问题有关的信息作为启发式信息,这些信息是能够提升查找效率以及减少查找次数的。

我们定义了⼀个估价函数h(x)。

h(x)是对当前状态x的⼀个估计,表⽰x状态到⽬标状态的距离。

1. h(x) >= 0;2. h(x)越⼩表⽰x越接近⽬标状态;3. 如果h(x) ==0,说明达到⽬标状态。

有了启发式信息还不⾏,还需要起始状态到x状态所花的代价,我们称为g(x)。

g(x)就是我们实际要求解的问题。

⽐如在⾛迷宫问题、⼋数码问题,我们的g(x)就是从起点到 x位置花的步数,h(x)就是与⽬标状态的曼哈顿距离或者相差的数⽬;在最短路径中,我们的g(x)就是起点到x点的最短距离,h(x)就是x点到⽬标结点的最短路或直线距离。

令F(x)=g(x)+h(x),作为我们的搜索依据。

当F(x) = g(x)的时候就是⼀个等代价搜索,完全是按照花了多少代价去搜索。

⽐如bfs,我们每次都是从离得近的层开始搜索,⼀层⼀层搜;以及dijkstra算法,也是依据每条边的代价开始选择搜索⽅向。

当F(x) = h(x)的时候就相当于⼀个贪婪优先搜索。

每次都是向最靠近⽬标的状态靠近。

⼈们发现,等代价搜索虽然具有完备性,能找到最优解,但是效率太低。

贪婪优先搜索不具有完备性,不⼀定能找到解,最坏的情况下类似于dfs。

这时候,有⼈提出了A算法。

令F(x) = g(x) + h(x)。

(这⾥的h(x)没有限制)。

虽然提⾼了算法效率,但是不能保证找到最优解,不适合的h(x)定义会导致算法找不到解。

不具有完备性和最优性。

⼏年后有⼈提出了A*算法。

该算法仅仅对A算法进⾏了⼩⼩的修改。

并证明了当估价函数满⾜⼀定条件,算法⼀定能找到最优解。

2、启发式搜索

2、启发式搜索
启发式搜索
主要内容
• 搜索及其类型 • 盲目搜索
–宽度优先搜索 宽度优先搜索 –深度优先搜索 深度优先搜索
• 启发式搜索与博弈
搜索及其类型
1、什么是搜索
–人工智能所要解决的问题大部分不具备明确的解题步 人工智能所要解决的问题大部分不具备明确的解题步 而只能是利用已有的知识一步一步地摸索前进。 骤,而只能是利用已有的知识一步一步地摸索前进。 –根据问题的实际情况不断寻找可利用的知识,从而构 根据问题的实际情况不断寻找可利用的知识, 根据问题的实际情况不断寻找可利用的知识 造一条代价较少的推理路线, 造一条代价较少的推理路线,使问题得到圆满解决的 过程称之为搜索 。
– 课件演示
• 8数码问题的宽度优先搜索过程 数码问题的宽度优先搜索过程
宽度优先搜索示例
8数码问题的宽度优先搜索树 数码问题的宽度优先搜索树
盲目搜索
• OPEN表 OPEN表
– 用来存放将要扩展的节点。 用来存放将要扩展的节点。
• CLOSE表 CLOSE表
– 在进行子节点的扩展时,为了避免同一个节点被重复扩展,可以 在进行子节点的扩展时,为了避免同一个节点被重复扩展, 把扩展过一次的节点,记录到CLOSED表中, CLOSED表中 把扩展过一次的节点,记录到CL扩展时的候选对象。
–基本思想 基本思想
• 从初始节点So开始,逐层地对节点进行扩展并考察它是否为 从初始节点So开始, So开始 目标节点,在第n层的节点没有全部扩展并考察之前, 目标节点,在第n层的节点没有全部扩展并考察之前,不对第 n+1层的节点进行扩展 它是一种先生成的节点先扩展 层的节点进行扩展。 先生成的节点先扩展的搜索 n+1层的节点进行扩展。它是一种先生成的节点先扩展的搜索 方法。 方法。

第9章启发式搜索案例

第9章启发式搜索案例

通过在Tr中建立从n到M中每个成员的弧生成n的后继。
7)按照任意的模式或启发式方式对列表OPEN重新排序。
8)返回步骤3。
这个算法可用来执行最优搜索、广度优先 搜索或深度优先搜索。
在广度优先搜索中,新节点只要放在OPEN 的尾部即可(先进先出, FIFO),节点不用重 排。
在深度优先搜索中,新节点放在OPEN的开 始(后进先出, LIFO)。

g(n)
(深度因子)是由A*发现的到节点n的最小代价路径的
代价。在算法A*中,我们用

f
0,就成为相同代价搜索。
引深问题: 如果要搜索的隐式图不是一棵树(有超过一个动作
序列能从开始状态到达相同的环境状态)会怎样呢?
把GRAPHSEARCH中的第6步改为:
的 3)如果OPEN为空,则失败并退出。
图 4)选出OPEN中的第一个节点,并将它从OPEN中移出,
搜 放入CLOSED中,称该节点为n。
索 5)如果n是目标节点,顺着Tr中的弧从n回溯到n0找到 算 一条路径,获得解决方案,则成功退出(弧在第6步产生)。
法 6)扩展节点n,生成n的后继节点集M(放入OPEN)。
A*的可接纳性

对图和 h 施加一些条件可以保证应用到图的算法A* 总能找到最小代价路径。
图的条件是: 1)图中每个节点的后继是有限的(如果有的话); 2)图中所有弧的代价都大于某个正数ε。
1)假定有一个启发式(评估)函数, 可f以帮助确定下一个要 扩展的最优节点。我们采用一个约定,即 的值f 小表示找到了 好的节点(这个函数基于指定问题域的信息,它是状态描述 的一个实数值函数)。

2)下一个要扩展的节点n是 f值( n最)小的节点(假定节点扩展 产生一个节点的所有后继)。

启发式搜索(共49张PPT)

启发式搜索(共49张PPT)
f(x)=g(x)+h(x)
其中:g(x)——从初始节点S0到节点x的实际代价; h(x)——从x到目标节点Sg的最优路径的评估代价,它体现了问
题的启发式信息,其形式要根据问题的特性确定,h(x)称为启发式 函数。
2022/10/14
6
评估函数
启发式方法把问题状态的描述转换 成了对问题解决程度的描述。
这一程度用评估函数的值来表示。
2022/10/14
7
评估函数
S
搜索图G
2022/10/14
n ng
初始状态节点S
f(n):s-n-ng的估计最小路径代价
g(n):s-n的实际路径代价 h(n): n-ng的估计最小路径代价
节点n
目标状态节点ng
8
启发式搜索A算法
A算法的设计与一般图搜索相同,划分为二个阶段:
IF f(ni)>f(n,ni) THEN 令f(ni)=f(n,ni)
修改指针指向新父结点n
排序OPEN表(f(n)值从小到大排序)
2022/10/14
10
2022/10/14
4功指1搜 未做.若.退针建扩C索nL出从立为展图O,n一S一节到GE个此,目的把点S只这解标已S表放条包是扩节中路到含追展点;径一节起踪,建而个点始图则立得叫表节G有一到中O,点解P个的沿其ES成N叫;的初着的
始为空表;
5.扩展节点n,同时生成不是n的 祖 M2出的.先若;这的OP些那EN成些表员子是作节空为点表n,的的则集后失合继败节M,退点把 添入搜索图G中;对于M中每个 子3把 表.节选中它点f择(,从nnO,称nOi,P计iP)E此EN=算N表节g表:(n上点移,n为的出i) +节并第h放点一(n进in)个;C节LO点SE,

第4章+图搜索技术_2(启发式)

第4章+图搜索技术_2(启发式)

g=0
h=3 f=3
A
优先队:FBH
设g 为已搜索的路程代价 h 为将付出的估计代价
F g=1 h=2 f=3 G h=1
B g=1 h=3 f=4
H g=1 h=4 f=5
F
h=3 A
h= 2
h=3
B
h=4
C
初始结点
h=2 h=3
D
h=1 h=2
E
h=0
目标结点
H
I
J
第4章 图搜索技术
(d)
A
算出f值对OPEN表重排序
(3)用于删除节点的选择,即用于决定应删除哪些
无用节点,以免造成进一步的时空浪费。
第4章 图搜索技术
一般来说启发信息过弱,产生式系统在找到一条 路径之前将扩展过多的节点,即求得解路径所需搜索 的耗散值(搜索花费的工作量)较大;相反引入强的 启发信息,有可能大大降低搜索工作量,但不能保证 找到最小耗散值的解路径(最佳路径),因此实际应
模式,需要具体问题具体分析。通常可以参考的思路 有:一个节点到目标节点的某种距离或差异的度量; 一个节点处在最佳路径上的概率;或者根据经验的主 观打分等等。例如,对于八数码难题,用h(x)就可表 示节点x的数码格局同目标节点相比,数码不同的位 置个数。
第4章 图搜索技术
4.启发式搜索算法
启发式搜索要用启发函数来导航,其搜索算法就 要在状态图一般搜索算法基础上再增加启发函数值的 计算与传播过程,并且由启发函数值来确定节点的扩 展顺序。为简单起见,下面我们仅给出树型图的树式 搜索的两种策略。
第4章 图搜索技术
4.1.5 加权状态图搜索
1. 加权状态图与代价树 例4.6 图4—8(a)是一个交通图,设A城是出发地,E 城是目的地,边上的数字代表两城之间的交通费。试 求从A到E最小费用的旅行路线。

人工智能导论-第3章 搜索求解1 - 启发式搜索

人工智能导论-第3章 搜索求解1 - 启发式搜索
个标号为A的结点所对应状态相同,但是这三个
节点在搜索树中却是不同结点,因为它们分别代
表了从初始状态出发到达城市 A 的三条不同路径。
这三个结点表示的路径分别为:A → B → A、
A → D → A和A → E → A。因此需要注意的是,在
搜索树中,同一个标号一定表示相同的状态,其
含义为智能体当前所在的城市,但是一个标号可
达每个状态(城市)的最短路径。在处理通向相同状态的不同路径时,算法会更新当前的
前驱状态。
图3.7 修改后图搜索A*算法扩展A→E→G结点,红色实线表示
当前搜索树中的边,虚线表示不在搜索树中的边
搜索算法:A*算法性能分析
图搜索A*算法满足最优性(方法二):
要求启发函数满足一致性
引理3.1:启发函数满足一致性条件时,给定一个从搜索树中得到的结点序列,每个结


=

+
评价函数 起始结点到结点代价
(当前最小代价)
B
5
5
3
D
4
I
C
A
5
7
6
4
E
4
H
G
J
3
3
3
F
7
K
5
6
L
()

结点到目标结点代价
(后续估计最小代价)
状态
A
h(n)
13 10 6 12 7 8 5 3 6 3 0 6
B C D
E F G H I J K L
A*算法
搜索算法:A*算法
搜索算法:启发函数与评价函数
贪婪最佳优先搜索
所求解问题之外、与所求解
问题相关的特定信息或知识。

启发式搜索算法

启发式搜索算法
目录页
Contents Page
1. 启发式搜索算法定义 2. 启发式搜索算法分类 3. 启发式函数的设计与选择 4. A*算法的原理与实现 5. Dijkstra算法的原理与实现 6. 启发式搜索的应用场景 7. 启发式搜索的性能分析 8. 总结与未来展望
启发式搜索算法
启发式搜索算法定义
1.启发式搜索算法的时间复杂度取决于搜索空间的大小、启发 函数的计算复杂度以及搜索策略。 2.在一般情况下,启发式搜索算法的时间复杂度高于普通搜索 算法,因为需要计算启发函数值。 3.通过优化启发函数和搜索策略,可以降低启发式搜索算法的 时间复杂度。
▪ 启发式搜索算法的空间复杂度
1.启发式搜索算法的空间复杂度取决于搜索过程中需要保存的 信息数量。 2.在一般情况下,启发式搜索算法的空间复杂度高于普通搜索 算法,因为需要保存更多的节点和路径信息。 3.通过优化数据结构和搜索策略,可以降低启发式搜索算法的 空间复杂度。
A*算法的未来发展与趋势
1.随着人工智能和机器学习技术的不断发展,A*算法可以与这些技术相结合,进一步提高搜索效率 和精度。 2.未来A*算法的研究可以更加注重实际应用场景,针对具体问题进行优化和改进,提高算法的可靠 性和鲁棒性。 3.A*算法的发展趋势是向着更高效、更精确、更智能的方向发展,为各个领域的问题求解提供更加 优秀的解决方案。
启发式搜索算法分类
▪ 粒子群优化算法
1.粒子群优化算法是一种基于群体行为的启发式搜索算法,通 过粒子间的协作和竞争来寻找最优解。 2.该算法具有较快的收敛速度和较高的搜索效率,适用于处理 连续和多峰值问题。 3.粒子群优化算法需要合理设计粒子行为和更新规则,以提高 搜索性能和精度。
▪ 蚁群优化算法

《启发式图搜索》课件


启发式图搜索的应用场景
路径规划
游戏AI
在交通网络、通信网络等领域,启发 式图搜索算法可用于寻找最优路径, 如最短路径、最低成本路径等。
在游戏AI中,启发式图搜索算法可用 于实现游戏角色的行为规划、决策制 定等。
社交网络分析
在社交网络分析中,启发式图搜索算 法可用于发现社区结构、传播路径等 。
02 基础知识
启发式函数通常用于评估节点或边的 价值,以便在搜索过程中优先探索更 有希望的节点或边。
为什么我们需要启发式图搜索
解决大规模图搜索问题
启发式图搜索算法能够在大规模图中高效地找到最优路径,适用于诸如社交网络、交通网络等大规模图数据。
提高搜索效率
通过利用启发式信息,启发式图搜索算法可以在搜索过程中避免不必要的节点或边的探索,从而显著提高搜索效 率。
一种用于解决大规模稀疏图中带负权 重的最短路径问题的启发式图搜索算 法。
特点: Johnson算法在处理大规模稀 疏图时具有较好的性能,但在稠密图 或节点间距离变化较大的情况下可能 效果不佳。
Johnson算法通过预处理和后处理两 个阶段来找到最短路径,能够高效地 处理大规模稀疏图。
04 启发式图搜索的性能优化
游戏AI
要点一
总结词
游戏AI是启发式图搜索算法在游戏领域的应用,通过实现 智能决策和路径规划,可以提高游戏的可玩性和挑战性。
要点二
详细描述
在游戏AI中,启发式图搜索算法被用于实现智能决策和路 径规划。在角色扮演游戏、即时战略游戏等类型中,AI需 要能够根据游戏规则和环境信息进行智能决策和行动。通 过使用启发式图搜索算法,AI可以更高效地找到最优策略 和行动路径,提高游戏的可玩性和挑战性。
05 实际应用与案例分析

启发式搜索

搜索状态空间的算法。
例:一字棋游戏
选择“最好优先”算法 每种状态都标记了启发值 简化了搜索过程
启发式搜索和估价函数
在智能活动中使用最多的不是具有完备性的算法,而 是不一定完备的启发式方法。 对问题空间进行搜索时,提高搜索效率需要有和解有 关的大量控制性知识作为搜索的辅助性策略。 控制信息反映在估价函数中。 估价函数的任务就是估计待搜索结点的重要程度。
状态空间
爬山法的变形
随机爬山法 首选爬山法 随机重新开始爬山法
5.2.2 最好优先搜索法
❖ 定义:
Best-first Search (Ordered Search) 在AI图解搜索中,结点扩展的顺序是根据待扩展结点
的评价函数值 f(x)来决定,即将评价函数值最佳的结 点最先扩展,搜索方法是靠 f 值指导搜索顺序的。
启发式搜索
❖ “启发” (heuristic) 是关于发现和发明规则及方法的 研究。在状态空间搜索中,启发式被定义成一系列规 则,它从状态空间中选择最有希望到达问题解的路径。
❖ 有信息的搜索策略——是一种在问题本身的定义之外 还利用问题的特定知识的策略。
启发性信息
❖ 启发性信息的种类 有效地帮助确定扩展节点的信息; 有效的帮助决定哪些后继节点应被生成的信息; 能决定在扩展一个节点时哪些节点应从搜索树上删除的信息。
❖ 如果h(n)=0,g(n)=d(n) 时,就是广度优先搜索法。一般讲在 f(n) 中,g(n)的比重越大,越倾向于广度优先搜索;h(n)的比 重越大,越倾向于深度优先搜索。
❖ 有了f(n),就可以对各个待扩展结点的价值进行估计,从 OPEN表中选择出最有希望的结点扩展。
5.2.2 最好优先搜索法
f (n) g(n) h(n)

人工智能、启发式搜索

启发式搜索信息工程学院计算机科学与技术118班路振中一、何谓启发式搜索启发式搜索算法有点像广度优先搜索,不同的是,它会优先顺着有启发性和具体特定信息的节点搜索下去,这些节点可能是到达目标的最好路径。

我们称这个过程为最优(best-first)或启发式搜索下面是其基本思想:(1) 假定有一个启发式(评估)函数ˆf ,可以帮助确定下一个要扩展的最优节点,我们采用一个约定,即ˆf的值小表示找到了好的节点。

这个函数基于指定问题域的信息,它是状态描述的一个实数值函数。

(2) 下一个要扩展的节点n是ˆf(n)值最小的节点(假定节点扩展产生一个节点的所有后继)。

(3) 当下一个要扩展的节点是目标节点时过程终止二、典例A搜索算法描述用最优搜索算法详细说明GRAPHSEARCH。

最优搜索算法根据函数的增加值,(在上述第7步)重排OPEN中的节点。

把GRAPHSEACH的这种算法称为算法A。

下面将会看到,定义使A执行广度搜索或相同代价搜索的函数是可行的。

为了确定要用的函数族,必须先介绍一些其他符号。

设g(n) = 从开始节点n0到节点n的一个最小代价路径的代价。

设h(n) =节点n和目标节点(遍及所有可能的目标节点以及从n到它们的所有可能路径)之间的最小代价路径的实际代价。

那么f(n) = g(n) + h(n)就是从n0到目标节点并且经过节点n的最小代价路径的代价。

注意f(n0)= h(n0)是从n0到目标节点的一个(不受限的)最小代价路径的代价。

对每个节点n,设gˆ(n)(深度因子)是由A*发现的到节点n的最小代价路径的代价,hˆ(n)(启发因子)是h(n)的某个估计。

在算法A中,我们用ˆf(n)= gˆ(n)+ hˆ(n)。

A算法流程:(1)生成一个只包含开始节点n0的搜索图G,把n0放在一个叫OPEN的列表上。

(2)生成一个列表CLOSED,它的初始值为空。

(3)如果OPEN为空,则失败退出。

(4)选择OPEN上的第一个节点,把它从OPEN中移入CLOSED,称该节点为n。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
① n*在到达目标的一条最优路径上 ② A*已经发现了到达n*的一条最优路径 ③ f (n* ) ≤ f* (n*)
最优路径:n0 , n1 , … ,n* , np ,… ,G
n1 n0
n*
np G
引理一证明(ห้องสมุดไป่ตู้)
• 数学归纳法 • 当m=1时,也就在是算法的第一步:仅有初 始结点n0被放入Open表中。令n*= n0, 因为 是n0起点,所以n0必然在从n0到目标的一条 最优路径上,而且g (n0)=0 , g *(n0)=0 。
启发式搜索
yinbaoyong@
启发式信息加速搜索
• 盲目搜索的缺陷 • 改进: 改进:根据与问题相关的知 识问题,引入启发式信息。 • 策略: 策略:从初始结点S出发, 选择离目标最近 离目标最近的子节点 离目标最近 扩展。 • 定义:f(n)为经过结点n的 定义:f 且从起点到目标的最短路径 长度的估计函数。 f(n)的值 越小,表示路径越短
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
right
3+3 8 3 2 1 4 7 6 5
3+4 2 8 3 7 1 4 6 5
结点n
目标
如何设计可采纳的启发式函数?
• 组合启发式函数:如果已有h1, h2 ,······, hm等可采纳 启发式函数,那么:
h = max(h1, h2 ,······, hm)
• 从经验中学习:已知某些特征x1与x2和h有关,但 不知道具体的关系,那么可以定义 h=c1x1 +c2x2 通过学习调整c1与c2。 • ABSOLVER程序能自动生成启发式。魔方的第一 个有用的启发式就是它找到的 • 模式数据库
– 由于n*处在从n0到目标的一条最优路径上,所 以它的后继结点中,至少有一个结点np在最优 路径上。所以引理1的结论1成立。 – A*找到了从n0到np的一条最优路径。(反证法) 如果存在一条到达np更好的路径,那么它也是 到达目标的更好路径,这与n*处在最优路径上 矛盾。所以引理1的结论2成立。
A算法——伪代码
1. 2. 3. 4. 5. 6. 初始化open表、closed表为空,定义s为初始状态结点。 计算f(s) := g(s) + h(s)。将s加入到open表中。 如果open表为空,则搜索失败退出, 否则从open表中取出第一个结点n,将n插入到closed表中 如果n是目标结点,搜索成功,返回问题的解 应用每一个可用的算子Opi ,扩展n生成子结点 mi, a) 计算g(mi)=g(n)+ C(n, mi); f=g(mi)+h(mi); b) 如果mi已经存在于open表中或者在closed表中,且先前 计算的g(mi)小于等于当前的g(mi),那么goto 6。否则从 open表或closed表中取出与mi相同的子结点mi’ c) 令mi := mi’ ,将mi的父指针指向n d) 将结点mi插入到open表,然后将open表按f值排序。 7. goto 3
引理一证明(4)
• 引理1的结论3的证明 由结论2可知: g(n*)=g*(n*) 因为 g (np) = g (n*)+cost(n*, np) g*(np) = g*(n*)+cost(n*, np) 所以 g(np)=g*(np) f (np)= g(np) +h(np)= g* (np)+h (np) 又因为h(np) ≤ h* (np) 所以 f (np) ≤ g* (np)+h* (np)= f* (np) f (np) ≤ f* (np) = f* (n0) • 引理1在算法的第m+1步也成立。根据数学归纳法,引理 引理1
A算法——数据结构
• 结点n需要以下属性:
– 用于识别相同结点的标志ID – g, f, h – 指向父结点的指针
• open表用优先级队列实现,并提供以下操作 open
– – – – add_sort (open, n) get_first (open, n) search( open, n) remove(open,n)
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
启发式搜索算法——A算法
• 定义g(n)为已发现 已发现的初始结点到结点n所有 已发现 路径中的最短路径的代价。 • 定义h(n)为结点n到目标结点的最短路径长 度的估计,也称启发式函数。 • f(n) =g(n)+ h(n) • 利用f 加速搜索的算法 • 使用Open表、Closed表
A*算法的灵通性
• 如果A*算法的两个版本A2和A1,其差别在 于,对所有的非目标结点有:h1 < h2,那么 A2比A1更灵通 • 定理二 如果A2比A1更灵通,那么对任意一 个图,如果存在从n 0到目标结点的一条路 径,在搜索终止时,被A2扩展过的结点也 被A1扩展过。
• • • •
最灵通的算法是h≡h* 相同代价搜索h≡0 爬山法 f=h A算法f=g+h
• 定理1:如果图和h(n)具有上述稳定条件 稳定条件,而且 稳定条件 从开始结点n0到目标结点有一条有限代价的路径 有一条有限代价的路径, 有一条有限代价的路径 那么A*算法保证终止于到达目标的一条最小代 最小代 价路径。 价路径
A*算法的可采纳性
• 引理1: 在A*终止前的每一步,总有一个 结点n* ,它在Open表中,并具有一下特 性:
5
2
演示
A搜索过程示意图
广度优先
A搜索
最优搜索算法——A*算法
• A*算法流程与A算法完全一样 • 启发式函数
– A算法对h(n)没有任何要求 – A*算法要求 对每一个节点,h(n) ≤ h*(n)。例如 h(n)=0
• 解的效果
– A算法不保证找到最优解 – A*算法保证找到最优解
A*算法的可采纳性
单调条件演示
A*算法的改进
• 缺陷:
– 有可能反复扩展同一个节点
• 改进:
– 设计满足单调条件的启发式函数 – 修改算法过程
如何设计可采纳的启发式函数?
• 根据问题特征设计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
h(n)对搜索效率的影响
• 二维地图上的路径规 划
– – – – – h1=0 h2取欧氏距离 h3取城市距离 h4取10倍的欧氏距离 h5取20倍的欧氏距离 h1 h2 h3 h4 h5 代价 136.1 136.1 138.0 304.0 468.5 结点 12002 2045 672 147 131
深度优先
广度优 先 h≡0 h≤h* f=g+h f=h
• 广度优先搜索与相同 代价搜索都是可采纳 的
演示
A*算法的单调条件
• 单调条件(一致性条件) 如果nj是ni的后继,那么 h(ni) - h(nj)≤ c (ni, nj) • 定理三 如果h满足单调条件,那么当A*扩展到结 点n时,它已经找到了到达结点n的一条最优路径 • A*不需要重定向指针,对图的搜索等同于对树的 搜索
g * ( n)
h * ( n)
八数码问题
令g (n)为初始结点到结点n的深度 令h(n)为位置不正确的数字个数
h( n) = 1
1 2 3 8 4 7 6 5
0+4 2 8 3 1 6 4 7 5
left up right
1+5 2 8 3 1 6 4 7 5 2+3 2 8 3 1 4 7 6 5
• 可采纳性
– 对任意的图,当存在初始状态s到目标节点g的 路径的时候,如果搜索算法总是在s到g的最佳 路径上停止搜索,则称该算法是可采纳的。 – A*算法是可采纳的
• A*算法
– 能找到最优解吗? – 在什么情况下能找到最优解?
A*算法的可采纳性
• 稳定条件
– 图中的每个结点的后继结点是有限的。 – 图中的弧的代价都大于某个正数ε 。 – 对图中的所有结点n, h(n) ≤ h*(n) 。也就是说h (n)决 不会超过实际值h* (n)
引入f(n)的搜索过程 f
S 4 4 4 G 3 3 4 4 4 4
n0 n1
S n
f(n)
nk
G
f(n)=?
• f(n) =g(n) + h(n) (
– g(n)表示起始结点到n的 ( 最短路径长度的估计 – h(n)表示n到目标结点的 最短路径长度的估计
g (n)
• g=? h=? g=? h=?

于是,当算法处在第m+1步时,有两种情况:
– –
最优路径:n0 , n1 , … ,n* , np ,… ,G
第m+1步,n*没有被扩展,结点x被扩展
最优路径:n0 , n1 , … ,n* , np ,… ,G
n1 n0
n*
np G
第m+1步 结点n*被扩展
引理一证明(3)
• n*被扩展:它的所有后继结点都被放入 Open表中。
相关文档
最新文档