1、深度优先算法占内存少但速度较慢,广度优先算法占内存多但速度较快,在距离和深度成正比的情况下能较快地求出最优解。
2、深度优先与广度优先的控制结构和产生系统很相似,唯一的区别在于对扩展节点选取上。由于其保留了所有的前继节点,所以在产生后继节点时可以去掉一部分重复的节点,从而提高了搜索效率。
3、这两种算法每次都扩展一个节点的所有子节点,而不同的是,深度优先下一次扩展的是本次扩展出来的子节点中的一个,而广度优先扩展的则是本次扩展的节点的兄弟点。在具体实现上为了提高效率,所以采用了不同的数据结构。
深度优先算法 首先我们来想象一只老鼠,在一座不见天日的迷宫内,老鼠在入口处进去,要从出 口出来。那老鼠会怎么走?当然是这样的:老鼠如果遇到直路,就一直往前走,如果遇到分叉路口,就任意选 择其中的一个继续往下走,如果遇到死胡同,就退回到最近的一个分叉路口,选择另一条道路再走下去,如果 遇到了出口,老鼠的旅途就算结束了。深度优先搜索法的基本原则就是这样:按照某种条件往前试探搜索,如 果前进中遭到失败(正如老鼠遇到死胡同)则退回头另选通路继续搜索,直到找到条件的目标为止。
广度优先算法(Breadth-First-Search),又称作宽度优先搜索,或横向优先搜索,简称BFS,是一种圆形搜索演算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止。广度优先搜索的实现一般采用open-closed表。
研制出理想中的人工智能是我一生中的终极目标,本人现在高二,但却不知想学习人工智能到大学应该选什么专业,听说要到研究生才开始学,那本科生怎么办,望楼主指导一番
我也是在自学《人工智能基础教程》看到深度和广度优先算法时不解才百度到你的问题的,书上说广度优先算法优点是一定能找到最优解,但效率低,组合爆炸问题难以解决,深度优先算法是节省了大量的时间和空间,但不一定能找到最优解,因为在深度无限搜索树情况下可能不能停机。本人不解在深度优先搜索时不是要对每一个队列搜索到底然后再开始另一列的搜索吗?这怎么还会节省大量时间和空间呢???还有若最优解在搜索书的某无限队列的后端,则广度优先搜索不照样不能找到最优解吗?实在不解啊!!!!!