📅  最后修改于: 2020-09-23 08:32:25             🧑  作者: Mango
不知情的搜索是一类以暴力方式运行的通用搜索算法。无知的搜索算法除了如何遍历树外没有其他有关状态或搜索空间的信息,因此也称为盲搜索。
以下是各种类型的无信息搜索算法:
优点:
缺点:
在下面的树结构中,我们显示了使用BFS算法从根节点S到目标节点K遍历树的过程。BFS搜索算法在层中遍历,因此它将遵循虚线箭头所示的路径,并且遍历的路径将是:
S---> A--->B---->C--->D---->G--->H--->E---->F---->I---->K
时间复杂度:BFS算法的时间复杂度可以通过在BFS中遍历到最浅节点的节点数来获得。d=最浅解的深度,b是每个状态下的节点。
T(b)=1+b2+b3+…….+bd=O(bd)
空间复杂度:BFS算法的空间复杂度由边界的内存大小O(bd)给出。
完整性:BFS是完整的,这意味着如果最浅的目标节点处于某个有限深度,则BFS将找到解决方案。
最优性:如果路径成本是节点深度的不变函数,则BFS最优。
注意:回溯是一种使用递归查找所有可能解的算法技术。
优点:
坏处:
在下面的搜索树中,我们显示了深度优先搜索的流程,其顺序如下:
根节点—>左节点—->右节点。
它将从根节点S开始搜索,然后遍历A,然后遍历B,然后遍历D和E,遍历E之后,它将回溯树,因为E没有其他后继,并且仍然找不到目标节点。回溯之后,它将遍历节点C,然后遍历G,在这里它将终止,因为它找到了目标节点。
完整性:DFS搜索算法在有限的状态空间内是完整的,因为它将扩展有限搜索树中的每个节点。
时间复杂度:DFS的时间复杂度将等于算法遍历的节点。它由下式给出:
T(n)=1+n2+n3+………+nm=O(nm)
其中,m=任何节点的最大深度,并且可以远大于d(最浅的解决方案深度)
空间复杂度:DFS算法仅需要存储从根节点开始的单个路径,因此DFS的空间复杂度等于边缘集的大小,即O(bm)。
最佳:DFS搜索算法不是最佳算法,因为它可能会生成大量步骤或到达目标节点的成本较高。
深度限制搜索算法类似于具有预定限制的深度优先搜索。深度限制搜索可以解决深度优先搜索中无限路径的缺点。在该算法中,深度限制的节点将被视为没有进一步的后续节点。
深度限制搜索可以通过以下两种失败条件终止:
优点:
深度限制搜索可提高内存效率。
缺点:
完整性:如果解超出深度限制,则DLS搜索算法已完成。
时间复杂度:DLS算法的时间复杂度为O(bℓ)。
空间复杂度:DLS算法的空间复杂度为O(b×ℓ)。
最佳:深度限制搜索可以视为DFS的一种特殊情况,即使ℓ>d,也不是最佳选择。
均匀成本搜索是用于遍历加权树或图形的搜索算法。当每个边缘的可用成本不同时,该算法就会发挥作用。统一成本搜索的主要目标是找到通往目标节点的路径,该路径具有最低的累积成本。均匀成本搜索根据节点的路径成本从根节点扩展节点。它可以用于求解需要最佳成本的任何图/树。优先级队列实现统一成本搜索算法。它为最低的累计成本提供了最高的优先级。如果所有边的路径成本相同,则均匀成本搜索等效于BFS算法。
优点:
缺点:
完整性:
统一成本搜索已经完成,例如,如果有解决方案,UCS将找到它。
时间复杂度:
令C*为最优解的成本,而ε为接近目标节点的每一步。那么步数为=C*/ε+1。从状态0开始到C*/ε,这里取+1。
因此,均匀成本搜索的最坏情况下的时间复杂度为O(b1+[C*/ε])/。
空间复杂度:
空间复杂度的逻辑相同,因此,均匀成本搜索的最坏情况下的空间复杂度为O(b1+[C*/ε])。
最佳:
均匀成本搜索始终是最佳选择,因为它仅选择路径成本最低的路径。
迭代加深算法是DFS和BFS算法的组合。该搜索算法找出最佳的深度极限,并通过逐渐增加极限直到找到目标为止。
该算法执行深度优先搜索直到某个“深度限制”,并且在每次迭代之后一直增加深度限制,直到找到目标节点为止。
该搜索算法结合了广度优先搜索的快速搜索和深度优先搜索的存储效率的优点。
当搜索空间很大且目标节点的深度未知时,迭代搜索算法是有用的无信息搜索。
优点:
缺点:
接下来的树形结构显示了迭代加深深度优先搜索。IDDFS算法执行各种迭代,直到找不到目标节点为止。该算法执行的迭代为:
第1次迭代->A第2次迭代->A,B,C第3次迭代——>A,B,D,E,C,F,G4第三次迭代—>A,B,D,H,I,E,C,F,K,G在第四次迭代中,算法将找到目标节点。
完整性:
如果分支因子是有限的,则该算法是完整的。
时间复杂度:
假设b是分支因子,深度是d,则最坏情况下的时间复杂度是O(bd)。
空间复杂度:
IDDFS的空间复杂度将为O(bd)。
最佳:
如果路径成本是节点深度的非递减函数,则IDDFS算法是最佳的。
双向搜索算法运行两次同时搜索,一种是从初始状态称为正向搜索,另一种是从目标节点开始向后搜索,以找到目标节点。双向搜索将一个单独的搜索图替换为两个小子图,其中一个从子顶点开始搜索,另一个从目标顶点开始搜索。当这两个图彼此相交时,搜索将停止。
双向搜索可以使用BFS,DFS,DLS等搜索技术。
优点:
缺点:
在下面的搜索树中,应用了双向搜索算法。该算法将一个图/树分成两个子图。它从节点1开始向前移动,并从目标节点16开始向后移动。
该算法在两个搜索相遇的节点9处终止。
完整性:如果我们在两个搜索中均使用BFS,则双向搜索即告完成。
时间复杂度:使用BFS进行双向搜索的时间复杂度为O(bd)。
空间复杂度:双向搜索的空间复杂度为O(bd)。
最佳:双向搜索为最佳。