赞
踩
不一致的搜索策略只使用问题定义中可用的信息
扩展最浅的未扩展节点
实施:边缘结点是一个FIFO队列,即,新来的后继放在末尾
时间复杂度 :BFS算法的时间复杂度可以通过BFS中遍历的节点数来获得,直到最浅的节点。其中 d= 最浅解的深度,b是每个状态的节点。
空间复杂度: O ( b d + 1 ) O(b ^{d+1}) O(bd+1)(keeps every node in memory)
完整性:BFS完成,这意味着如果最浅的目标节点处于某个有限的深度,那么BFS将找到解决方案。
最优性:如果路径成本是节点深度的非递减函数,则BFS是最优的。
空间是个大问题;可以轻松地以100MB/秒的速度生成节点,因此24小时=8640GB。
- 迭代加深的深度优先搜索是DFS和BFS算法的组合。此搜索算法找出最佳深度限制,并通过逐渐增加限制直到找到目标为止。迭代加深(Iterative deepening)搜索,实质上就是限定下界的深度优先搜索。即首先允许深度优先搜索K层搜索树,若没有发现可行解,再将K+1后重复以上步骤搜索,直到搜索到可行解。
- 在迭代加深搜索的算法中,连续的深度优先搜索被引入,每一个深度约束逐次加1,直到搜索到目标为止。
- 迭代加深搜索算法就是仿广度优先搜索的深度优先搜索。既能满足深度优先搜索的线性存储要求,又能保证发现一个最小深度的目标结点。
- 从实际应用来看,迭代加深搜索的效果比较好,并不比广度优先搜索慢很多,但是空间复杂度却与深度优先搜索相同,比广度优先搜索小很多,在一些层次遍历的题目中,迭代加深不失为一种好方法!
- 该算法执行深度优先搜索直到某个“深度限制”,并且在每次迭代之后它不断增加深度限制,直到找到目标节点。
- 此搜索算法结合了广度优先搜索的快速搜索和深度优先搜索的内存效率的优势。当搜索空间很大并且目标节点的深度未知时,迭代搜索算法对于无知搜索是有用的。
检测不到重复状态可能会将线性问题变成指数问题!
避免探索冗余路径的方法是牢记曾经走过的路。
为了做到这一点,我们给TREE-SEARCH搜索树算法增加一个参数–这个数据结构称为探索集(也被称为 closed 表),用它记录每个已扩展过的结点。
新生成的结点若与已经生成的某个结点相匹配的话–即是在探索集中或是边缘集中-那么它将被丢弃而不是被加入边缘集中。
新算法叫 GRAPH-SEARCH,图搜索
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。