NOI大纲——普及组——图的表示与存储

图的表示与存储

一、邻接矩阵

邻接矩阵是一种表示图(Graph)的方法,它使用一个二维矩阵来表示图中的顶点和边。邻接矩阵适用于存储稠密图(Dense Graph),因为它能够直观地展示顶点之间的连接关系。

以下是邻接矩阵的基本构造和特点:

  1. 矩阵表示

    • 如果一个图有 ( V ) 个顶点,则邻接矩阵是一个 ( V \times V ) 的矩阵 ( A )。
    • 如果存在一条从顶点 ( i ) 到顶点 ( j ) 的边,则 ( A[i][j] ) 为1(或表示权重的值);如果不存在边,则 ( A[i][j] ) 为0。
  2. 无向图

    • 在无向图中,边 ( (i, j) ) 和 ( (j, i) ) 是相同的,因此邻接矩阵是对称的,即 ( A[i][j] = A[j][i] )。
  3. 有向图

    • 在有向图中,边 ( (i, j) ) 和 ( (j, i) ) 是不同的,因此邻接矩阵不一定对称。

例如,考虑一个有4个顶点(0, 1, 2, 3)的无向图,边为:0-1, 0-2, 1-2, 2-3。这个图的邻接矩阵表示如下:

      0        1         2        3
——————————————————————————————————————————
  0 | 36767    1         1        36767
  1 | 1        36767     1        36767
  2 | 1        1         36767    1
  3 | 36767    36767     1        36767

在实际应用中,邻接矩阵有以下优点和缺点:

优点:

  1. 快速查找:可以在 ( O(1) ) 时间内检查两个顶点之间是否存在边,因为只需检查矩阵中的一个元素。
  2. 简单表示:邻接矩阵的表示形式简单直观,易于理解和实现。

缺点

  1. 空间消耗大:邻接矩阵需要 ( V^2 ) 个存储单元,对于稀疏图(Sparse Graph)而言,空间效率低下。
  2. 遍历相邻顶点效率低:遍历一个顶点的所有相邻顶点需要 ( O(V) ) 的时间,因为需要检查整行或整列。

特性

特性1:无向网的邻接矩阵是对称的。

特性2:顶点i的度等于第i行中非极大值(32767)的个数。

特性3:邻接矩阵常用于图论中的算法研究,尤其是在图比较稠密的情况下。它也在某些网络和关系表示中有广泛应用。

二、邻接表

邻接表是一种用于表示图(Graph)数据结构的方法。图由顶点(Vertices)和边(Edges)组成,邻接表通过记录每个顶点的相邻顶点来表示图的结构。相比于邻接矩阵,邻接表在存储稀疏图时更加节省空间。

以下是邻接表的基本构造和特点:

  1. 顶点列表

    • 图的每个顶点都有一个列表或链表来存储与之相邻的顶点。
    • 这些列表或链表通常存储在一个数组或哈希表中,数组的每个索引或哈希表的每个键对应一个顶点。
  2. 边列表

    • 对于每个顶点,邻接表记录该顶点的所有相邻顶点。
    • 每个顶点的相邻顶点可以用链表、动态数组或其他合适的数据结构存储。

例如,考虑一个图有4个顶点(0, 1, 2, 3),以及以下边:0-1, 0-2, 1-2, 2-0, 2-3, 3-3。这个图的邻接表表示如下:

顶点  邻接顶点
0:    1 -> 2
1:    2
2:    0 -> 3
3:    3

在实际应用中,邻接表有以下优点和缺点:

优点

  1. 节省空间:对于稀疏图,邻接表比邻接矩阵更节省空间。邻接矩阵需要存储 (V^2) 个元素(V是顶点数),而邻接表只需要存储边的数量。
  2. 高效遍历:可以高效地遍历每个顶点的相邻顶点。

缺点

  1. 查询某一对顶点是否相邻不如邻接矩阵高效:需要遍历列表来查找是否存在一条边。
  2. 不适合存储密集图:对于密集图,邻接表的优势减小,因为存储的边数接近于顶点数的平方。

