数据结构--图的存储邻接矩阵法

news2024/11/27 2:40:36

数据结构–图的存储邻接矩阵法

无向图:

有向图:

#define MaxVerTexNum 100 //顶点数目的最大值
typedef struct 
{
    char vex[MaxVerTexNum]; //顶点表
    int Edge[MaxVerTexNum][MaxVerTexNum]; //邻接矩阵,边表
    int vexnum, arcnum; //图的当前顶点数和边数/弧数
} MGraph;

无向图:
第i个结点的 度 \color{red}度 = 第 i 行(或第 i 列) \color{red}第i行(或第i列) i行(或第i列)有向图的非零元素个数

有向图:
第i个结点的 出度 \color{red}出度 出度 = 第 i 行 \color{red}第i行 i的非零元素个数
第i个结点的 入度 \color{red}入度 入度 = 第 i 列 \color{red}第i列 i的非零元素个数
第i个结点的 度 \color{red}度 = 第 i 行、第 i 列 \color{red}第i行、第i列 i行、第i的非零元素个数之和

邻接矩阵法求顶点的度 / 出度 / 入度的时间复杂度为 O ( ∣ V ∣ ) \color{purple}邻接矩阵法求顶点的度/出度/入度的时间复杂度为 O(|V|) 邻接矩阵法求顶点的度/出度/入度的时间复杂度为O(V)

邻接矩阵法存储带权图(网)

无向网:

有向网:

#define MaxVerTexNum 100 //顶点数目的最大值
#define INF 0x3f3f3f3f
typedef char VertexType; //顶点的数据类型
typedef int EdgeType; //带权图中边上权值的数据类型

typedef struct 
{
    VertexType Vex[MaxVerTexNum]; //顶点
    EdgeType Edge[MaxVerTexNum][MaxVerTexNum]; //边的权
    int vexnum, arcnum; //图的当前顶点数和弧数
} MGraph;

邻接矩阵法的性能分析\

空间复杂度: O ( ∣ V ∣ 2 ) O(|V|^2) O(V2) ——只和顶点数相关,和实际的边数无关
适合用于存储稠密图
无向图的邻接矩阵是对称矩阵,可以压缩存储(只存储上三角区/下三角区)

邻接矩阵法的性质

设图G的邻接矩阵为A(矩阵元素为0/1),则 A n A^n An的元素 A n [ i ] [ j ] A^n[i][j] An[i][j]等于由顶点 i 到顶点 j 的长度为 n 的路径的数目

知识回顾与重要考点

邻接矩阵法要点回顾:
• 如何计算指定顶点的度、入度、出度(分无向图、有向图来考虑)?时间复杂度如何?
• 如何找到与顶点相邻的边(入边、出边)?时间复杂度如何?
• 如何存储带权图?
• 空间复杂度—— O ( ∣ V ∣ 2 ) O(|V|^2) O(V2),适合存储稠密图
• 无向图的邻接矩阵为对称矩阵,如何压缩存储?
• 设图G的邻接矩阵为A(矩阵元素为0/1),则An的元素An[i][j]等于由顶点i到顶点j的长度为n的路径的数目

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

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

相关文章

最新 robot framework安装

相信大家对robot framework并不陌生,它是一个基于Python语言,用于验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架,提供了一套特定的语法,并且有非常丰富的测试库。 ### [Python](https://www.pytho…

gogs的自定义配置

在 GOGS 下载并安装后,在程序目录下建立一个custom/conf/app.ini的配置文件,内容如下: APP_NAME Gogs # APP名字 RUN_USER git # 启动用户,设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

联通 Flink 实时计算平台化运维实践

摘要:本文整理自联通数科实时计算团队负责人、Apache StreamPark Committer 穆纯进在 Flink Forward Asia 2022 平台建设专场的分享,本篇内容主要分为四个部分: 实时计算平台背景介绍 Flink 实时作业运维挑战 基于 StreamPark 一体化管理 …

智能安全配电装置在老旧建筑防火中的应用 安科瑞 许敏

【摘要】现代社会的发展离不开电能,随着电能应用的广泛性,对用电安全有了更高的要求。近些年来,用电安全形式严峻,尤其是一些老旧建筑中因用电而引起的火灾事故频发,造成一系列严重的损失,严重影响着民众的…

rancher部署

Rancher 管理 Kubernetes 集群 //Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 …

工控机设备安全

工控设备安全现状 工业控制系统是支撑国民经济的重要设施,是工业领域的神经中枢。现在工业控制系统已经广泛应用于电力、通信、化工、交通、航天等工业领域,支撑起国计民生的关键基础设施。 随着传统的工业转型,数字化、网络化和智能化的工…

