深入浅出数据结构(图)

  • 图的逻辑结构
    • 定义
    • 逻辑结构
      • 基本术语(提起来脑海有印象就行)
      • 对比
  • 存储结构(邻接矩阵和邻接表)
    • 铺垫
  • 邻接矩阵
    • 透过问题看本质
      • 无向图相关
      • 有向图相关
      • 网图相关
    • 伪代码实现
      • 类(无向图)
      • 构造函数(伪代码)
  • 邻接表
    • 如何实现
    • 图示
    • 透过问题看本质(对照上图)
      • 网图相关
    • 伪代码实现
      • 类(无向图)
      • 构造函数

图的逻辑结构

定义

在这里插入图片描述

逻辑结构

在这里插入图片描述

基本术语(提起来脑海有印象就行)

()
我觉得在图这一章中邻接和依附是很重要的概念 为什么这么说?因为这是我们描述图中顶点之间联系的关键,回想起之前我们所学习的数组链表,我们都可以用前驱和后继来描述节点之间的关系,在树那一章中,我们也可以用双亲或者孩子来描述,所以这就是我为什么说这个概念比较关键
在这里插入图片描述
说白了啥意思?举个例子,在上面的无向图中,拿V0来举例,V0和V1互为邻接点,同时边V0V1依附于顶点V0和顶点V1(没他俩这条边就活不了了)这也是后面理解邻接矩阵和邻接表的基础

  • 有向图类似(单相思)
  • 在这里插入图片描述
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

对比

在这里插入图片描述
在这里插入图片描述

存储结构(邻接矩阵和邻接表)

铺垫

在前面我们学习链表队列的时候,我们通常在讨论他的存储方式的时候会分为链式存储和顺序存储,而且他们各有优劣,这里也是很类似的换汤不换药,不需要觉得他是一个很难的东西

邻接矩阵

经过前面的铺垫 我们自然而然的就会产生疑问
在这里插入图片描述

  • 如何存储顶点?
  • 是不是搞一个数组来把顶点一存就解决了
    在这里插入图片描述
    如何存储边?(难点)
  • 因为我们需要表示顶点之间的关系,所以我们不能简单的用一维数组,我们可以想到用一个二维数组来存储,怎么弄?
  • 我们以前都数学学过99乘法表对吧,比如我们需要知道3乘3为多少,那么我们只需要找到第三行第三列对吧,这里其实是一样的道理,我们想要知道V0到V1是不是有路径的,我们只需要找到第V0行第V1列,这里我们只需要设置一个flag,把有路的设置为1,没路的设置为0,这样不就行了吗,如下图
    在这里插入图片描述

透过问题看本质

理解之后,我们所构建的矩阵就是我们这章的重点《邻接矩阵》

无向图相关

Q1思考以上的问题:
学过线性代数的应该一眼就能看出来,这不是一个关于主对角线是对称的矩阵吗
想想为啥啊?
很简单 这因为咱们这是无向图吧!也就是说顶点之间都是情投意合的吧,你能来我家玩,我也能去你家玩

Q2:
那么我们如果需要求一个顶点的度就很好求了吧,就是看他能到谁家玩呗
反映到我们所构建的邻接矩阵上就是第i行或者第i列非零元素之和呗
在这里插入图片描述
Q3:
这不就是我们构建这个邻接矩阵的依据吗 我就不过多赘述了
在这里插入图片描述
Q4:

在这里插入图片描述

有向图相关

P1:(有向图相关)
在这里插入图片描述
P2:
在这里插入图片描述
那么出度不就是第i列元素之和吗
P3:(对照上图)
在这里插入图片描述

网图相关

下图是一个网图,也就是含有权值的图,我们把之前有向图或者无向图的1变为了权值以此来表达某两个顶点是连通的,有些人看到这里可能会有疑惑:
为什么没有边的两个顶点之间要填上无穷的符号呢?
这时候我们就需要回顾权的概念,所谓权指的是网图中,某一点到达另一个顶点所需要花费的代价,这是非常关键的,例如下图中V1和V3之间没有边,那就代表着V1不论花费多大的代价都到不了V3,所以这里只能填上无穷而不是0!!!

在这里插入图片描述

伪代码实现

类(无向图)

在这里插入图片描述

构造函数(伪代码)

在这里插入图片描述
在这里插入图片描述
由于考虑到函数的复用性,最好再额外定义一个输入函数

