java数据结构之图及其深度优先搜索与最小生成树

本文介绍了图的概念,包括顶点和边,接着详细讲解了深度优先搜索DFS的原理,包括其形象解释和正式定义,并讨论了DFS在邻接矩阵和邻接表中的时间复杂度。此外,还提到了广度优先搜索BFS的基本思想和邻接矩阵的存储方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:

图 (graph) 是由一些点 (vertex) 和这些点之间的连线 (edge) 所组成的;其中,点通常被成为 "顶点(vertex)",而点与点之间的连线则被成为 "边或弧"(edege)。通常记为,G=(V,E)。

DFS(Depth-first-search) 深度优先遍历


形象的说, 就像搜索文件夹, 从第一个开始文件夹开始搜索到底, 然后再搜索第二个到底, 然后第三个…. 一直到最后. 
官方的说:

a) 假设初始状态是图中所有顶点都未曾访问过,则可从图 G 中任意一顶点 v 为初始出发点,首先访问出发点 v,并将其标记为已访问过。

b) 然后依次从 v 出发搜索 v 的每个邻接点 w,若 w 未曾访问过,则以 w 作为新的出发点出发,继续进行深度优先遍历,直到图中所有和 v 有路径相通的顶点都被访问到。

c) 若此时图中仍有顶点未被访问,则另选一个未曾访问的顶点作为起点,重复上述步骤,直到图中所有顶点都被访问到为止。


注:红色数字代表遍历的先后顺序,所以图 (e) 无向图的深度优先遍历的顶点访问序列为:V0,V1,V2,V5,V4,V6,V3,V7,V8

如果采用邻接矩阵存储,则时间复杂度为 O(n2);当采用邻接表时时间复杂度为 O(n+e)。

BFS(Breadth-first-sea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值