【邻接矩阵】

文章目录

  • 邻接矩阵

图的逻辑结构:多对多。
图没有顺序存储结构,但可以借助二维数组来表示元素间的关系。
数组表示法(邻接矩阵)。
多重链表:邻接表,邻接多重表,十字链表。
邻接矩阵(数组)表示法。
邻接表(链式)表示法。
1.数组(邻接矩阵)表示法

  • 建立一个顶点表(记录各个顶点的信息)和一个邻接矩阵(表示各个顶点之间的关系)。
  • 设图A=(V,E)有n个顶点,则
    在这里插入图片描述
    图的邻接矩阵是一个二维数组A.arcs[n][n],定义为:
    在这里插入图片描述
    无向图的邻接矩阵表示法
    在这里插入图片描述
    邻接矩阵A.arcs[i][j]:
    在这里插入图片描述
    分析1:无向图的连接矩阵是对称的。
    分析2:顶点i的=第i行(列)中1的个数。
    特别:完全图的邻接矩阵中,对角元素为0,其余为1。

有向图的邻接矩阵表示法
在这里插入图片描述

在这里插入图片描述
注:在有向图的邻接矩阵中,
第i行含义:以结点vi为尾的弧(即出度边);
第i列含义:以结点vi为头的弧(即入度边)。
分析1:有向图的邻接矩阵可能是不对称的。
分析2:顶点的出度=第i行元素之和。
顶点的入度=第i列元素之和。
网(即有权图)的邻接矩阵表示法
定义为:A.arcs[i][j]=Wij(有边或弧),∞(无边或弧)。
在这里插入图片描述
有向网的邻接矩阵:
在这里插入图片描述

邻接矩阵

1.邻接矩阵的存储表示:用两个数组分别存储顶点表和邻接矩阵。

#define MaxInt 32767;//表示极大值,即无穷大
#define MVNum 100 //最大顶点数
typedef char VerTexType;//设顶点的数据类型为字符型
typedef int ArcType;//假设边的权值类型为整型

typedef struct {
	VerTexType vexs[MVNum];//顶点表
	ArcType arcs[MVNum][MVNum];//邻接矩阵
	int vexnum, arcnum;//图的当前点数和边数
}AMGraph;

2.采用邻接矩阵表示法创建无向图。
【算法思想】
(1)输入总顶点和总边数。
(2)依次输入点的信息存入顶点表中。
(3)初始化邻接矩阵,使每个权值初始化为极大值。
(4)构造邻接矩阵。

#define MaxInt 32767;//表示极大值,即无穷大
#define MVNum 100 //最大顶点数
typedef char VerTexType;//设顶点的数据类型为字符型
typedef int ArcType;//假设边的权值类型为整型

typedef struct {
	VerTexType vexs[MVNum];//顶点表
	ArcType arcs[MVNum][MVNum];//邻接矩阵
	int vexnum, arcnum;//图的当前点数和边数
}AMGraph;

//采用邻接矩阵表示创建无向表
int CreateUDN(AMGraph& G) {
	int v1, v2,w;
	int i,j,k;
	cin >> G.vexnum >> G.arcnum;//输入总顶点数,总边数
	for (i = 0; i < G.vexnum; ++i) {
		cin >> G.vexs[i];//依次输入点的信息
	}
	for (i = 0; i < G.vexnum; ++i) {//初始化邻接矩阵
		for (j = 0; j < G.vexnum; ++j) {
			G.arcs[i][j] = MaxInt;//边的权值均置为极大值
		}
	}
			for (k = 0; k < G.arcnum; ++k) {
				//构造邻接矩阵
				cin >> v1 >> v2 >> w;//输入一条边依附的顶点和权值
				i = LocateVex(G, v1);
				j = LocateVex(G, v2);//确定v1,v2在G中的位置,即顶点数组的下标
				G.arcs[i][j] = w;//边<v1,v2>的权值设为w
				G.arcs[j][i] = G.arcs[i][j];
			}
			return 1;
}

int  LocateVex(AMGraph G, VerTexType u) {
	//在图G中查找顶点u,存在则返回顶点表中的下标;否则则返回-1.
	int i;
	for (i = 0; i < G.vexnum; ++i) {
		if (u == G.vexs[i]) {
			return i;
		}
		return -1;
	}
}

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

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

相关文章

Canvas—从入门到案例实现

文章目录 Canvas—从入门到案例实现一、设置canvas环境1.1 <canvas>元素1.2 渲染上下文context 二、形状与路径的绘制2.1 形状绘制2.2 路径绘制2.3 绘制一个笑脸 三、使用样式和颜色四、绘制文本五、使用图像5.1 图片源5.2 获取页面内的图片5.3 缩放Scaling5.4 切片Slici…

深度学习+opencv+python实现车道线检测 - 自动驾驶 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

Vue3使用i18n国际化

安装 npm install vue-i18nnext 创建i18n文件夹 我这个项目是中、俄语言切换 zh.ts里放中文语言下要显示的字段&#xff0c;rn.ts里放俄语要显示的字段 index.ts import { createI18n } from vue-i18n; import ZH from ./zh.js; import RN from ./rn.js; const messages {zh…

远程创建分支本地VScode看不到分支

在代码存放处右击&#xff0c;点击Git Bash Here 输入git fetch–从远程仓库中获取最新的分支代码和提交历史 就OK啦&#xff0c;现在分支可以正常查看了

【SpringBoot3+Vue3】二【实战篇】-后端

目录 一、环境搭建 1、数据库脚本 2、pom 3、yml 4、通过mybatis-X生成实体pojo等 4.1 Article 4.2 Category 4.3 User 5、 Mapper 5.1 ArticleMapper 5.2 CategoryMapper 5.3 UserMapper 6、service 6.1 ArticleService 6.2 CategoryService 6.3 UserService …

