当前位置: 首页 > 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总结:

http://www.dtcms.com/a/81584.html

相关文章:

  • 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)
  • 挑战用AI替代我的工作——从抢券困境到技术突破
  • 第五章 起航20 小会会的成长型思维
  • 数据库的左连接,右连接,全外连接,自连接,内连接的区别
  • 2953. 统计完全子字符串(将题目中给的信息进行分组循环)
  • FRP多协议支持与高级功能解析
  • 新能源汽车充换站如何实现光储充一体化管理?
  • 可靠消息投递demo
  • 对接SaToken @SaCheckEL 鉴权注解
  • Linux-顺序队列练习-链式队列-树
  • cocos:从@ccclass装饰器到组件化开发