《算法导论》学习分享——22. 基本的图算法(BFS,DFS,拓扑排序,强连通分量)

本文深入探讨了图算法的基础,包括图的邻接链表和邻接矩阵表示,以及广度优先搜索(BFS)、深度优先搜索(DFS)的特性。此外,还详细介绍了拓扑排序和强连通分量的概念,这些是理解图算法的关键部分。
摘要由CSDN通过智能技术生成

22. 基本的图算法

本章介绍图的表示和搜索。
许多的图算法在一开始都会先通过搜索来获得图的结构,其他一些图算法则是对基本的搜索加以优化。
可以说,图的搜索技巧是整个图算法领域的核心。

图的表示

G=(V,E) G = ( V , E )

图G由结点的集合V 和 边的集合E 组成

可以用两种方法表示,一种是邻接链表(下图b),一种是邻接矩阵(下图c)。
邻接链表一般用于表示稀疏图(边数 |E| | E | 远小于 |V|2 | V | 2 ),默认都使用邻接链表表示。在稠密图( |E| | E | 接近 |V|2 | V | 2 )的情况下,倾向使用邻接矩阵。

无向图:
22_1.PNG
有向图:
22_2.PNG

邻接链表表示

由一个链表数组 Adj A d j 组成,数组大小为 |V| | V | ,链表 Adj[u] A d j [ u ] 存储了结点 u u 出发的边的终点。
比如上面无向图中,从结点1出发有两条边,边的终点分别是2和4,反应到邻接链表中就是 A d j [ 1 ] 存储了两个节点2和4。

邻接链表需要的存储空间为 Θ(|V|+|E|) Θ ( | V | + | E | )

邻接矩阵表示

由一个 |V|×|V| | V | × | V | 的矩阵 A=(aij) A = ( a i j ) 表示,并满足以下条件:

aij={ 10if(i,j)E,other, a i j = { 1 i f ( i , j ) ∈ E , 0 o t h e r ,

当边有权重时, aij a i j 可以存储权重值。

邻接矩阵需要的存储空间为 Θ(|V|2) Θ ( | V | 2 )

一些术语

一个结点的出度为,从这个结点触发的边的个数。
一个结点的入度为,到达这个结点的边的个数。

广度优先搜索

思路:利用一个队列,首先将头结点插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值