深度优先遍历和广度优先遍历

21120
洛倾颜 本站内容提供者
我要投稿

一、指代不同 1、深度优先遍历:是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。 2、广度优先遍历:系统地展开并检查图中的所有节点,以找寻结果。

二、特点不同1、深度优先遍历:所有的搜索算法从其最终的算法实现上来看,都可以划分成两个部分──控制结构和产生系统。

正如前面所说的,搜索算法简而言之就是穷举所有可能情况并找到合适的答案,所以最基本的问题就是罗列出所有可能的情况,这其实就是一种产生式系统。2、广度优先遍历:并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。三、算法不同1、深度优先遍历:把根节点压入栈中。每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中。

并把这个元素记为它下一级元素的前驱。找到所要找的元素时结束程序。如果遍历整个树还没有找到,结束程序。

2、广度优先遍历:把根节点放到队列的末尾。每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。

找到所要找的元素时结束程序。如果遍历整个树还没有找到,结束程序。

深度优先搜索遍历和广度优先搜索的遍历序列及具体步骤和原因,

1->2->3->4 (表示1可达到2,达到3,达到4)2->1->3->53->1->2->4->5->64->1->3->65->2->3->66->3->4->5广度优先搜索就是把每一行按照顺序输出,去掉重复的,即先看1,有1,2,3,4,然后看2,因为有3,4了,所以只要5,然后看3,以此类推。

深度优先搜索,是先看1,然后1可以到2,然后直接看2,2可以到3,5随便选一个都可以,我们到3好了,然后看3的那行可以到1,2,4,5,6随便选一个都可以,不过要去掉重复的,以此类推。可以排出很多种的。扩展资料:假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。

若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。图的深度优先遍历类似于树的前序遍历。

采用的搜索方法的特点是尽可能先对纵深方向进行搜索。这种搜索方法称为深度优先搜索(Depth-First Search)。相应地,用此方法遍历图就很自然地称之为图的深度优先遍历。

数据结构 深度优先遍历和广度

无向图:两个结点之间的路径没有方向区分有向图:两个结点之间的路径有方向区分,从A到B的路径长和从B到A的路径长可以不同深度优先遍历:从给定结点出发,选取它的邻接结点中某个未被访问的结点访问。被访问的结点成为新的给定结点。

重复上述过程,直到当前结点没有未被访问的邻接结点。

接着开始回溯,返回上一次访问的结点继续寻找其未被访问的邻接结点,直至完成遍历。广度优先遍历:从给定结点出发,依次访问它的所有邻接结点。然后按照这些结点的被访问顺序,依次访问这些结点的所有邻接结点。重复上述过程,直至完成遍历。

标签:遍历图的基本方法有深度优先搜索和广度优先深度优先遍历和深度优先搜索

留言评论