邻接表

突然给你一个邻接表的定义,你可能会不知所措,但是我先告诉你,这个东西跟链式存储90%相似,为什么这么说,你想当给你一个稀疏图(边很少的图),你如果用邻接矩阵是不是还是得构建一个n×n大小的,虽然矩阵里面0肯定很多,但你不得不这么做,为了解决这个问题我们就引入了邻接表
类比于解决数组浪费空间的问题 类比于解决稀疏多项式的问题 类比于解决斜树的问题又或是平衡二叉树的问题 其实我的理解都可以把这些看作是一种adjustment 希望大家能够理解

如何实现

具体的来说还是回到起初的两个问题
1.怎么存顶点
2.怎么存边

在这里插入图片描述
在这里插入图片描述

图示

在这里插入图片描述

透过问题看本质(对照上图)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

)在这里插入图片描述

在这里插入图片描述

网图相关

无非就是增加了一个数据域来存储权值吧
在这里插入图片描述

伪代码实现

类(无向图)

在这里插入图片描述

构造函数

在这里插入图片描述
在这里插入图片描述

**预告:
大概明天一下图的深度和广度优先遍历 应该能更完,可以先三连一下 那祝愿看到这里的你有美好的一天

******************************************************************************signed by 曦月逸霜

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Activity启动流程详解

目录 Activity 启动流程详细解析 1. 应用层发起启动请求 1.1 调用 startActivity() 1.2 通过 Instrumentation 转发请求 2. 系统服务处理(AMS 阶段) 2.1 Binder IPC 通信 2.2 AMS 处理流程 2.3 跨进程回调 ApplicationThread 3. 目标进程初始化…

338.比特位计数<动态规划>

