图是什么?地图?网络图?还是……

简介: 图是什么?地图?网络图?还是……

图的性质

image.png

如上所示,这就是一张校园秘籍简版地图,如果我们把各个节点换成数字,那么它就是数据结构中的图。

非线性表数据结构,树中的元素叫作节点,图中的元素叫作顶点

图中两个顶点之间的连接线叫作

跟顶点相连接的边的条数叫作顶点的

边上有方向的图叫作有向图,边上没有方向的图叫作无向图

有向图

度分为入度出度

顶点的入度,表示有多少条边指向这个顶点;顶点的出度表示有多少条边以这个顶点为起点指向其他顶点。比如小红书的单向关注,微信的单向好友机制。

image.png

带权图

类似QQ好友之间的亲密度,在表示好友的基础上,每条边加上一个权重(weight)。

image.png

存储方法

邻接矩阵存储方法

图的最直观的一种存储方法就是:邻接矩阵(Adjacency Matrix)

邻接矩阵的底层依赖是一个二维数组,在无向图中,如果顶点 i 与顶点 j 之间有边,我们就将A[i][j]A[j][i]标记为 1;在有向图中,如果有一条箭头从顶点 i 指向顶点 j 的边,那我们就将 A[i][j]标记为 1,如果没有箭头从顶点 j 指向顶点 i ,那么A[j][i]就标记为 0 ;在带权图中,存储的不再是 0 和 1 ,而是对应的权重。

邻接矩阵的存储方式比较简单和直接,基于数组实现,获取顶点的关系时,非常高效。计算起来也比较简单。

缺点就是浪费空间,如下所示,连通的顶点不多,存储是稀疏图(顶点很多,但是每个顶点的边并不多)时,这种存储方式就比较浪费空间。

image.png

邻接表存储方式

解决邻接矩阵比较浪费内存空间的问题——邻接表(Adjacency List)

邻接表有点像散列表,每个顶点对应一条链表,链表中存储的与这个顶点相连接的其他顶点。

这是一种空间与时间复杂度互换的设计思想,邻接矩阵浪费空间,使用比较方便,邻接表存储比较省空间,但是使用起来比较耗时。

在邻接表中确定两个顶点是否相连,需要遍历顶点对应的那条链表,链表的存储方式对缓存也不友好,可以利用解决散列表中链过长的方法,提高查找效率。把链表换成平衡二叉查找树,跳表等数据结构。

image.png

目录
相关文章
|
NoSQL Java 关系型数据库
基于Java swing和mysql实现酒店管理系统(源码+数据库+运行指导视频+系统用户使用手册+系统PPT+数据库设计说明书+系统概要说明书+需求说明书+详细说明书)
基于Java swing和mysql实现酒店管理系统(源码+数据库+运行指导视频+系统用户使用手册+系统PPT+数据库设计说明书+系统概要说明书+需求说明书+详细说明书)
575 0
|
4月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
1113 0
|
9月前
|
JavaScript 前端开发 API
|
SQL Oracle 关系型数据库
【MySQL异常】1093 - You can‘t specify target table ‘daily_job‘ for update in FROM clause
【MySQL异常】1093 - You can‘t specify target table ‘daily_job‘ for update in FROM clause
576 0
|
Windows
关于:未能加载文件或程序集“ICSharpCode.SharpZipLib”或它的某一个依赖项异常的解决方案
关于:未能加载文件或程序集“ICSharpCode.SharpZipLib”或它的某一个依赖项异常的解决方案
1272 0
|
12月前
|
SQL JavaScript 前端开发
通过ChatGPT生成测试用例
通过ChatGPT生成测试用例
273 15
|
8月前
|
存储 运维 前端开发
初步认识 HarmonyOS NEXT 端云一体化开发
本课程基于“四维能力成长模型”设计理念,通过渐进式学习路径帮助零基础开发者掌握端云一体化开发技能。课程特色包括全栈能力培养、项目驱动教学和明确的学习目标,以“宝宝喂养记录”为案例,结合理论与实践。学员将学会创建工程、开发云函数与数据库、部署应用,并利用Serverless技术降低成本。适合HarmonyOS初学者、前端工程师及创业者。端云一体化开发整合工具链,降低开发门槛与运维成本,提高效率。课程还介绍云开发工程模板,助力快速上手。
216 28
|
数据采集 存储 自然语言处理
【优秀python案例】基于百度贴吧的数据采集与文本分析设计与实现
本文介绍了百度贴吧数据采集与文本分析的设计与实现,包括自动化采集帖子数据、进行情感分析和主题分析,以及使用可视化技术展示分析结果。
873 111
|
10月前
|
SQL 数据可视化 算法
阿里云“山海计划” x Epic Fab: 三维城市“中国风”AIGC
阿里云“山海计划” x Epic Fab: 三维城市“中国风”AIGC
292 0
|
机器学习/深度学习 人工智能 Ubuntu