启发式图搜索策略

启发式策略

什么是启发式信息?

用来简化搜索过程有关具体问题领域的特性的信息叫做启发信息。
启发式图搜索策略(利用启发信息的搜索方法)的特点:重排OPEN表,选择最有希望的节点加以扩展。
种类:A、A*算法等。

运用启发式策略的两种基本情况:

(1)一个问题由于存在问题陈述和数据获取的模糊性,可能会使它没有一个确定的解。
(2)虽然一个问题可能有确定解,但是其状态空间特别大,搜索中生成扩展的状态数会随着搜索的深度呈指数级增长。

例5.6 一字棋。

在九宫棋盘上,从空棋盘开始,双方轮流在棋盘上摆各自的棋子  或  (每次一枚),谁先取得三子一线(一行、一列或一条对角线)的结果就取胜。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启发式策略的运用
在这里插入图片描述

启发信息和估价函数

在具体求解中,能够利用与该问题有关的信息来简化搜索过程,称此类信息为启发信息。
启发式搜索:利用启发信息的搜索过程。

求解问题中能利用的大多是非完备的启发信息:

(1)求解问题系统不可能知道与实际问题有关的全部信息,因而无法知道该问题的全部状态空间,也不可能用一套算法来求解所有的问题。
(2)有些问题在理论上虽然存在着求解算法,但是在工程实践中,这些算法不是效率太低,就是根本无法实现。
在这里插入图片描述

按运用的方法分类:

  1. 陈述性启发信息:用于更准确、更精炼地描述状态
  2. 过程性启发信息:用于构造操作算子
  3. 控制性启发信息:表示控制策略的知识

按作用分类:

  1. 用于扩展节点的选择,即用于决定应先扩展哪一个节点,以免盲目扩展。
  2. 用于生成节点的选择,即用于决定要生成哪些后继节点,以免盲目生成过多无用的节点。
  3. 用于删除节点的选择,即用于决定删除哪些无用节点,以免造成进一步的时空浪费。
    估价函数(evaluation function):估算节点“希望”程度的量度。
    估价函数值 f(n) :从初始节点经过 n节点到达目标节点的路径的最小代价估计值,其一般形式是
    在这里插入图片描述

g(n):从初始节点 S0 到节点 n 的实际代价 ;
h(n):从节点 n 到目标节点 Sg 的最优路径的估计代价,称为启发函数。
h(n) 比重大:降低搜索工作量,但可能导致找不到最优解;
h(n) 比重小:一般导致工作量加大,极限情况下变为盲目搜索,但可能可以找到最优解。

例5.7 八数码问题的启发函数:

启发函数1: 取一棋局与目标棋局相比,其位置不符的数码数目,例如 h(S0) = 5;
启发函数2: 各数码移到目标位置所需移动的距离的总和,例如 h(S0) =6;
启发函数3:对每一对逆转数码乘以一个倍数, 例如3倍,则h (S0) =3;
启发函数4:将位置不符数码数目的总和与3倍数码逆转数目相加,例如 h (S0) =8。
在这里插入图片描述

A搜索算法

A 搜索算法:使用了估价函数 f 的最佳优先搜索。
OPEN表:保留所有已生成而未扩展的状态;
CLOSED表:记录已扩展过的状态。
估价函数 f(n) = g(n) +h(n)
如何寻找并设计启发函数 h(n) ,然后以 f(n) 的大小来排列OPEN表中待扩展状态的次序,每次选择 f(n) 值最小者进行扩展。
g(n):状态n的实际代价,例如搜索的深度;
h(n):对状态n与目标“接近程度”的某种启发式估计。
在这里插入图片描述

A 算法流程图

在这里插入图片描述
例5.8 利用 A 搜索算法求解八数码问题,问最少移动多少次就可达到目标状态?
估价函数定义为 f(n) = g(n) + h(n )
g(n):节点 n 的深度,如 g (S0)=0。 h(n):节点 n 与目标棋局不相同的位数(包括空格),简称“不在位数”,如 h (S0)=5。
在这里插入图片描述

操作算子集: ↑, ↓, →, ←

在这里插入图片描述
问题:A搜索算法能不能保证 找到最优解(路径最短的解)?
g(n):从初始节点 S 到节点 n 的实际代价 ;
h(n):对状态n与目标节点接近程度的某种启发式估计
在这里插入图片描述

A*搜索算法及其特性分析

如果某一问题有解,那么利用A搜索算法对该问题进行搜索则一定能搜索到解,并且一定能搜索到最优的解而结束。
上例中的八数码A搜索树也是A
搜索树,所得的解路(s,B,E,I,K,L)为最优解路,其步数为状态L(5)上所标注的5 。

可采纳性

当一个搜索算法在最短路径存在时能保证找到它,就称该算法是可采纳的。
A搜索算法是可采纳的。
A
搜索算法( h(n)=0 )
在这里插入图片描述

单调性

A搜索算法并不要求g(n)=g(n),则可能会沿着一条非最佳路径搜索到某一中间状态。
如果对启发函数h(n)加上单调性的限制,就可以总从祖先状态沿着最佳路径到达任一状态。
如果某一启发函数h(n)满足:
1)对所有状态ni和nj,其中nj是ni的后裔,满足h(ni)-h(nj)<=cost(ni, nj),其中cost(ni, nj)是从ni到nj的实际代价。
2)目的状态的启发函数值为0。
则称h(n)是单调的。
A*搜索算法中采用单调性启发函数,可以减少比较代价和调整路径的工作量,从而减少搜索代价。

信息性

在两个A启发策略的h1和h2中,如果对搜索空间中的任一状态n都有h1(n) ≤ h2(n),就称策略h2比h1具有更多的信息性。
如果某一搜索策略的h(n)越大,则A
算法搜索的信息性越多,所搜索的状态越少。
但更多的信息性需要更多的计算时间,可能抵消减少搜索空间所带来的益处。
欢迎大家加我微信交流讨论(请备注csdn上添加)
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程子的小段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值