338. 比特位计数 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> countBits(int n) {//将所有数初始化为0vector<int>dp(n1,0);for(int i 0; i<n;i){if(i % 2 0){dp[i] dp[i/2];}else{dp[i] dp[i/2]1;}}return dp;} };

word转换为pdf后图片失真解决办法、高质量PDF转换方法

1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker &#xff08;1&#xff09;点击word选项卡上的Acrobat插件&#xff0c;&#xff08;2&#xff09;点击“首选项”按钮&#xff0c;&#xff08;3&#xff09;点击“高级配置”按钮&#xff08;4&#xff09;点…

C++ primer plus 第四节 复合类型

本章内容包括: • 创建和使用数组 • 创建和使用 c-风格字符串 • 创建和使用 string 类字符串 • 使用方法getline( )和 get( )读取字符串 • 混合输入字符串和数字 • 创建和使用结构 • 创建和使用共用休 • 创建和使用枚举 • 创建和使用指针 • 使用 new和delete 管理动态…

热点创意大师智能体

热点创意大师&#xff1a;自媒体创作者的灵感引擎 文心智能体平台AgentBuilder | 想象即现实 文心智能体平台AgentBuilder&#xff0c;是百度推出的基于文心大模型的智能体平台&#xff0c;支持广大开发者根据自身行业领域、应用场景&#xff0c;选取不同类型的开发方式&#…

数据集笔记:新加坡 一些交通的时间序列统计量

1 机动车年度保有量 data.gov.sg 各类机动车年度保有量 数据范围&#xff1a;2005年1月 - 2020年12月 1.1 数据说明 非高峰时段车辆 包括周末车&#xff08;Weekend Cars&#xff09;和 修订版非高峰时段车辆&#xff08;Revised Off Peak Cars&#xff09;&#xff0c;该…

Nginx 代理配置导致浏览器应用网页页面加载失败的分析与解决

Nginx 代理配置导致应用页面加载失败的分析与解决 前期部署信息&#xff1a; 部署DM数据库DEM时&#xff0c;配置了nginx代理&#xff0c;conf配置内容如下&#xff1a; charset utf-8;client_max_body_size 128M;listen 4567;server_name 192.168.1.156;root /opt/h5/;index…

交通安全知识竞赛主持稿串词

各位领导、在场的所有职工同志们&#xff0c;大家下午好! 行政房管部为了配合我厂开展的一系列安全生产宣传教育活动&#xff0c;普及安全知识&#xff0c;弘扬安全文化&#xff0c;结合本部门工作实际&#xff0c;今天在这里开展一项交通安全法律法规直至竞赛活动。 特意前来…

发展中的脑机接口:SSVEP特征提取技术

一、简介 脑机接口&#xff08;BCI&#xff09;是先进的系统&#xff0c;能够通过分析大脑信号与外部设备之间建立通信&#xff0c;帮助有障碍的人与环境互动。BCI通过分析大脑信号&#xff0c;提供了一种非侵入式、高效的方式&#xff0c;让人们与外部设备进行交流。BCI技术越…

Qt常用控件之旋钮QDial

旋钮QDial QDial 表示一个旋钮控件。 1. QDial属性 属性说明value当前数值。minimum最小值。maximum最大值。singleStep按下方向键时改变的步长。pageStep按下 pageUp/pageDown 的时候改变的步长。sliderPosition界面上旋钮显示的初始位置。tracking外观是否会跟踪数值变化&…

开源向量数据库Milvus简介

开源向量数据库Milvus简介 Milvus 是一个开源的、高性能、高扩展性的向量数据库&#xff0c;专门用于处理和检索高维向量数据。它适用于相似性搜索&#xff08;Approximate Nearest Neighbor Search&#xff0c;ANN&#xff09;&#xff0c;特别适合**AI、推荐系统、计算机视觉…

html+js 轮播图

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图示例</title><style>/* 基本样式…

ISP 常见流程

1.sensor输出&#xff1a;一般为raw-OBpedestal。加pedestal避免减OB出现负值&#xff0c;同时保证信号超过ADC最小电压阈值&#xff0c;使信号落在ADC正常工作范围。 2. pedestal correction&#xff1a;移除sensor加的基底&#xff0c;确保后续处理信号起点正确。 3. Linea…

BDF报告翻译简介后:关于A φ方法criterion引理1如何由范数导出内积

关于A φ方法criterion 引理1 如何由范数导出内积 在数学中&#xff0c;特别是在泛函分析中&#xff0c;给定一个范数&#xff0c;可以定义一个与之相关的内积。这个过程不是总是可能的&#xff0c;但当一个赋范向量空间是完备的且满足平行四边形恒等式时&#xff0c;可以导出…

FakeApp 技术浅析(二):生成对抗网络

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;简称 GANs&#xff09;是 FakeApp 等深度伪造&#xff08;deepfake&#xff09;应用的核心技术。GANs 由 生成器&#xff08;Generator&#xff09; 和 判别器&#xff08;Discriminator&#xff09; 两个…

基于fast-whisper模型的语音识别工具的设计与实现

目录 摘 要 第1章 绪 论 1.1 论文研究主要内容 1.1.1模型类型选择 1.1.2开发语言的选择 1.2 国内外现状 第2章 关键技术介绍 2.1 关键性开发技术的介绍 2.1.1 Faster-Whisper数据模型 2.1.2 Django 第3章 系统分析 3.1 构架概述 3.1.1 功能构架 3.1.2 模块需求描述 3.2 系统开…

华为在不同发展时期的战略选择(节选)

华为在不同发展时期的战略选择&#xff08;节选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 来源&#xff1a;谢宁专著《华为战略管理法&#xff1a;DSTE实战体系》。本文有节选修改。 导言 从目前所取得的成就往回看&#xff0c;华为…

STM32定时器超声波测距实验手册

1. 实验目标 使用STM32 HAL库和定时器实现超声波测距功能。 当超声波模块前方障碍物距离 < 10cm 时&#xff0c;点亮板载LED。 2. 硬件准备 硬件模块说明STM32开发板STM32F103C8T6HC-SR04模块超声波测距模块杜邦线若干连接模块与开发板 3. 硬件连接 HC-SR04引脚STM32引脚…

软件测试之白盒测试知识总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 概念与定义 白盒测试&#xff1a;侧重于系统或部件内部机制的测试&#xff0c;类型分为分支测试&#xff08;判定节点测试&#xff09;、路径测试、语句测试…

【NTN 卫星通信】低轨卫星通信需要解决的关键问题

1 低轨卫星通信需要考虑的关键问题 3GPP在开始阶段对低轨卫星通信需要面对的关键问题对架构的影响进行了探讨&#xff0c;主要在协议23.737中&#xff0c;我们来看看有哪些内容吧。 2 关键问题讨论 2.1 大型卫星覆盖区域的移动性管理 PLMN的覆盖区域受到HPLMN母国监管机构的限…