数据结构 深度优先遍历和广度
图的遍历的定义:从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次。(连通图与非连通图)不论是尝试优先遍历,还是广度优先遍历,其遍历的顺序都不是唯一的。深度优先遍历(DFS);1、访问指定的起始顶点;2、若当前访问的顶点的邻接顶点有未被访问的,则任选一个访问之;反之,退回到最近访问过的顶点;直到与起始顶点相通的全部顶点都访问完毕;3、若此时图中尚有顶点未被访问,则再选其中一个顶点作为起始顶点并访问之,转 2; 反之,遍历结束。从A点出发的深度优先遍历序列:A B C E G D F广度优先搜索遍历类似于树的按层次遍历。对于无向连通图,广度优先遍历是从图的某个顶点v0出发,在访问v0之后,依次搜索访问v0的各个未被访问过的邻接点w1,w2,…。然后顺序搜索访问w1的各未被访问过的邻接点,w2的各未被访问过的邻接点,…。即从v0开始,由近至远,按层次依次访问与v0有路径相通且路径长度分别为1,2,…的顶点,直至连通图中所有顶点都被访问一次。从A点出发的深度优先遍历序列:A B C D E F G
首先看一下深度优先和广度优先怎么遍历:
深度优先遍历从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续找它的下一个新的顶点进行访问,重复此步骤,直到所有结点都被访问完为止。
广度优先遍历从某个顶点出发,首先访问这个顶点,然后找出这个结点的所有未被访问的邻接点,访问完后再访问这些结点中第一个邻接点的所有结点,重复此方法,直到所有结点都被访问完为止。
在看题目,其要求按顺时针方向:
深度优先序列:V1 V2 V3 V5 V4
广度优先序列:V1 V2 V4 V3 V5
最小生成树,有两种方法,prim和kruskal算法。
这题最小生成树如下:
[(V4,V5),(V1,V4),(V2,V4),(V5,V3)],其中(V4,V5)表示V4和V5点之间连线。如下图类似(这里简单表示一下)。
V1 V2 V3
\ / /
V4----V5
有向图:两个结点之间的路径有方向区分,从A到B的路径长和从B到A的路径长可以不同
深度优先遍历:从给定结点出发,选取它的邻接结点中某个未被访问的结点访问。被访问的结点成为新的给定结点。重复上述过程,直到当前结点没有未被访问的邻接结点。接着开始回溯,返回上一次访问的结点继续寻找其未被访问的邻接结点,直至完成遍历。
广度优先遍历:从给定结点出发,依次访问它的所有邻接结点。然后按照这些结点的被访问顺序,依次访问这些结点的所有邻接结点。重复上述过程,直至完成遍历。
肇贸润尔: 无向图:两个结点之间的路径没有方向区分 有向图:两个结点之间的路径有方向区分,从A到B的路径长和从B到A的路径长可以不同 深度优先遍历:从给定结点出发,选取它的邻接结点中某个未被访问的结点访问.被访问的结点成为新的给定结点.重复上述过程,直到当前结点没有未被访问的邻接结点.接着开始回溯,返回上一次访问的结点继续寻找其未被访问的邻接结点,直至完成遍历. 广度优先遍历:从给定结点出发,依次访问它的所有邻接结点.然后按照这些结点的被访问顺序,依次访问这些结点的所有邻接结点.重复上述过程,直至完成遍历.
开福区15378226397: 数据结构深度优先遍历: - ?
肇贸润尔: 图的深度优先遍历类似于树的前序遍历.首先访问出发点a,并将其标记为已访问过;然后依次从a出发搜索a的每个邻接点b,c,e.若b未曾访问过,则以b为新的出发点继续进行深度优先遍历,直至图中所有和源点a有路径相通的顶点(亦称为从...
开福区15378226397: 数据结构:图的深度优先遍历和广度优先遍历?
肇贸润尔: 图的深度优先遍历:1->2->4->6->5->3 图的广度优先遍历:1->2->3->4->5->6
开福区15378226397: 数据结构题目,广度优先和深度优先 - ?
肇贸润尔: (一)深度优先搜索的特点是:(1)从上面几个实例看出,可以用深度优先搜索的方法处理的题目是各种 各样的.有的搜索深度是已知和固定的,如例题2-4,2-5,2-6;有的是未知的,如例题2-7、例题2-8;有的搜索深度是有限制的,...
开福区15378226397: 数据结构 深度优先遍历 - ?
肇贸润尔: 我帮你复习一下图的知识:1. 深度优先遍历:深度优先就是从树的某个节点开始搜索,查看它所有的领结点,如果这个邻接点的无其他邻接点,则忽略该节,再次访问下个节,以此类推,一直到访问到的邻接点再没有其它的邻接点为止,这个节...
开福区15378226397: 广度优先遍历和深度优先遍历以及迭代哪个好 - ?
肇贸润尔: 两种各有应用,部分好坏.能否用迭代也是和你存储图的数据结构相关.深度优先遍历,也就深入的遍历,沿着每一个分支直到走到最后,然后才返回来遍历剩余的节点.二叉树不同于图,图需要标记节点是否已经访问过,因为可能会存在环,而二叉树不会出现环,所以不需要标记.那么,我们只需要一个栈空间,来压栈就好了.因为深度优先遍历,遍历了根节点后,就开始遍历左子树,所以右子树肯定最后遍历.我们利用栈的性质,先将右子树压栈,然后在对左子树压栈.此时,左子树节点是在top上的,所以可以先去遍历左子树.
开福区15378226397: 深度优先搜索遍历和广度优先搜索的遍历序列及具体步骤和原因, - ?
肇贸润尔: 1->2->3->4 (表示1可达到2,达到3,达到4) 2->1->3->5 3->1->2->4->5->6 4->1->3->6 5->2->3->6 6->3->4->5 广度优先搜索就是把每一行按照顺序输出,去掉重复的,即先看1,有1,2,3,4,然后看2,因为有3,4了,所以只要5,然后看3,以此...
开福区15378226397: 先序遍历和后序遍历是什么 - ?
肇贸润尔: 1、先序遍历也叫做先根遍历、前序遍历,可记做根左右(二叉树父结点向下先左后右).首先访问根结点然后遍历左子树,最后遍历右子树.在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树,如果二叉树为空则返...
开福区15378226397: 哪种情况下深度优先遍历比广度优先遍历好 - ?
肇贸润尔: :深度优先遍历与广度优先遍历是图遍历的算法(不明白好好研究一下数据结构图遍历那一章). 深度优先遍历从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续找它的下一个新的顶点.
开福区15378226397: 数据结构的复习重点 - ?
肇贸润尔: 第一章 数据结构基本概念1、基本概念:理解什么是数据、数据对象、数据元素、数据结构、数据的逻辑结构与物理结构、逻辑结构与物理结构间的关系.2、面向对象概念:理解什么是数据类型、抽象数据...