基于 慕课->浙江大学 -> 人工智能:模型与算法 -> 第二章 搜索求解
**搜索指的是:**从海量信息源中,利用约束条件及额外信息来求出问题所对应的答案
一、启发式算法(个人感觉,学过数据结构来看这个会更简单)
以搜寻最短路径问题为例
问题:求 A->O 的一条最短路径
辅助信息为:
基于本问题解释几个定义:
1.状态:求 A->0 的一条最短路径 此为初始状态
2.动作:从 A 走到 B
3.状态转移:走到 B 此时的状态
4.路径: A->O 所能走的路
5.目标测试:当前求解状态,是否拿到最优
启发式算法又称有信息搜索,需要有与所求问题相关的辅助信息
评价函数 f(n) | 用于选择后续节点 |
---|---|
启发函数h(n) | 从当前节点与目标节点所形成路径的最小值 |
算法一:贪婪优先算法( Greedy best-first search )
其评价函数 = 启发函数 [ f(n) = h(n) ]
过程如图:
不足之处:
1) 不完备,可能随着一条路走到头,不回来做其他尝试, 不一定是最优的
2)时间复杂度与空间复杂度为
O
(
b
m
)
\ O(b^{m})
O(bm)
算法二:A* 算法
要求:h(n)——可容的(不会因过高的估计从节点n到目标节点之间的实际开销代价,即 <= 实际开销)、单调的
过程如图:
理论部分完成,相应代码待续。