当前位置: 首页 > news >正文

数据结构---图的深度优先遍历(DFS)

一、与树的深度优先遍历之间的联系

  1.类似于树的先根遍历。

  递归访问各个结点:

  2.图的深度优先遍历

  先设置一个数组,初始值全部设置为false,先访问一个结点,在用一个循环,依次检查和这个结点相邻的其他结点,在进行更深一层的访问。

  如果是一个非连通的图,则无法遍历完所有结点。 改进方法和广度优先遍历相似。重新读取数组,查看是否还有false的顶点,有,则进行访问,没有则结束。

二、复杂度分析

  空间复杂度:来自函数的调用,最坏的情况,递归深度为O(|V|)  最好为O(1)

  时间复杂度 = 访问各结点所需的时间+探索各边所需的时间。 

  邻接矩阵存储的图的时间复杂度=O(|V|^2)

  邻接表存储的图的时间复杂度= O(|V|+|E|)

三、深度优先生成树

  和广度优先遍历相同, 同一个图的邻接矩阵表示方式唯一,深度优先遍历唯一。

   同一个图邻接表方式不唯一,深度优先遍历序列不唯一。

  深度优先生成树: 与广度一样,去掉多余的边

   同一个图的邻接矩阵表示方式唯一,深度优先遍历唯一,深度优先生成树也唯一。

   同一个图邻接表方式不唯一,深度优先遍历序列不唯一,深度优先生成树也不唯一。

  四、图的遍历和图的连通图 

  对于无向图:进行BFS/DFS遍历调用BFS/DFS函数的次数=连通分量数
对于连通图,只需调用1次 BFS/DFS

对有向图进行BFS/DFS遍历
调用BFS/DFS函数的次数要具体问题具体分析
若起始顶点到其他各顶点都有路径,则只需调用1次BFS/DFS 函数
对于强连通图,从任一结点出发都只需调用1次 BFS/DFS总结:

相关文章:

  • LangChain其它五类组件详解(1)—— 文档加载器(Document loaders)
  • FRP结合Nginx实现HTTPS服务穿透
  • JVM 知识点梳理
  • 【前四届会议均已完成独立出版及EI检索 | 河南大学、河南省科学院主办,多高校单位承协办】第五届信号图像处理与通信国际学术会议(ICSIPC 2025)
  • Vue 中的日期格式化实践:从原生 Date 到可视化展示!!!
  • 如何在 HTML 中创建一个有序列表和无序列表,它们的语义有何不同?
  • SpringBoot最佳实践之 - 使用AOP记录操作日志
  • 第五章 起航19 管理者的专业素养
  • 下载与快速上手 NVM:Node.js 版本管理工具
  • 机器学习——分类、回归、聚类、LASSO回归、Ridge回归(自用)
  • 深入理解 Spring Boot 应用的生命周期:从启动到关闭的全流程解析
  • 【开源项目】数字孪生沈阳CIM/BIM可视化项目——开源工程及源码
  • 1202. 【高精度练习】义务植树
  • java 数据库连接基于向驱动管理器注册第三方驱动的机制介绍,包含三种注册类型和华为高斯(GaussDB)数据库的完整连接例子
  • 算法模型从入门到起飞系列——背包问题(探索最大价值的掘金之旅)
  • Python实验:读写文本文件并添加行号
  • Centos操作系统安装及优化
  • 北京南文观点:品牌如何抢占AI 认知的 “黄金节点“
  • 【今日EDA行业分析】2025年3月21日
  • Unity后处理(Post-processing)
  • 山西临汾哪吒主题景区回应雕塑被指抄袭:造型由第三方公司设计
  • 上海145家博物馆、73家美术馆将减免费开放
  • 在笔墨金石间,看胡问遂与梅舒适的艺术对话
  • 食用城市|食饭识人
  • 马上评丨未成年人“擦边”短视频岂能成流量密码
  • 第12届警博会在即:一批便民利企装备亮相,规模创历史新高