相同:
1,这两种方式都是盲目的搜索,只有在搜索空间小于计算机内存时才具有可行性。
2,两种方式都有open集合和closed集合,open集合用来存储将要访问的节点,closed集合存储访问过的节
点。
3,两种方式的平均时间复杂度都是O(b^d).其中b是分支因子,d是搜索深度。
4,两种访问方式都要涉及到在closed集合中查找节点是否已经访问过,对closed集合采用不同的数据结构
存储有不同的性能,线性查找需要O(n)的时间复杂度,散列查找则需要常数的时间复杂度。
区别:
1,很明显的搜索策略不同,一个是深度,一个是广度^-^,这个大家都知道~
2,深度优先搜索需要使用栈来存储open集合,添加和删除操作只需要常数时间,广度优先搜索需要使用队
列来存储open集合,添加和删除操作只需要常数时间。
3,深度优先搜索中栈只需要存储b*d个状态节点。广度优先搜索则存储b^d个状态节点。所以两种搜索方式
的存储规模不同。
4,深度优先搜索可以找到到目标状态的多条路径,广度优先搜索则保证找到的是到目标状态的最短路径。
注:如果搜索的是树,则深度优先搜索等价先根遍历,广度优先搜索等价层次遍历。