深度优先,广度优先和迭代加深搜索算法

1. 深度优先搜索(DFS):算法总是能尽可能快的抵达搜索树的底层。

n 皇后问题的空间复杂度为 O(n)如果搜索树有 d 层,每个节点有 c 个子节点,时间复杂度与c^d成正比。

如USACO的1.4节的mother's milk(题目链接:http://train.usaco.org/usacoprob2?a=f7wbGbrI2kF&S=milk3)即可用DFS解答。其时间复杂度为O(6^c)。

下图所示为三个容积分别是2,5,10时的深度图,其中每个节点有6个子节点(即六种不同倒法)。

深度优先,广度优先和迭代加深搜索算法_第1张图片

2. 广度优先搜索(BFS):每次都先将搜索树某一层的所有节点全部访问完毕后再访问下一层。

广度优先搜索的空间复杂取决于每层的节点数。如果搜索树有 k 层,每个节点有 c 个子节点,那么最后将可能有 c^k 个数据被存入队列 


3. 迭代加深搜索(ID):广度优先搜索可以用迭代加深搜索代替。迭代加深搜索实质是限定下界的深度优先搜索,即首先允许深度优先搜索搜索 k 层搜索树,若没有发现可行解,再将 k+1 后再进行一次以上步骤,直到搜索到可行解。这个“模仿广度优先搜索”搜索法比起广搜是牺牲了时间,但节约了空间。

你可能感兴趣的:(算法)