无信息搜索算法:指算法除了问题定义本身没有任何其他信息;
有信息搜索算法:可以利用给定的知识引导更有效地找到解。
3.1 问题求解Agent
1)问题形式化:在给定目标下确定需要考虑哪些行动和状态的过程;
2)搜索:寻找一组解决问题的行动序列的过程称为搜索,搜索算法的输入是问题,输出是问题的解,以行动序列的形式返回问题的解;
3)问题形式化描述:
a)Agent的初始状态;
b)描述Agent的可能行动;
c)对每个行动的描述(转移模型);
d)目标测试(确定给定的状态是否为目标状态);
e)路径耗散(边加权)。
4)抽象:除去细节的过程被称为抽象。如果执行解中的每个行动比原始问题中的容易,那么这种抽象是有用的;
3.2 问题实例
1)任何实用算法都必须避免搜索全部状态空间,只能搜索状态空间中的很小一部分。
3.3 通过搜索求解
1)边缘(开结点表):在任一给定时间点,所有待扩展的叶节点的集合;
2)一般搜索算法如下图
对与graph_search的另一个特点:边缘将状态空间图分成了已探索区域和未被探索区域,因此从初始状态出发至任一未被探索状态的路径都不得不通过边缘中的结点,如下图示。
3)评价算法性能:
a)完备性:当问题有解时,这个算法是否能保证找到解;
b)最优性:搜索策略能够找到最优解;
c)时间复杂度:找到解需要花费多长时间;
d)空间复杂度:在执行搜索的过程中需要多少内存。
3.4 无信息搜索策略
无信息搜索(盲目搜索):除了问题定义中提供的状态信息外没有任何附加信息的搜索。
注:当搜索空间较大并且不知道解所在深度时,迭代加深的深度优先搜索是首选的无信息搜索方法。
1) 宽度优先搜索:
a) 概念:先扩展根结点,接着扩展根结点的所有后记,然后再扩展它们的后继。
b) 评价:完备的(分支因子有限时);最优的(如果路径代价是基于结点深度的非递减函数);时间复杂度O(b^d)(如果目标检测是在选择扩展的结点时,如果按下图算法时间复杂度将下降接近一层结点数);空间复杂度O(b^d)(有O(b^(d-1))个结点在搜索集中,O(b^d)个结点在边缘集中)。
2) 一致代价搜索:
a) 概念:扩展的是路径消耗g(n)最小的结点n(目标检测在结点选择扩展时)。
b) 评价:完备的(如果每一步代价都杜宇等于某个小的正值常数);最优的;时间复杂度和空间复杂度在最坏情况均比宽度优先搜索大(因为可能搜索一些对结果无用的树,一致代价搜索可能会检查目标深度所有结点看谁的代价小,在这种情况下一致搜索在深度d无意义地做了更多的工作)。
3) 深度优先搜索:
a) 概念:总是扩展搜索树的当前边缘结点集中最深的结点;
b) 评价:完备的(如果是图搜索)|不完备的(如果是树搜索,可能会陷入死循环);不是最优的;时间复杂度O(b^m)受限于状态空间的规模(可能是无限的);空间复杂度O(bm)(只需要存储一条从根结点到叶结点的路径,以及该路径上每个结点的所有未扩展的兄弟结点);
c) 变形——回溯搜索:空间复杂度O(m)(每次只产生一个后继而不是生成所有后继,每个被部分扩展的结点要记住下一个要生成的结点);
4) 深度受限搜索:
a) 概念:在深度优先搜索基础上设置界限l来避免无限状态空间深度优先搜索失败的问题;
b) 评价:完备的(l大于d)|不完备的(l小于d);不是最优的;时间复杂度O(b^l);空间复杂度O(bl);
5) 迭代加深的深度优先搜索:
a) 概念:可以理解成广搜+深搜;一开始最大深度限制为0,接着为1,然后为2,依此类推知道找到目标,因此推到最浅的目标结点所在深度时就能找到目标结点;
b) 评价:完备的(分支因子有限时);最优的(如果路径代价是基于结点深度的非递减函数);时间复杂度O(b^d);空间复杂度O(b^d);
6) 迭代加长搜索:
a) 概念:可以理解成一致代价搜索+深搜,将迭代加深的深度优先搜索的深度界限换成路径代价界限。
7) 双向搜索:
a) 概念:同时运行两个搜索,一个从初始状态向前搜索同时另一个从目标状态向后搜索;
b) 评价:完备的;最优的(但需要额外搜索);时间复杂度O(b^(d/2));空间复杂度O(b^(d/2));
3.5 有信息(启发式)的搜索策略
有信息搜索:使用问题本身的定义之外的特定知识进行搜索。
h(n) = 结点n到目标结点的最小代价路径的代价估计值
1) 贪婪最佳优先搜索:
a) 概念:试图扩展离目标最近的结点,f(n) = h(n);
b) 评价:不完备的(对于树搜索以及无限状态空间的图搜索)|完备的(对于有限状态的图搜索);不是最优的;时间复杂度O(b^m);
2) A*搜索:
a) 概念:f(n) = g(n) + h(n),经过结点n的最小代价解的估计代价;
b) 评价:完备的;最优的;效率最优的;时间复杂度和空间复杂度都较高;
c) 最优性证明=可采纳性(树搜索最优)和一致性(图搜索最优)证明:
i. 可采纳启发式是指它从不会过高估计到达目标的代价,f(n) = g(n) + h(n),而h(n)为直线距离,肯定小于等于实际距离,可以得证;
ii. 一致性(单调性),如果对于每个结点n和通过任一行动a生成的n的每个后继节点n’,存在三角不等式为从结点n到达目标的估计代价不大于从n到n’的单步代价与从n’到达目标的估计代价之和:h(n) <= c(n,a,n’) + h(n’),那么有f(n’) = g(n’) + h(n’) = g(n) + c(n,a,n’) + h(n’) >= g(n) + h(n) = f(n),因此沿着任何路径的f(n)值是非递减的,一致性得证;
3) **存储受限的启发式搜索
a) (IDA*)迭代加深A*算法(将截断值换成f代价(g+h)而不是搜索深度);
b) (RBFS)递归最佳优先搜索算法;如果启发式函数可采纳,就是最优的;
c) (MA*)内存受限A*算法;
d) (SMA*)简化的MA*:扩展最新的最佳叶结点,删除最老的最差叶结点;完备的;最优的(如果最优解可达);
3.6 启发式函数
1)有效分支因子b*: N+1 = 1 + b* + (b*)^2 + … + (b*)^d,所得b*越小算法性能越好;
2)松弛问题:减少了行动限制的问题;松弛问题的状态空间图是原有状态空间图的超图,原因是减少限制导致图中边的增加;