人工智能学习(三):通过搜索进行问题求解——有信息搜索

目录

引言

2.1 贪婪最佳优先搜索

2.2 贪婪最佳优先搜索 V.S. 一致代价搜索

2.3 A*搜索:缩小总评估代价

2.4 A*搜索和一致代价搜索的直观比较

2.5 五种搜索算法的直观比较

2.6 可接受的启发式方法

2.7 局部搜索算法

2.7.1 局部搜索算法

2.7.2 爬山算法


引言

有信息搜索又称为启发式搜索

使用问题本身的定义之外的特定知识——比无信息的搜索策略更有效地进行问题求解。

最佳优先搜索(best-first search):

我们要考虑的一般算法称为最佳优先搜索。 最佳优先搜索结点是基于评价函数f(n)值被选择扩展的。评估函数被看作是代价估计,因此评估值最低的结点被选择首先进行扩展。

最佳优先图搜索的实现与一致代价搜索类似,不过最佳优先是根据f值而不是g值对优先级队列排队。

启发函数(heuristic function):

f的选择决定了搜索策略(深度优先搜索是最佳优先树搜索的特殊情况)。大多数的最佳优先搜索算法的f由启发函数构成:

h(n)=结点n到目标结点的最小代价路径的代价估计值

(要注意的是h(n)以结点为输入,但它与g(n)不同,它只依赖于结点状态)。

若n是目标结点,则h(n)=0。 

启发式函数常用的测距方法

曼哈顿距离

两点之间沿着坐标轴方向的累积距离d=(x_1-x_2) + (y_1-y_2)

欧几里得距离

两点之间的直线距离d = \sqrt{(x_1-x_2)^2 +(y_1-y_2)^2}


描述一下下面使用的问题情景

在地图中寻找起始城市到达目标城市的路径。如未指明,起始城市默认为:Arad;目标城市默认为:Bucharest。 

启发式函数h(n)默认使用直线距离:

2.1 贪婪最佳优先搜索

贪婪最佳优先搜索(greedy best-first search):

贪婪最佳优先搜索试图扩展离目标最近的结点,理由是这样可能可以很快找到解。

启发函数:

只用启发式信息,即f(n)= h(n)


将此算法应用在罗马尼亚问题中;使用直线距离启发式,记为h_{SLD}。 如果目的地是Bucharest,我们需要知道到达Bucharest的直线距离,如图所示。h_{SLD}不能由问题本身的描述计算得到。而且,由经验可知h_{SLD}和实际路程相关,因此这是一个有用的启发式。 

下图给出了使用h_{SLD}的贪婪最佳优先搜索寻找从AradBucharest的路的过程:

  1. Arad出发最先扩展Sibiu,因为与ZerindTimisoara相比,它距离Bucharest最近。
  2. 下一个扩展的结点是Fagaras,因为它是离目标最近的。
  3. Fagaras接下来生成了Bucharest,也就是目标结点。


完备性:贪婪最佳优先搜索不是完备的。

贪婪最佳优先搜索与深度优先搜索类似,即使是有限状态空间,它也是不完备的。考虑从lasiFagaras

理想状态下,启发式建议先扩展Neamt,因为它离Fagaras最近,但是这是个死胡同。解法是先到Vaslui——根据启发式这是离目标较远的一步,然后继续前往UrziceniBucharestFagaras

然而,算法始终找不到这个解,因为扩展Neamt则将

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值