C++11(3)——lambda表达式

目录 1 C98中的一个例子 2 lambda表达式 3 lambda表达式语法 4 函数对象与lambda表达式 1 C98中的一个例子 在C98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。 如果待排序元素为自定义类型,需要用户定义排序时的…

vue新增删除内容排序问题解决处理

本次答题选项的删除添加是个人最初比较头疼的地方。比如ABCD四个选项,删除c选项后,点击【新增答题类型】选项按钮,则默认创建是E选项。再或者就是ABCD四个选项位置删除任意一个后,顺序被打乱等,最后解决了,…

每日刷一题——二维数组中的查找

二维数组中的查找 原题链接:JZ4 二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入…

fury,protostuff 等协议性能测试对比

简单介绍: 序列化框架是系统通信的基础组件,在大数据、AI 框架和云原生等分布式系统中广泛使用。当对象需要跨进程、跨语言、跨节点传输、持久化、状态读写、复制时,都需要进行序列化,其性能和易用性影响运行效率和开发效率。 Fury 是一个基于…

管理本地用户和组

管理本地用户和组 描述用户和组 用户 用户账户用于运行命令的不同人员与程序之间提供安全界限。 使用id显示有关当前登录用户信息 [rootservera ~]# id uid0(root) gid0(root) groups0(root) contextunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023查找其他用户基本…

[STM32教程]01如何开始准备hal库的开发环境

文章目录 概述1、认识硬件环境1.1 ARM简介1.2 STM32简介 2. 软件开发环境准备2.1 Keil MDK安装2.2 安装STM32Cube MX2.3 安装STM32 HAL库2.4 St-Link V2使用 总结 概述 本文介绍如何准备stm32f103的hal库工程开发环境,包括cubemx安装、keil mdk安装、stm32 hal库安…

小程序引入阿里云矢量图库图标

简介 阿里云矢量图库(Aliyun Vector Icon Library)是阿里云提供的一个图标库,为开发者和设计师提供了丰富的矢量图标资源,用于在网页、移动应用和其他设计项目中使用。 使用阿里云矢量图库,你可以快速搜索、选择和下…

如何设置反馈点

如何设置反馈点 前面的POWER DC仿真都是忽略反馈线进行的仿真,如果单板压降不过,电源会自动调整输出电压,来满足负载的得到额定的电压. 仿真上也可以自己添加反馈点,以得到抬高后的电源输出电压值 具体操作如下 同样以下图的CPU的Core电源为例 按照流程正常设置好参数

携程ANR 优化实践 - Binder开辟线程数过多导致主线程ANR异常

了解携程ANR前,我们一起了解 binder 线程池的前生今世 在android系统中,通过binder进行IPC时,服务端总是会起一些Binder线程来响应客户端的请求。这里面就涉及到通过BInder线程池 开辟binder线程 那这些Binder线程又是如何创建,如…

已解决YOLOv5训练报错:RuntimeError: Expected all tensors to be on the same device......

这是发生在集成一个yolov5中没有的检测头head的情况下发生的错误,出现的时候是已经训练起来了,在训练结束时发生的报错,下面是我的解决办法。 1、问题出现及分析排查 改yolov5的网络进行训练时出的报错: RuntimeError: Expected all tenso…

步进电机控制

步进电机控制 #include "./stepper/bsp_stepper_init.h" #include "./delay/core_delay.h" #include "stm32f4xx.h"void TIM_SetTIMxCompare(TIM_TypeDef *TIMx,uint32_t channel,uint32_t compare); void TIM_SetPWM_period(TIM_TypeDef* TI…

Python爬虫学习笔记(五)————JsonPath解析

目录 1.JSONPath —— xpath在json的应用 2.JSONPath 表达式 3.jsonpath的安装及使用方式 4.jsonpath的使用 5.JSONPath语法元素和对应XPath元素的对比 6.实例 (1)商店案例 (2) 解析淘票票的“城市选择”数据 1.JSONPath…

Java8实战-总结3

Java8实战-总结3 基础知识流多线程并非易事 默认方法 基础知识 流 几乎每个Java应用都会制造和处理集合。但集合用起来并不总是那么理想。比方说,从一个列表中筛选金额较高的交易,然后按货币分组。需要写一大堆套路化的代码来实现这个数据处理命令&…

cocos creator Richtext点击事件

组件如图 添加ts自定义脚本,定义onClickFunc点击方法: import { Component, _decorator} from "cc";const { ccclass } _decorator; ccclass(RichTextComponent) export class RichTextComponent extends Component{public onClickFunc(even…