7.2.1 二维数组 / 邻接矩阵表示法

数据结构之图的邻接矩阵存储方法 这段时间遇到了关于图的问题,然后发现之前学过的内容都还给老师了, 阅读详情

图和它的邻接矩阵示例

  • G1 是有向图,G2 是无向图,无向图的邻接矩阵是对称的。
    在这里插入图片描述

在这里插入图片描述

  • 可以借助邻接矩阵判断两个顶点之间是否有弧或者边相连。
    有向图中包括顶点和弧
    无向图中包括顶点和边
    对于无向图:顶点 vi 的度是第 i 行的元素和 或者 第 i 列的元素和
    对于有向图:顶点 vi 的出度是第 i 行的元素和,入度是第 j 列的元素和

有向网和它的邻接矩阵示例

  • 定义
    下图 wi,j 为 顶点 vi 和 vj 构成的弧的权值。
    在这里插入图片描述
  • 示例
    在这里插入图片描述

数组表示法相关 存储结构

  • 用两个数组分别存储数据元素(顶点)的信息 和 数据元素之间的关系(边或弧)的信息。
#define INFINITY        INT_MAX     // 最大值 / 无穷大
#define MAX_VERTEX_NUM  20			// 最大顶点个数

// 此数据类型表示图的类型
typedef enum
{
	DG,		// 有向图
	DN,		// 有向网
	UDG,	// 无向图
	UDN		// 无向网
} GraphKind;

typedef struct ArcCell
{
	VRType adj;		//顶点关系类型,
					//无权图用1和0表示相邻和不相邻
					//带权图则表示权值类型
	InfoType *info; //该弧相关信息的指针
} ArcCell, AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
// 上面这个二维数组类型表示

// 有n个顶点的图需要存放 n 个顶点信息和 n*n 个弧信息
typedef struct
{
	VertexType vexs[MAX_VERTEX_NUM];	//顶点向量 / 顶点信息
	AdjMatrix arcs;						//邻接矩阵 / 弧信息
	int vexnum, arcnum;					//图的顶点数和弧数
	GraphKind kind;						//图的种类标志
} MGraph;

构造图G算法(基于结构 MGraph)

// 有 n 个顶点的图需要存放 n 个顶点信息和 n*n 个弧信息
typedef struct
{
	VertexType vexs[MAX_VERTEX_NUM];	//顶点向量 / 顶点信息
	AdjMatrix arcs;						//邻接矩阵 / 弧信息
	int vexnum, arcnum;					//图的顶点数和弧数
	GraphKind kind;						//图的种类标志
} MGraph;

Status CreateGraph(MGraph &G)
{
	// 采用数组(邻接矩阵)表示法,构造图 G
	scanf(&G.kind);
	switch(G.kind)
	{
		case DG: return CreateDG(G);	//构造有向图
		case DN: return CreateDN(G);	//构造有向网
		case UDG: return CreateUDG(G); //构造无向图
		case UDN: return CreateUDN(G); //构造无向网
		default: return ERROR;
	}
}
// 以构造 无向网 为例
Status CreateUDN(MGraph &G)
{
	// 采用数组(邻接矩阵)表示法,构造无向网
	scanf(&G.vexnum, &G.arcnum, &IncInfo);
	for(i=0; i<G.vexnum; ++i)
	{
		scanf(&G.vexs[i]); //构造顶点向量
	}
	for(i=0; i<G.vexnum; ++i) // 初始化邻接矩阵
	{
		for(j=0; j<G.vexnum; ++j)
		{
			G.arcs[i][j] = {INFINITY, NULL};
		}
	}
	for(k=0; k<G.arcnum; ++k) // 构造邻接矩阵
	{
		scanf(&v1, &v2, &w); // 输入一条边依附的顶点及权值
		i = LocateVex(G, v1); //确定 v1,v2 在图中的位置
		j = LocateVex(G, v2); //即v1,v2在一维数组vexs中的位置 / 下标
		G.arcs[i][j].adj = w; //<v1, v2> 的权值
		G.arcs[j][i].adj = G.arcs[i][j].adj;
		if(IncInfo)
		{
			// 若弧含有相关信息,则输入
			Input(*G.arcs[i][j].info);
		}
	}
	return OK;
}
  • 时间复杂度
    利用上述算法构造一个具有 n 个顶点和 e 条边的无向网 G 的时间复杂度是 O( n2 + e * n ),
    对邻接矩阵的初始化耗费了 O( n2 ) 。
