B。
广度优先搜索相当于层次遍历,深度优先搜索相当于先序优先遍历,所以答案选择B。
邻接表表示的图的广度优先搜索一般采用队列结构来实现算法:
首先选择一个起始节点,把它的临界表中节点加入到队列中,每次取出队首元素,然后把该元素的邻接表中的节点加入到队列末尾,标记已遍历过的节点,直到队列中没有节点为止,一般栈用于深度优先搜索,队列用于广度优先搜索。
扩展资料:
深度优先搜索用一个数组存放产生的所有状态。
(1) 把初始状态放入数组中,设为当前状态;
(2) 扩展当前的状态,产生一个新的状态放入数组中,同时把新产生的状态设为当前状态;
(3) 判断当前状态是否和前面的重复,如果重复则回到上一个状态,产生它的另一状态;
(4) 判断当前状态是否为目标状态,如果是目标,则找到一个解答,结束算法。
参考资料来源:百度百科-深度优先搜索
B。
广度优先搜索相当于层次遍历,深度优先搜索相当于先序优先遍历,所以答案选择B。
邻接表表示的图的广度优先搜索一般采用队列结构来实现算法:
首先选择一个起始节点,把它的临界表中节点加入到队列中,每次取出队首元素,然后把该元素的邻接表中的节点加入到队列末尾,标记已遍历过的节点,直到队列中没有节点为止,一般栈用于深度优先搜索,队列用于广度优先搜索。
扩展资料:
所有的搜索算法从其最终的算法实现上来看,都可以划分成两个部分,控制结构和产生系统。正如前面所说的,搜索算法简而言之就是穷举所有可能情况并找到合适的答案,所以最基本的问题就是罗列出所有可能的情况,这其实就是一种产生式系统。
我们将所要解答的问题划分成若干个阶段或者步骤,当一个阶段计算完毕,下面往往有多种可选选择,所有的选择共同组成了问题的解空间,对搜索算法而言,将所有的阶段或步骤画出来就类似是树的结构。
从根开始计算,到找到位于某个节点的解,回溯法(深度优先搜索)作为最基本的搜索算法,其采用了一种“一只向下走,走不通就掉头”的思想(体会“回溯”二字),相当于采用了先根遍历的方法来构造搜索树。
参考资料来源:百度百科-深度优先搜索
B
广度优先搜索使用队列(queue)来实现,整个过程也可以看做一个倒立的树形:
1、把根节点放到队列的末尾。
2、每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。
3、找到所要找的元素时结束程序。
4、如果遍历整个树还没有找到,结束程序。
扩展资料
队列的基本运算
1、初始化队列:Init_Queue(q),初始条件:队q不存在。操作结果:构造了一个空队;
2、入队操作:In_Queue(q,x),初始条件:队q存在。操作结果:对已存在的队列q,插入一个元素x到队尾,队发生变化;
3、出队操作:Out_Queue(q,x),初始条件:队q存在且非空,操作结果:删除队首元素,并返回其值,队发生变化;
4、读队头元素:Front_Queue(q,x),初始条件:队q存在且非空,操作结果:读队头元素,并返回其值,队不变;
5、判队空操作:Empty_Queue(q),初始条件:队q存在,操作结果:若q为空队则返回为1,否则返回为0。
参考资料来源:百度百科——宽度优先搜索
参考资料来源:百度百科——队列
邻接表表示的图的广度优先搜索一般采用队列结构来实现算法:
首先选择一个起始节点,把它的临界表中节点加入到队列中,每次取出队首元素,然后把该元素的邻接表中的节点加入到队列末尾,标记已遍历过的节点,直到队列中没有节点为止
一般栈用于深度优先搜索,队列用于广度优先搜索
所以答案选择B