特性

特性1:邻接表不唯一。

特性2:若无向网中有n个顶点、e条边,则其邻接表需要n个头结点和2e个表结点。存储稀疏图比较合适。

特性3:无向网中顶点Vi的度为第i个单链表中的结点数。

特性4:邻接表出度易找,入度难找。逆邻接表出度难找,入度易找。

特性5:邻接表常用于算法和数据结构课程中,也在实际的网络、社交媒体分析等领域有广泛应用。

三、邻接矩阵和邻接表的区别和用途

区别

(1)对于任一确定的无向网,邻接矩阵是唯一的(行列号与顶点编号一致),但邻接表不唯一。

(2)邻接矩阵的空间复杂度是O(n^2),邻接表为O(n + e)。

(3)邻接矩阵的时间复杂度是O(n^2),邻接表为O(elog2(e))。

用途

邻接矩阵多用于稠密图。

邻接表多用于稀疏图。

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

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

相关文章

机器学习环境搭建

前言 个人笔记,记录框架和小问题,没有太详细记载。。 1、Anaconda安装 下载地址: Free Download | Anaconda (慢) ​ 国内镜像:https://link.csdn.net/?targethttp%3A%2F%2Fitcxy.xyz%2F241.html 下载…

五国如何实现关键基础设施保护方法的现代化

本叙述介绍了关键基础设施面临的不断演变的风险,并讨论了关键五国(澳大利亚、加拿大、新西兰、英国和美国)如何实现关键基础设施保护方法的现代化。它还确定了加强国内关键基础设施安全性和弹性的共同方法,同时认识到鉴于关键基础设施的相互关联性,国际社会需要采取合作和…

【H.264】五分钟入门H.264协议

<> 博客简介&#xff1a;Linux、rtos系统&#xff0c;arm、stm32等芯片&#xff0c;嵌入式高级工程师、面试官、架构师&#xff0c;日常技术干货、个人总结、职场经验分享   <> 公众号&#xff1a;嵌入式技术部落   <> 系列专栏&#xff1a;C/C、Linux、rt…

以现在的社会形势走向,选什么专业好?

随着高考结束&#xff0c;选专业的话题又开始变得越来越热门。因为很多学生都想知道自己更适合什么样的专业&#xff0c;如何结合未来的社会形势来选择更好的专业&#xff0c;这的确是一个很考验能力的问题&#xff0c;因为有太多人曾经为了选择专业而纠结过。 高考志愿填报选…

基于多源数据的密码攻防领域知识图谱构建

源自&#xff1a; 信息安全与通信保密杂志社 作者&#xff1a;曹增辉 , 郭渊博 , 黄慧敏 摘 要 提高网络空间安全的密码攻防能力&#xff0c;需要形成可表示、可共享、可分析的领域知识模式和知识库。利用自顶向下的构建方法&#xff0c;并通过本体构建方法梳理密码攻防领域…

Nginx 配置文件

Nginx的配置文件的组成部分&#xff1a; 主配置文件&#xff1a;nginx.conf子配置文件&#xff1a;include conf.d/*.conf 全局配置 nginx 有多种模块 核心模块&#xff1a;是 Nginx 服务器正常运行必不可少的模块&#xff0c;提供错误日志记录 、配置文件解析 、事件驱动机…

Android Studio 2023版本切换DNK版本

选择自己需要的版本下载 根目录下的配置路劲注意切换 build.gradle文件下的ndkVersion也要配好对应版本

现代信息检索笔记(二)——布尔检索

目录 信息检索概述 IR vs数据库: 结构化vs 非结构化数据 结构化数据 非结构化数据 半结构化数据 传统信息检索VS现代信息检索 布尔检索 倒排索引 一个例子 建立词项&#xff08;可以是字、词、短语、一句话&#xff09;-文档的关联矩阵。 关联向量 检索效果的评价 …

使用Visual Studio Code记笔记

