您的位置:首页 > 大数据 > 人工智能

人工智能3:通过搜索进行问题求解

2016-03-29 16:08 531 查看
形式化、搜索、执行。

一、形式化

1. 初始状态

2. 可能行动

3. 转移模型

4. 目标测试

5. 路径耗散

二、算法性能

1. 完备性

2. 最优性

3. 时间复杂度

4. 空间复杂度

三、无信息搜索策略

1. 宽度优先搜索

先扩展根结点,接着扩展根结点的所有后继,然后再扩展它们的后继。一般地,在下一层的任何结点扩展之前,搜索树上本层深度的所有结点都应该已经扩展过。使用FIFO队列。

性能:完备的、最优的。时间和空间需求太大。

2. 一致代价搜索

扩展的是路径消耗g(n)最小的结点n,也就是对任何单步代价函数都是最优的算法。可以通过将边缘结点集组合成按g值排序的队列来实现。目标检测应用于结点被选择扩展时,而不是生成时。也就是要先算所有的代价值。

性能:如果没有为0的代价就是完备的。最优的。时间和空间消耗比宽度优先搜索还要打。

3. 深度优先搜索

总是扩展搜索树的当前边缘结点集中最深的结点。使用LIFO队列。最新生成的结点最早被选择扩展。效率严重依赖于使用图搜索还是树搜索。

性能:图搜索是完备的,树搜索不完备。不是最优的。时间复杂度受限于状态空间的规模。空间复杂度性能非常好。当状态空间分支因子为b最大深度为m,只需存储O(bm)个结点。

一种变形:回溯搜索。所用内存空间更少。

4. 深度受限搜索

解决了无穷路径的问题。

性能:不完备。不是最优的。

5. 迭代加深的深度优先搜索

经常和深度优先搜索结合使用来确定最好的深度界限。做法是不断增大深度限制,直到找到目标。

6. 双向搜索

同时运行两个搜索,一个从初始状态向前搜索同时另一个从目标状态向后搜索,希望它们在中间某点相遇。可以这样实现:目标测试替换为检查两个方向的搜索的边缘结点集是否相交;如果交集不为空就找到了一个解。

四、有信息(启发式)搜索策略

最佳优先搜索,结点是基于评价函数f(n)值被选择扩展的。大多数的最佳优先搜索算法的f由启发函数构成:

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

1. 贪婪最佳优先搜索

试图扩展离目标最近的结点,理由是这样可能可以很快找到解。只用启发式信息,即f(n)=h(n)。

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

它对结点的评价结合了g(n),即到达此结点已经花费的代价,和h(n),从该结点到目标结点所化代价:f(n)=g(n)+h(n)=经过结点n的最小代价解的估计代价。

保证最优性的条件:(1)h(n)是一个可采纳启发式,指它从不会过高估计到达目标的代价。(2)一致性:就是三角不等式,一条边长度不大于另两条边之和。

3. 存储受限的启发式搜索

迭代加深A*(IDA*)算法。和典型的迭代加深算法的主要区别是所用的截断值是f代价(g+h)而不是搜索深度。

递归最佳优先搜索(RBFS)。MA*和SMA*算法。这几种是鲁棒的、最优的搜索算法,它们使用有限的内存;只要时间充足,它们能求解A*算法因为内存不足不能求解的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: