6.2.2邻接表法-图的存储

news2025/5/19 13:27:21

知识总览:

为什么要用邻接表

因为邻接矩阵的空间复杂度高(O(n²)),且不适合边少的稀疏图,所以有了邻接表 

用代码表示顶点、图

声明顶点+图信息

声明顶点用一维数组存储各个顶点的信息,一维数组字段包括2个,每个顶点的数据域信息和指向该顶点的第一条边或弧的信息,声明图:一维数组+该图目前有多少顶点vexnum+改图目前有多少边arcnum

无向图邻接表:

如下图中的data字段上的0、1、2、3、4、5是一维数组的索引,每个data字段都有一个first指针,为指向该顶点的第一条边的指针,虽然指针就一个,但是指向的节点可能有多个,就看这个节点和其他节点有几条边,first指针指向该节点指向的下一个节点信息,节点信息包括该条边指向的节点,如A和B、A和C、A和D都相邻,都有边,都有路径,那first指针指向的节点信息中的是B、C、D,这些节点信息都在一维数组中,每个节点信息都有编号,于是first指针就指向了编号,如B的编号为1,C的编号是2,D的编号是3,所以指向第一条边那依次指向1、2、3(3,2,1的位置也可互换,即邻接表的表示方式不唯一 ,但是邻接矩阵的表示方式唯一),即有一条A指向B或者说指向1的边,A指向C或者说指向2的边,A指向D或者说指向3的边。如果是带权图,还可以在边指向的节点信息中加上权值信息InfoType type字段

因为是无向图,一条边就要在2个节点VNode的first指针存储2个边节点信息。A指向B就意味着B指向A,所以A节点中first指针B,B节点first指针要指向A节点,但是是同一个边,即1个边对应了2个节点,所以有边节点的数量是2|E|即边节点=2倍边的数量

无向图中空间复杂度=顶点的占用空间+2倍边的空间=O(|v|+2|E|)(应该是就存储顶点信息+first指针吧,first指针又存储了边节点,边节点又和边的数量有关系,所以实际是存储的边节点信息。。。)

无向图的度=该节点下first指针中边节点的个数(度是针对节点来说的)

有向图邻接表:

有向图中一条边只会在一个VNode节点信息上指向边节点,即A指向B这条边,只会在A节点的first指针上指向边节点B,不会在B节点的first指针指向A,即边的数量=指向边节点的数量

有向图空间复杂度=顶点的占用空间+边的空间=O(|v|+|E|)

有向图的度=入度+出度(度是针对节点来说的)

有向图的出度=每个节点的first指针指向的边节点的个数(因为first指针指向的是从该节点指向的其他节点)

有向图的入度=遍历所有的节点信息,看看哪个节点上的first指针下有该节点的和(如A节点的入度就是遍历所有的节点,看看哪个节点的first指针下有边节点A,有A的数量之和即为入度),因为求入度要遍历所有节点,所以时间开销大

知识回顾

未完待续。。。。。。。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2379311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++23 放宽范围适配器以允许仅移动类型(P2494R2)

文章目录 引言背景与动机提案内容与实现细节提案 P2494R2实现细节编译器支持 对开发者的影响提高灵活性简化代码向后兼容性 示例代码总结 引言 C23 标准中引入了许多重要的改进,其中一项值得关注的特性是放宽范围适配器(range adaptors)以允…

【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer

【技海登峰】Kafka漫谈系列(十一)SpringBoot整合Kafka之消费者Consumer spring-kafka官方文档: https://docs.spring.io/spring-kafka/docs/2.8.10/reference/pdf/spring-kafka-reference.pdf KafkaTemplate API: https://docs.spring.io/spring-kafka/api/org/springframe…

WebRTC技术下的EasyRTC音视频实时通话SDK,助力车载通信打造安全高效的智能出行体验

一、方案背景​ 随着智能交通与车联网技术的飞速发展,车载通信在提升行车安全、优化驾驶体验以及实现智能交通管理等方面发挥着越来越重要的作用。传统的车载通信方式在实时性、稳定性以及多媒体交互能力上存在一定局限,难以满足现代车载场景日益复杂的…

数据科学和机器学习的“看家兵器”——pandas模块 之二

目录 pandas 模块介绍 4.2 pandas 数据读取 4.2.1 课程目标 4.2.2 读取 Excel 文件中的数据 (一)读取某个工作表中的数据 (二)读取指定数据列的标签内容 (三)读取指定数据行的标签内容 (四)读取指定行或者列 4.2.3、读取 CSV 文件数据 4.2.4、课程总结回顾 4.2.5、课后…

MySQL--day2--基本的select语句

(以下内容全部来自上述课程) SQL概述 结构化查询语句 1. SQL分类 DDL:数据定义(definition)语言:create、drop、alter… DML:数据操作(manipulation)语言&#xff…

自动化:批量文件重命名

自动化:批量文件重命名 1、前言 2、效果图 3、源码 一、前言 今天来分享一款好玩的自动化脚:批量文件重命名 有时候呢,你的文件被下载下来文件名都是乱七八糟毫无规律,但是当时你下载的时候没办法重名或者你又不想另存为重新重…