带权无向图的邻接矩阵表示法(C语言实现) 带权无向图的邻接矩阵表示法(C语言实现) 文章目录带权无向图的邻接矩阵表示法(C语言实现)一、邻接矩阵表示法二、本次程序实现的功能三、带权无向图的结构体定义四、创建无向图及邻接矩阵五、输出邻接矩阵六、输出顶点集合七、判断两顶点是否邻接八、全部代码九、测试 一、邻接矩阵表示法 ​ 定义:所谓邻接矩阵存储,是指用一个一维数组存储图中顶点的信息,用一个二维数组存储图中边的信息(即各顶点之间的邻接关系),存储顶点之间邻接关系的二维数组称为邻接矩阵。 ​ 对于带权图而言,若顶点Vi 和 Vj 之间有边相连,则邻接 阅读详情

相关推荐

数据结构 图的邻接矩阵

图的邻接矩阵的存储方式是用两个数组来实现的,一个一维数组存储顶点信息,一个二维数组存储线(无向图)或弧(有向图)的信息。设图G有n个顶点,则邻接矩阵是一个n × n的方阵,定义为:无向图的邻接矩阵,两个顶点有边则为1,否则,为0;因为是无向图arc[i][j] = arc[j][i],所以矩阵为对称矩阵,对角线为自己到自己的边,邻接矩阵中,行之和或者列之和都为各顶点度的总数。设图G有是网图,有n个...

夜雨柠檬 3万+

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

图的存储结构(邻接矩阵和邻接表) 前言: 前面我们学习图的有些定义和术语,对图这个数据结构有了新的见解和认知,让我们理解图结构的知识,今天我们学习图的存储结构,图的存储结构比较多,我们今天主要是学习邻接矩阵和邻接表,对于邻接矩阵是使用数组的形式,我们不叫顺序存储结构了,叫邻接矩阵,邻接表和我们十字链有异曲同工之处,只不过邻接表的链表要多一点,好了话不多说我们开始学习吧!!! 每日一遍,防止颓废 1.邻接矩阵 官方术语: 邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵。设G=(V,

qq_46104786的博客 1万+

第1关:图的邻接矩阵存储及求邻接点操作

邻接矩阵具有如下性质: (1)图中各项点的序号确定后,图的邻接矩阵是唯一确定的;(4)有向图邻接矩阵中第i行非0元素的个数为第i个顶点的出度,第i列非0元素的个数为第i个顶点的入度,第i个顶点的度为第i行与第j非0元素个数之和;图的邻接矩阵表示法是图的一种顺序存储结构,优点是可以快速判断两个顶点之间是否存在边,可以快速添加边或者删除边,可以快速计算顶点度数、求邻接点的操作等;个元素存储顶点间相邻关系,对于无权图,当邻接矩阵中的元素仅表示相应的边是否存在时,个顶点的图时,用邻接矩阵中的。

toptopniba的博客 6370

数据结构-图的邻接矩阵创建以及遍历输出(C语言)

图的邻接矩阵(AdjacencyMatrix)存储方式是用两个数组来表示图。一个一维的数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息。 图矩阵的创建: 首先思考图的结构利用矩阵 1.输入顶点数总边数 2.依次输入点的信息 3.初始化邻接矩阵使得每个权值都初始化为无穷大 4. 构造邻接矩阵。依次输入每条边依附的顶点和其权值。利用无向矩阵对称。即对称边赋相同的值 void CreateAMGraph(AMGraph &G){ printf("请输入顶点以及边.

m0_53547827的博客 6391

C语言 图的建立(邻接矩阵与邻接表)

5Cinfty。

m0_73070900的博客 6512

Pikachu靶场环境搭建(Windows环境下安装详细教程)

Pikachu靶场是一个漏洞测试练习平台。其中包含了常见的web安全漏洞,如果你是一个渗透测试学习者没有靶场的练手,那么pikachu是一个很好的测试平台。

weixin_42857656的博客 1823

【c语言】二维数组

​ 二维数组的特性 长度固定 、 同类型、 有编号(先行后列),逻辑造型:表格矩阵状 二维数组声明生成: 类型 数组名[行数][列数] int arr[3][4]; 二、二维数组的基本用法 数组元素(成员)的使用:数组名[先行][后列] ​初始化成员个数时与一维数组不同点:列数不能省略!!!根据列数自动决定行数。 一、二维数组的特性 二、二维数组的基本用法 三、二维数组的初始化定义 1)完全初始化 2)不完全初始化 ​ 3)初始化成员个数 四、注意事项 五、循环遍历

努力让自己的能力配得上梦想. 4654

提示词工程的几个参数

低 temperature + 低 top-p:输出最稳定、最可靠,适合需要准确性和一致性的场景。高 temperature + 高 top-p:输出最多样化、最富有创意,适合需要灵感和探索的场景。Max Length:您可以通过调整max length来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。是一个字符串,可以阻止模型生成 token,指定是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为。

