转载:https://blog.csdn.net/ncepuzhuang/article/details/8944991
一、深度优先搜索与广度优先搜索算法有何区别
- 深度优先搜索算法不全部保留结点,扩展完的结点从数据存储结构栈中弹出删去,在栈中存储的结点数就是解空间树的深度,因此它占用空间较少。所以,当搜索树的结点较多,用其它方法易产生内存溢出时,深度优先搜索不失为一种有效的求解方法。
- 广度优先搜索算法,一般需存储产生所有结点,占用的存储空间要比深度优先搜索大得多,因此,程序设计中,必须考虑溢出和节省内存空间的问题。但广度优先搜索法一般无回溯操作(即入栈和出栈的操作),所以运行速度比深度优先搜索要快些。
二、回溯与分支限界区别
回溯法:当沿一条路径走到底时,无法继续前进,退回上一结点,查看是否具体其他路径,有则继续查找,若没有则继续往上层结点回退.
1、采用的算法不同:回溯法以深度优先的方式搜索解空间树T,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树T。
2、它们在问题的解空间树T上搜索的方法不同,适合解决的问题也就不同。一般情况下,回溯法的求解目标是找出T中满足约束条件的所有解的方案,而分支限界法的求解目标则是找出满足约束条件的一