图的遍历

你。 提交于 2019-12-02 11:20:46

给出一个图G和其中任意一个顶点V0,从V0出发系统的访问G中所有的顶点,每个顶点访问一次,这叫图的遍历

深度优先搜索(depth-first search)简称DFS

基本思想

  • 访问一个顶点V,然后访问该顶点邻接到的未被访问过的顶点V’
  • 再从V’出发递归地按照深度优先的方式遍历;
  • 当遇到一个所有邻接于它多的顶点都被访问过了的顶点U时,则回到已访问顶点序列中最后一个未被访问的相邻顶点的顶点W;
  • 在从W出发递归地按照深度优先的方式遍历
  • 最后,当任何已被访问过的顶点都未被访问的相邻顶点时,则遍历结束。
    在这里插入图片描述在这里插入图片描述深度优先搜索时间复杂度
  • 对于具有n个顶点e条边的无向图或有向图,深度优先搜索算法对图中每一个顶点至多调用一次DFS函数
  • 邻接矩阵表示图时,共需检查n2个矩阵元素,所需时间为O(n2)
  • 邻接表表示图时,找邻接点需将邻接表中所有边结点检查一遍,需要时间O(e),对应的深度优先搜索算法时间复杂度为O(n+e)

深度优先搜索(breadth-first search)简称BFS

基本思想

  • 访问顶点V0

  • 然后访问顶点V0邻接到的所有未被访问的顶点V1,V2,…,Vi

  • 再依次访问V1,V2,…,Vi邻接道德所有未被访问的顶点

  • 如此进行下去,直到访问遍所有顶点
    在这里插入图片描述在这里插入图片描述
    广度优先搜索时间复杂度

  • 对于具有n个顶点e条边的有向图或无向图,广度优先搜索算法对图中每个顶点至多调用一次BFS函数

  • 邻接矩阵表示图时共需检查n2个矩阵所需时间为O(n2

  • 邻接表表示图时,找邻接点需将邻接表中所有边结点检查一遍,需要时间O(e),对应的广度优先搜索算法的时间复杂度为O(n+e)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!