weixin_44212787的博客 1826

邻接矩阵( 二维数组指定定义 )

逻辑结构分为两部分:V和E集合。因此,用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵 ...

while_black的博客 1897

最新版MySQL 9.0 数据库的下载与安装(图文)

本篇文章基于Windows 10 系统下载与安装MySQL 9.0 版本。

我是聂可的博客 7万+

微信小程序 | 小程序开发

事实上,目前小程序在我们生活中已经随处可见(特别是这次疫情的推动,不管是什么岗位、什么年龄阶段的人,到哪都需要打开健康码)WePY是由腾讯开源的,一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。Mpvue是一个使用Vue开发小程序的前端框架,也是 支持 微信小程序、百度智能小程序,头条小程序 和 支付宝小程序;微信小程序、支付宝小程序、淘宝小程序、抖音小程序、头条小程序、QQ小程序、美团小程序等。,其他平台的小程序往往是平台本身的一些公司或者顺手开发的。

CoderHing的博客~ 1万+

数据结构-使用邻接矩阵创建无向图

1.邻接矩阵 邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵。 2.程序分析 W i,j表示边上的权值;∞表示计算机允许的,大于所有边权值的数。 用邻接矩阵表示法表示图,除了用一个存储邻接矩阵的二维数组外,还需要用一个一维数组来存储顶点信息。 //采用邻接矩阵表示法创建无向网 #include <iostream> using namespace std; #define MaxInt 32767 //表示极大值,即∞ #de

晨钟暮鼓林中径,晚风花间寺中人 2万+

[华为]华为无线控制器AC6508简单配置实例

用户需求:3个地址段,分别是领导、员工、访客,访问控制策略是只允许访客上网,不允许访客访问内网。 vlan173为设备的管理地址和AP获取的地址,领导、员工、访客的vlan分别是vlan131/vlan132/vlan133 首先是许可的下载,使用华为的账号登陆http://app.huawei.com/isdp ,然后按照说明输入许可,下载许可,将许可导入到设备。 web界面访问后,直接按照配置向导配置就可以了。 1.基本配置里主要配置license、设备名称、设备时间 2.端口配置:连接上

日子_很简单 2万+

图的邻接矩阵表示法&邻接表表示法

图表示是一种多对多的关系的数据结构。因为线性表表示的是一种一对一的关系的数据结构,树表示的是一种一对多的数据结构,所以图把线性表和树都包含在内。图由一个非空的有限顶点集合和一个有限边集合组成。当我们描述图的时候,一定要包含以下两个元素:1、一组顶点:例如用Vertex表示顶点的集合。2、一组边:用Edge表示边的集合,一条边是一组顶点对。      •无向边 :(i,j)∈Edge,i,j∈Ver...

大力海棠的博客 9511

3D 结构光相机工作原理全解 | 从编码投射到三维重建,原理 + 代码 + 工业实战一站式掌握

本文从3D结构光相机的整体架构出发,层层拆解了编码投射、相位计算、相位解包裹、三维重建的核心原理,补充了工业实战所需的公式推导、代码实现、参数调优、设备选型和案例落地,核心总结如下:相位是3D结构光成像的“灵魂”,其精度、稳定性直接决定3D重建的效果,包裹相位与绝对相位的区分的是工业实战的基础;编码投射的核心是“正弦条纹+格雷码条纹”组合,正弦条纹负责高精度相位提取,格雷码条纹辅助解包裹,适配工业场景的精度与稳定性需求;

getusushu的博客 411

基于Qt的工业组态软件开发:图形绘制与TCP通讯实现

在数据接收时,通过 readyRead 信号触发解析函数,校验数据包完整性后提取有效数据,并更新对应图形元素的状态,例如根据温度值改变矩形的填充色,实现设备状态可视化。测试阶段,我们将软件部署到Windows工控机,连接PLC设备进行通讯测试,结果表明图形元素响应及时,TCP数据传输稳定,满足工业现场的基本需求。综上所述,基于Qt的组态软件开发,核心在于利用 QGraphicsView 框架实现图形元素的灵活绘制与管理,结合 QTcpSocket 完成工业数据的可靠交互。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 272

图的邻接矩阵表示法

图邻接矩阵表示 1.图的邻接矩阵表示法   在图的邻接矩阵表示法中:   ① 用邻接矩阵表示顶点间的相邻关系   ② 用一个顺序表来存储顶点信息 2.图的邻接矩阵(Adacency Matrix)   设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵: 【例】下图中无向图G 5 和有向图G 6 的邻接矩阵分别为A l 和A 2 。 3.网络的邻

winbobob的专栏 3626

Synthesia技术浅析(四):自然语言处理

