算法导论随笔2-1 图的存储

图论是计算机的一种数据结构。在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。我们将从图的存储、DFS/BFS和图的特殊形式树这三方面来讲解图论的基础内容。

首先我们来看看图是如何存储的。

观察这个邻接矩阵后我们可以发现几个性质。

1.这个矩阵有n行n列。

2.这个矩阵的数值不是0,就是1。

在这里我把这个矩阵称为a,其中每个数值称为ai,j,通过观察,我们可以很容易发现,如果第i个点指向第j个点,那么ai,j的值就为1,否则ai,j为0。比如a1,2=1但是a1,3=0

因为a是n行n列的,所以如果完全遍历一边,复杂度为O(n^2)。我们定义一个图中的边数为m,实际上m最大的情况下等于n^2。因此在m很大的时候(稠密图),邻接矩阵不失为一种非常方便,合适的方法。但是如果m非常小(稀疏图),O(n^2)显然耗时过长。那有没有什么方法接近O(m)呢?

是不是很明显了?矩阵b中第i行的数字所代表的就是i与第i行的若干个结点相互连接。

每次遍历的时候也只需要O(m)的时间复杂度,是不是很优秀?

当然一个算法不可能面面俱到。虽然邻接表时间复杂度低,占用空间小,但我们考虑下面问题:

如果我们要查询i和j两点是否连接的时候。我们该用哪种方式存储比较好?

首先考虑邻接矩阵,根据定义,ai,j代表了i和j是否连接。时间复杂度O(1)。

然后我们考虑邻接表,先找到第i行,然后将第i行所有的数字全部扫描一遍,看第i行是否出现数字j。时间复杂度最高为O(n)

所以我们不能盲目地只使用邻接矩阵或者邻接表,而是应该遇到题目选择最适合的使用。

(0)

相关推荐

  • 清华唐杰教授综述全面解读网络表示学习(NRL)最新动态

    撰文:吴婷婷 在计算机技术飞速发展的今天,机器处理现实生活中复杂任务的能力也越来越强大.其中,从现实世界网络中挖掘有效.相关的信息在许多新兴应用中起着至关重要的作用.例如,在社交网络中,根据个人资料和 ...

  • ICML2021 | 四篇图网络表示能力相关论文一览(比较硬核)

    点击上方 蓝字关注我们 在过去的几年中,以图表示的关系数据寻找最佳归纳偏差已经引起了机器学习社区的极大兴趣.依赖图结构的基于节点的消息传递机制催生了第一代图神经网络 (GNN),称为消息传递神经网络 ...

  • 北京理工大学-数据结构期末考试试题

    数据结构试卷(一) 一.单选题(每题 2 分,共20分) 1.    栈和队列的共同特点是(      ). A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 2. ...

  • 为什么有人说弄懂了《算法导论》的90%,就超越了90%的程序员?

    同任何一门编程语言相比,算法确实是晦涩难懂的.举个简单的例子,众多学习算法的读者中,可能很多人都能快速学会链表.哈希表.二叉树,还能熟练运用大部分的查找算法和排序算法,但能玩转路径规划.字符串匹配.动 ...

  • PHP数据结构-图的存储结构

    图的存储结构 图的概念介绍得差不多了,大家可以消化消化再继续学习后面的内容.如果没有什么问题的话,我们就继续学习接下来的内容.当然,这还不是最麻烦的地方,因为今天我们只是介绍图的存储结构而已. 图的顺 ...

  • 计算机算法领域有哪些书籍像《算法导论》一样经典?

    原创程序员书屋2021-03-20 20:02:17 还真有这样一本经典书,那就是<算法设计>(Algorithm Design).不知道有多少人关注过这本最为经典的算法入门书. < ...

  • 每周一书《算法导论》分享!

    内容简介 在有关算法的书中,有一些叙述非常严谨,但不够全面:另一些涉及了大量的题材,但又缺乏严谨性.本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受. ...

  • 随笔:亲爱的图图

    ☆读悦空间☆ 平台总监:赵会宁 文字编辑:冯雪兰 美工设计:冯雪兰 作者简介:高燕,笔名一剪传奇,甘肃省正宁榆林子人,先后就读于陇东学院和西北师大,主修历史学与汉语言文学.喜欢剪纸,喜欢文字,喜欢春天 ...

  • 《算法导论》.pdf

    回复"面试"获取全套面试资料 非形式地说,算法就是任何定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出. 可以这么理解:算法就是把输入转换成输出的计算 ...

  • 2021年3月\图学习\综述论文,19页pdf概述图信号处理、矩阵分解、随机游走和深度学习算法

    点击上方 蓝字关注我们 声明:本文转自专知微信公众号 图是连接数据网络结构的一种常用表示形式.图数据可以在广泛的应用领域中找到,如社会系统.生态系统.生物网络.知识图谱和信息系统.随着人工智能技术的不 ...

  • DeepMind最新成果:图表示学习算法推理~46页ppt

    仅做学术分享,如有侵权,联系删除 转载于 :专知 来自DeepMind的研究科学家Petar Veličković给了关于<图表示学习算法推理>的报告,共46页ppt,详述了神经图算法推理 ...

  • 十大经典排序算法(动图演示)

    0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序: ...