关于Informed Search

Informed Search,又称启发式搜索,是一种基于评估函数的智能搜索方法。文章详细介绍了Best-First Search、Beam Search、A* Search、Iterative-Deepening A* (IDA*)、Simplified Memory-Bounded A* (SMA*)、D*算法及其变体,以及它们在解决复杂问题中的应用和优缺点。A*算法因其最优性和效率,成为了Informed Search中最重要的算法之一。
摘要由CSDN通过智能技术生成

所谓Informed Search,就是带有智慧决策的搜索,就像它的名字一样,它是informed,消息灵通的,它能根据最新情况而重新选择搜索。Informed Search也可以叫Heuristic Search,启发式搜索。正如上一篇提到的机器人、汽车导航、打魔兽,这些都是运用了Heuristic的搜索。

 

何为HeuristicHeuristic应该算一条引导你进入最佳选择的规则,它决定了状态空间中一个状态的质量,引导你每次都选择质量最好(或较好)的状态,一步步走向最佳方案。

Heuristic就是一种度量,它通过一个估价函数来表示。

f(n) = g(n) + h(n)

其中h(n)就是heuristic函数,g(n)cost估算函数。g(n)表示从初始节点到当前节点所需的开销(例如可以用路径的长度/权来表示),而h(n)表示从当前节点到目标节点还剩的差距(有多种表示方法,比如可以用当前状态与目标状态Conflicts的个数来表示),g(n)h(n)两者共同决定了f(n),即一个状态的质量/估价。有时为了区分g(n)h(n)的权重,也可以在前面加上常系数,即表示为

f(n)=α*g(n) +β*h(n)

 

 

下面来介绍几种Informed Search算法

 

1.     Best-First SearchBEST-FS

这个应该算Informed Search中最基本的方法,基本思想如下

有一个OPEN List和一个CLOSED ListCLOSED List就是一个普通的队列,里面存放所有访问过的节点(也就是说这些节点不会被再次访问了),而OPEN List是一个优先队列,里面存放所有已访问过的节点的后继节点(即待访问的节点),OPEN List根据节点的f(n)值调整为最小堆。

1)将初始节点插入OPEN List

 OPEN List非空时

2)从OPEN List出堆,放入CLOSED List中,如果该节点即为目标节点则算法结束(backtracking路径)

3)扩展该节点的所有后继节点

对每一个后继节点,若后继节点不在CLOSED中,则把它插入OPEN List

 

注意,这里同样每次扩展后继节点插入OPEN List前,要将后继节点的parent指针指向当前节点。每次节点插入OPEN List后,堆会根据f(n)值进行一次调整操作。

 

之前介绍过的Uniform-Cost SearchUCS)其实可以算Best-First Search的一种特例,其中f(n)=g(n)g(n)为到达当前节点的路径长度。Breadth-First SearchBFS)也是它的一个特例,其中f(n)=h(n)h(n)为距离目标节点的深度。Best-First Search可视为多种估价函数的组合搜索。

 

2.     Beam Search

这个算法其实是Best-First Search的一个变体而已,由于Best-First Search算法中,每个节点的所有未曾出现过的后继节点都要被放入OPEN list中,随着深度的增加,空间开销势必会呈指数级膨胀。为了减少空间的开销,Beam Search限制了OPEN List的大小,它只保存好一些质量比较好的节点(f(n)值比较低的),而抛弃那些f(n)值较高的不太可能会是最佳方案的节点。这样做虽然大大提高了空间效率,但势必会有潜在的最佳方案由于当前f(n)值不理想而被丢弃了。所以说Beam Search算法是不完全的(Best-First Searchcomplete的),一般适用于大规模并且空间不充足的系统中。

 

3.     A* SearchA-star Search

A*算法是对Best-First Search的改良,Best-First Search虽然是完全的,但势必不是最优的。我们可以这样想,Best-First算法中,每次扩展出的后继节点只要不在CLOSED List

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值