Synthesia 的自然语言处理(NLP)模块是其核心技术之一,涵盖了文本转语音(TTS)、情感分析以及多语言支持等多个方面。

m0_75253143的博客 1166

图的存储结构——邻接矩阵

图的存储结构邻接矩阵表示法存储表示采用邻接矩阵表示法创建无向网用代码实现无向网 若有n个顶点,就是n*n的方阵,与边数无关 对称矩阵:从矩阵的左上角到右上角的主对角线为轴,右上角的元与左下角对应的元全都是相等的 邻接矩阵表示法 有向图、无向图的邻接矩阵表示法 如: 无向图 总结: 无向图的邻接矩阵是对称的; 顶点i的度=第i行(列)中1的个数; 特别的:完全图的邻接矩阵中,对角元素为0,其余为...

ker的博客 6159

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

邻接矩阵—图的存储结构

文章目录邻接矩阵1、邻接矩阵表示法2、无向图的邻接矩阵表示法3、有向图的邻接矩阵表示法4、网(有权图)的邻接矩阵表示法5、邻接矩阵的存储表示6、采用邻接矩阵表示法创建无向网7、邻接矩阵优点和缺点 图没有顺序存储结构,但可以借助二维数组来表示元素之间的关系,即邻接矩阵表示法 图的链式存储结构有多种,邻接表、十字链表、邻接多重表 邻接矩阵、邻接表是我们重点要研究的 邻接矩阵 1、邻接矩阵表示法 建立...

wmy0217_的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

图(2)—— 邻接矩阵表示法

图的存储结构 图的存储结构比较复杂,其复杂性主要表现在:  ◆ 任意顶点之间可能存在联系,无法以数据元素在存储区中的物理位置来表示元素之间的关系。  ◆ 图中顶点的度不一样,有的可能相差很大,若按度数最大的顶点设计结构,则会浪费很多存储单元,反之按每个顶点自己的度设计不同的结构,又会影响操作。 图的常用的存储结构有:邻接矩阵、邻接链表、十字链表、邻接多重表和边表,其中邻接矩

阳光日志 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

《数据结构》-图的邻接矩阵表示法(三)

图的存储结构 图的逻辑结构是:多对多 图的存储方式 数组(邻接矩阵)表示法 定义 图没有顺序存储结构,但可以借助二维数组来表示元素间的关系 建立一个顶点表(记录各个顶点信息),和一个邻接矩阵(表示各个顶点之间的关系) 设图 A = (V,E),有 n 个顶点,则 顶点表的为 i 0 1 2 … n-1 Vexs[i] V1 V2 V3 … Vn 图的邻接矩阵是一个二维数组 A.arcs[n][n] 定义为:A.arcs[i][j] = 1

tyustli 7950

邻接矩阵表示法创建无向图

邻接矩阵表示法创建无向图 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度。 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。 输入第二行为顶点的信息,每个顶点只能用一个字符表示。 依次输入j行,每行输入一条边依附的顶点。 输出格式: 依次输出各顶点的度,行末没有最后的空格。 输入样例: 5 7 ABCDE AB AD BC BE CD CE DE 输出样例: 2 3 3 3 3 零阶矩阵法 #include<iostream>

qq_51780315的博客 3866

数据结构之图(二)——邻接矩阵

图的逻辑结构为多对多,图没有顺序存储结构,但可以借助二维数组来表示元素间的关系,即数组表示法(邻接矩阵)。图的链式存储结构可以用多重链表来描述,如邻接表,邻接多重表以及十字链表等。 邻接矩阵 数组(邻接矩阵)表示法: 建立一个邻接表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点间的关系)。 1.设图A=(V,E)有n个顶点,则有顶点表Vexs[n]如下, i 0 1 2 ⋯\cdot...

daocaoren_的博客 9万+

图1——用邻接矩阵表示法创建有向图

图 可分两部分:一个是创建顶点信息,可用一个一维数组存储;另一个是创建弧的信息,包括弧的相关顶点和权值,可存储到二维数组里,其中,二维数组的下标分别表示两个顶点的弧尾和弧头编号,权值存放在对应的数组中。 创建一个网: 请输入有向网N的顶点数和弧数:6 9 请输入6个顶点的值: a b c d e f 请分别输入9条弧的弧尾 弧头 权值(以空格分隔): a b 6 a e 5 a f 9 f c 7...

凌空的桨 1万+

图的存储—邻接矩阵和邻接表

本文涉及图的其中两种存储结构—邻接矩阵和邻接表,附代码。

2401_83624776的博客 5477
上一篇: 7.1图的定义和术语
下一篇: 7.2.0 图的存储结构
你板子冒烟了
博客等级 码龄8年 1278粉丝 582原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值