因为学习需要&#xff0c;记笔记是很有必要的&#xff0c;平常发CSDN&#xff08;都让CSDN是很棒的哈&#xff09;&#xff0c;后来使用VS Code的时候发现了很多插件&#xff0c;觉得做笔记还是相对不错的&#xff0c;主要用到的还是Markdown 主要设计的插件包括&#xff1a; …

第3章:数据结构

树 对稀疏矩阵的压缩方法有三种&#xff1a; 1、三元组顺序表 2、行逻辑连接的顺序表 3、十字链表 同义词才会占用同个位置&#xff0c;从而需要进行多次比较。这些关键字的第一个可以不是e的同义词&#xff0c;可以是排在e之前的关键字正好占了那个位置。 Dijkstra算法主要特点…

MySQL 高级SQL高级语句(二)

一.CREATE VIEW 视图 可以被当作是虚拟表或存储查询。 视图跟表格的不同是&#xff0c;表格中有实际储存数据记录&#xff0c;而视图是建立在表格之上的一个架构&#xff0c;它本身并不实际储存数据记录。 临时表在用户退出或同数据库的连接断开后就自动消失了&#xff0c;而…

javassmmysql 宣和酒店点餐系统37378-计算机毕业设计项目选题推荐(附源码)

目 录 摘要 1 绪论 1.1研究背景 1.2目的 1.3ssm框架介绍 1.3论文结构与章节安排 2 宣和酒店点餐系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章…

Pascal 函数入门示例,及其汇编语言分析

1&#xff0c; Pascal 函数的定义格式 pascal 函数的定义语法格式: FUNCTION 函数名(形式参数表):函数类型; VAR 函数的变量说明; BEGIN 函数体; END; 2&#xff0c;Pascal 函数定义调用示例 order_self.pas 代码&#xff1a; PROGRAM example01;va…

黑龙江等保测评科普

黑龙江的等保测评&#xff0c;即信息安全等级保护测评&#xff0c;是中国网络安全法框架下的一项重要制度&#xff0c;旨在提升信息系统安全水平&#xff0c;保护关键信息基础设施免受威胁。下面是对黑龙江等保测评流程和要求的科普&#xff1a; 1. 等保测评概念 定义&#xff…

Linux中定位JVM问题常用命令

查询Java进程ID #ps axu | grep java #ps elf | grep java查看机器负载及CPU信息 #top -p 1(进程ID) #top (查看所有进程)获取CPU飙升线程堆栈 1. top -c 找到CPU飙升进程ID&#xff1b; 2. top -Hbp 9702(替换成进程ID) 找到CPU飙升线程ID&#xff1b; 3. $ printf &quo…

操作系统精选题(三)(简答题、概念题)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;操作系统 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 简答题 一、对 CPU、内存、外设并…

SpringCloud和Dubbo有什么区别

SpringCloud与Dubbo的区别 两者都是现在主流的微服务框架&#xff0c;但却存在不少差异&#xff1a; 初始定位不同&#xff1a; SpringCloud定位为微服务架构下的一站式解决方案&#xff1b;Dubbo 是 SOA 时代的产物&#xff0c;它的关注点主要在于服务的调用和治理 生态环境…

【linux】 给命令添加别名

【linux】 给命令添加别名 文章目录 【linux】 给命令添加别名1.修改2.效果 1.修改 2.效果

【AI大模型】跌倒监控与健康:技术实践及如何改变未来

文章目录 1. **背景与意义**2. **关键技术与方法**2.1 传感器数据融合2.2 深度学习模型2.3 行为模式识别2.4 预测与预防 3. **应用场景**3.1 老年人跌倒预警3.2 康复患者监测3.3 高风险职业防护 4. **实践案例**案例1&#xff1a;某老年社区的跌倒预警系统案例2&#xff1a;康复…

R语言数据分析案例39-合肥市AQI聚类和多元线性回归

一、研究背景 随着全球工业化和城市化的迅速发展&#xff0c;空气污染问题日益凸显&#xff0c;已成为影响人类健康和环境质量的重大挑战。空气污染不仅会引发呼吸系统、心血管系统等多种疾病&#xff0c;还会对生态系统造成不可逆转的损害。因此&#xff0c;空气质量的监测和…