《算法导论》笔记 第22章 22.1 图的表示

【笔记】


要表示一个图G=(V,E),有两种标准的方法,即邻接表和邻接矩阵。

通常用邻接表表示稀疏图,|E|远小于|V|^2;用邻接矩阵表示稠密图,|E|接近于|V|^2,或必须很快判断两个给定顶点是否存在连接边时。

加权图,每条边都有相应的权值。

邻接表,空间Θ(V+E)。

邻接矩阵,空间Θ(V^2)。

无向图的邻接矩阵A就是它自己的转置矩阵:A=A^T。



【练习】


22.1-1 给定一个有向图的邻接表表示,计算该图中每个顶点的出度需要多少时间?计算每个顶点的入度需要多少时间?

O(V+E),O(V+E)


22.1-2 给出一个包含7个顶点的完全二叉树的邻接表表示,写出其等价的邻接矩阵表示。假设各个顶点如在一个二项堆中一样,从1到7编号。


22.1-3 有向图G=(V,E)的转置是图G^T=(V,E^T),其中E^T={ (v,u)∈V*V : (u,v)∈E },因此G^T就是将G中所有的边反向后形成的图。写出根据G计算出G^T的有效算法,并分析运行时间。

邻接矩阵:求矩阵转置 O(V^2)

邻接表:遍历每条边,重新建图 O(V+E)


22.1-4 给定一个多重图G=(V,E)的邻接表表示,给出一个具有O(V+E)时间的算法,来计算其等价的无向图G'(V,E')的邻接表表示,其中E'包含E中所有的边,且将两个顶点之间的所有多重边用一条边代表,并去掉E中所有的环。

用邻接矩阵避免重边和自环?中文版的翻译真是。。。


22.1-5 有向图G=(V,E)的平方是图G^2(V,E^2),该图满足下列条件:(u,w)∈E^2当且仅当对v∈V,有(u,v)∈E,且(v,w)∈E。亦即,如果图G中顶点u和w之间存在着一条恰好包含两条边的路径时,则G^2必包含该边(u,w)。针对图G的邻接表和邻接矩阵两种表示法,分别写出根据G产生G^2的有效算法,并分析给出算法的运行时间。


22.1-6 当采用邻接矩阵表示法时,大多数图算法需要的时间都是Ω(V^2),但也有一些例外。证明在给定了一个有向图G的邻接矩阵后,可以在O(V)的时间内,确定G中是否包含一个通用的汇,即入度为|V|-1、出度为0的顶点。


22.1-7 无自环的有向图G=(V,E)的关联矩阵B=(Bij)是一个|V|*|E|的矩阵,它满足下列条件:

如果边j离开顶点i,bij=-1。如果边j进入顶点i,bij=1。其它情况bij=0。

试描述矩阵乘积BB^T中各元素的含义,其中B^T为B的转置矩阵。


21.1-8 假设每个数组元素Adj[u]采用的不是链表,而是一个包含了所有满足(u,v)∈E的顶点v的散列表。如果所有的边查找都是等可能的,则确定某条边是否在图中所需的期望时间是多少?这种方案的不足是什么?请给出另一种表示每一个边列表的数据结构,以便解决这些不足。与散列表方案相比,有什么不足之处?

O(1),不能确定与V关联的边。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值