学习!FastAPI

目录 FastAPI简介快速开始安装FastApiFastAPI CLI自动化文档 Reqeust路径参数Enum 类用于路径参数路径参数和数值校验 查询参数查询参数和字符串校验 请求体多个请求体参数嵌入单个请求体参数 CookieHeader表单文件直接使用请求 ResponseResponse Model多个关联模型 响应状态码…

【第三十六周】LoRA 微调方法

LoRA 摘要Abstract文章信息引言方法LoRA的原理LoRA在Transformer中的应用补充其他细节 实验与分析LoRA的使用论文实验结果分析 总结 摘要 本篇博客介绍了LoRA(Low-Rank Adaptation),这是一种面向大规模预训练语言模型的参数高效微调方法&…

Redis 数据类型与操作完全指南

Redis 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。与传统的关系型数据库不同,Redis 提供了丰富的数据类型和灵活的操作方式,这使得它能够高效地解决各种不同场景下的数据存储和处理问题。本文将全面介绍 R…

Digi XBee XR 系列介绍

Digi 延续了 20 多年来亚 GHz 射频模块的传统,推出了 Digi XBee XR 系列远距离模块,包括 Digi XBee XR 900 - 已通过多个地区的预先认证 - 以及 Digi XBee XR 868 - 已通过欧洲地区应用的预先认证。 这些先进的射频模块专为远距离抗干扰无线通信而设计。…

【方法论】金字塔原理概述:写作逻辑的底层架构与实践法则

文章目录 一、为何采用金字塔结构:对抗认知局限的思维框架1、 梳理逻辑,抽象归纳2、自上而下,结论居首3、 结论先行之必要 三、金字塔结构1、纵向逻辑:上层思想必须是下层思想的概括提炼2、横向逻辑:每组思想需属于同一…

BERT 核心技术全解析:Transformer 双向编码与掩码语言建模的底层逻辑

一、引言:从 BERT 到生成式 AI 的进化之路 科学的突破从来不是孤立的奇迹,而是人类知识长河中无数基石的累积。 当我们惊叹于 ChatGPT、Google Bard 等大型语言模型(LLM)在生成式 AI 领域的惊人表现时,不能不回溯到 20…

【OpenCV基础 1】几何变换、形态学处理、阈值分割、区域提取和脱敏处理

目录 一、图像几何变化 1、对图片进行放大、缩小、水平放大和垂直放大 2、旋转、缩放、控制画布大小 二、图像形态学处理 1、梯度运算 2、闭运算 3、礼帽运算 4、黑帽运算 三、图像阈值分割 1、二值化处理 2、反二值化处理 3、截断阈值处理 4、超阈值零处理 5、低…

CSS- 4.4 固定定位(fixed) 咖啡售卖官网实例

本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…

得力标签打印机系统集成方案的技术应用与场景实践

一、方案背景与技术特性 在物联网设备管理场景中,标签打印的自动化与效率提升成为企业数字化升级的重要需求。得力标签打印机驱动及系统集成方案,通过技术接口开发与硬件协同,为设备标识管理提供 轻量化对接能力。以下从技术适配性与功能设计…

【通用智能体】Playwright:跨浏览器自动化工具

Playwright:跨浏览器自动化工具 一、Playwright 是什么?二、应用场景及案例场景 1:端到端(E2E)测试场景 2:UI 自动化(表单批量提交)场景 3:页面截图与 PDF 生成场景 4&am…

精准掌控张力动态,重构卷对卷工艺设计

一、MapleSim Web Handling Library仿真和虚拟调试解决方案 在柔性材料加工领域,卷对卷(Roll-to-Roll)工艺的效率与质量直接决定了产品竞争力。如何在高动态生产场景中实现张力稳定、减少断裂风险、优化加工速度,是行业长期面临的…

永磁同步电机公式总结【一】——反电动势、磁链、转矩公式;三项、两项电压方程;坐标表换方程

一、PMSM 电机参数介绍 1.1 转子极数 转子极数 (Rotor Poles) :三相交流电机每组线圈都会产生 N、S 磁极,每个电机每相含有的永磁体磁极个数就是极数。由于磁极是成对出现的,所以电机有 2、4、6、8……极 (偶数)。 未知参数的电机&#xff…

STL - stack 和 queue 及容器适配器模式的介绍

文章目录 1. stack 的介绍和使用1.1 stack 的介绍1.2 stack 的接口及使用1.3 stack 的模拟实现 2. queue 的介绍和使用2.1 queue 的介绍2.2 queue 的接口及使用2.3 queue 的模拟实现 3. priority_queue的介绍和使用3.1 priority_queue 的介绍3.2 priority_queue 的接口及使用3.…

windows 安装gdal实现png转tif,以及栅格拼接

windows 安装gdal实现png转tif,以及栅格拼接 一、安装gdal 网上有很多安装gdal的方法,此处通过osgeo4w安装gdal 1.下载osgeo4w 下载地址 https://trac.osgeo.org/osgeo4w/ 2、安装osgeo4w exe文件安装,前面部分很简单,就不再…