使用亚马逊鲲鹏系统有什么好处?

亚马逊鲲鹏系统是一款能绕过亚马逊智能检测&#xff0c;完全模拟人类真实行为&#xff0c;通过模拟真实的人流量来帮助你提升你的产品排名&#xff0c;让你的产品出现在搜索首页&#xff0c;从而快速帮助提高销售业绩的营销工具&#xff01; 好处1&#xff1a;自动化操作更节约…

Fabric多机部署启动节点与合约部署

这是我搭建的fabric的网络拓扑 3 个 orderer 节点&#xff1b;组织 org1 , org1 下有两个 peer 节点&#xff0c; peer0 和 peer1; 组织 org2 , org2 下有两个 peer 节点&#xff0c; peer0 和 peer1; 以上是我的多机环境的网络拓扑&#xff0c;使用的是docker搭建的。我的网络…

什么是数据泄露?泄露途径有哪些?企业如何免遭数据泄露?

数据泄露指将机密信息、私人信息或其他敏感信息发布到不安全的环境中。数据泄露可能由意外引起&#xff0c;也可能是蓄意攻击的结果。 每年都有数百万人卷入数据泄露&#xff0c;包括意外看错病人图表的医生&#xff0c;以及大规模尝试访问政府计算机以发现敏感信息。 因为敏…

向量矩阵范数pytorch

向量矩阵范数pytorch 矩阵按照某个维度求和&#xff08;dim就是shape数组的下标&#xff09;1. torch1.1 Tensors一些常用函数 一些安装问题cd进不去不去目录PyTorch里面_表示重写内容 在默认情况下&#xff0c;PyTorch会累积梯度&#xff0c;我们需要清除之前的值 范数是向量或…

企业级真实应用利用Mybatis-Plus进行分页查询处理

怎么导入依赖我在之前的文章里边有说过不理解的可以看看 你应该懂点Mybatis-plus&#xff0c;真的好用 1&#xff1a;了解Page<T>类的使用 首先我们需要使用到Page类 &#xff0c;建立一个Page类&#xff0c;泛式类型中放入我们需要输出的类&#xff0c;是列表的话就…

分享5款好用到爆的神仙软件

​ 最近陆陆续续收到好多小伙伴的咨询&#xff0c;这边也是抓紧时间整理出几个好用的软件&#xff0c;希望可以帮到大家。 1.全局鼠标手势——MouseInc ​ MouseInc是一款由shuax制作的全局鼠标手势软件&#xff0c;还支持很多增强辅助功能&#xff0c;如屏幕取色、窗口管理、…

前端学习笔记--Event-loop

定义 Event Loop&#xff1a;即事件循环&#xff0c;是指浏览器或Node的一种解决javaScript单线程运行时不会阻塞的一种机制&#xff0c;也就是我们经常使用异步的原理。 **进程&#xff1a;**进程是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分…

vmware安装MacOS以及flutter遇到的问题

安装过程&#xff1a;参考下面的文章 链接&#xff1a; 虚拟机VMware安装苹果系统macOS&#xff0c;超级详细教程&#xff0c;附文件下载&#xff0c;真教程&#xff01;&#xff01; 无限重启情况&#xff1a; &#xff08;二&#xff09; 配置虚拟机找到你的虚拟机安装文件…

查询站点真实IP地址,绕过CDN

一.如何判断站点是否使用了CDN&#xff1f; 使用其他省市的电脑进行ping看返回的IP地址是否相同通过第三方网站查询 站长工具 3.nslookup命令 二. 如何绕过CDN获取真实IP 子域名查询&#xff0c;因为很多站点只对主域名进行了CDN加速网站邮件头信息微步在线DNS查询

[PyTorch][chapter 63][强化学习-QLearning]

前言&#xff1a; 这里结合走迷宫的例子,重点学习一下QLearning迭代更新算法 0,1,2,3,4 是房间&#xff0c;之间绿色的是代表可以走过去。 5为出口 可以用下图表示 目录&#xff1a; 策略评估 策略改进 迭代算法 走迷宫实现Python 一 策略评估 强化学习最终是为了…

算法通关村——数组中第K大的数字

数组中第K大的数字 1、题目描述 ​ LeetCode215. 数组中的第K个最大元素。给定整数数组nums和整数k&#xff0c;请返回数组中第k个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第k个最大的元素&#xff0c;而不是第k个不同的元素。 示例1&#xff1a; 输入&#…

LLM prompt提示工程调试方法经验技巧汇总

现在接到一个LLM模型任务&#xff0c;第一反应就是能不能通过精调prompt来实现&#xff0c;因为使用prompt不需要训练模型&#xff0c;只需输入指令就可以实现和LLM的交互。按照以往经验&#xff0c;不同的prompt对模型输出影响非常大&#xff0c;如果能构造一个好的prompt&…

【23真题】厉害,这套竟有150分满分!

今天分享的是23年中国海洋大学946的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年中国海洋大学946考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取!平均分为109-120分&#xff0c;最高分为150分满分&#xff01;本套试题内容难度中等&…

【vue】 实现 自定义 Calendar 日历

图例&#xff1a;自定义日历 一、标签自定义处理 <div class"date-box"><el-calendar v-model"state.currDate" ref"calendar"><template #header"{ date }"><div class"date-head flex"><div …

Golang获取月份的第一天和最后一天

package mainimport ("fmt""strconv""strings""time" )func main() {month : "2023-11"result : GetMonthStartAndEnd(month)fmt.Println(result["start"] " - " result["end"]) }// 获取月…