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

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

图的性质

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+数据库设计说明书+系统概要说明书+需求说明书+详细说明书)
625 0
|
8月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
1898 0
|
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
748 0
|
JavaScript 前端开发 API
|
5月前
|
人工智能 自然语言处理 搜索推荐
内容管理趋势:无头CMS+AI,正在重构企业内容运营逻辑
无头CMS与AI的深度融合,正在打破传统内容管理的边界,从“内容生产-管理-分发-优化”全链路重构运营逻辑。这种融合并非简单的技术叠加,而是以“内容为核心资产”,通过AI赋予内容管理智能化能力,让无头CMS的“灵活分发”优势最大化,最终实现从“被动管理”到“主动赋能”的跃迁。
264 3
|
5月前
|
人工智能 运维 监控
JMeter自搭与压测平台:2025年效率成本对比及平台推荐
2025年企业性能测试需求增长,自搭JMeter与SaaS压测平台在效率、成本等方面差异明显。自建方案灵活但成本高,适合技术强团队;SaaS平台即开即用、弹性资源,适配快速迭代场景。文章对比两者痛点、主流方案优劣,给出选择建议及实践参考。
|
12月前
|
数据采集 缓存 监控
如何提高爬虫的抓取效率
提高爬虫的抓取效率是爬虫开发中的一个重要目标。以下是一些可以提高爬虫抓取效率的方法和技巧: 1. 合理设置请求频率 避免过高频率:频繁的请求可能会对目标服务器造成过大压力,甚至导致被封禁。合理设置请求间隔时间,例如每次请求间隔几秒到几十秒。 动态调整频率:根据目标网站的响应时间动态调整请求频率。如果响应时间较长,适当降低请求频率;如果响应时间较短,可以适当提高请求频率。
416 6
|
数据采集 存储 自然语言处理
【优秀python案例】基于百度贴吧的数据采集与文本分析设计与实现
本文介绍了百度贴吧数据采集与文本分析的设计与实现,包括自动化采集帖子数据、进行情感分析和主题分析,以及使用可视化技术展示分析结果。
1078 111
|
SQL 数据可视化 算法
阿里云“山海计划” x Epic Fab: 三维城市“中国风”AIGC
阿里云“山海计划” x Epic Fab: 三维城市“中国风”AIGC
450 0
|
机器学习/深度学习 人工智能 Ubuntu

热门文章

最新文章