邻接矩阵(Adjacency Matrix)
定义
邻接矩阵(Adjacency Matrix):是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…,vn}。G的邻接矩阵是一个具有下列性质的n阶方阵:
特点
无向图的邻接矩阵一定是对称的,而有向图的邻接矩阵不一定对称。因此,用邻接矩阵来表示一个具有n个顶点的有向图时需要n2个单元来存储邻接矩阵;对有n个顶点的无向图则只存入上(下)三角阵,故只需n(n+1)/2个单元。
无向图邻接矩阵的第i行(或第i列)非零元素的个数正好是第i个顶点的度。
有向图邻接矩阵中第i行非零元素的个数为第i个顶点的出度,第i列非零元素的个数为第i个顶点的入度,第i个顶点的度为第i行与第i列非零元素个数之和。
用邻接矩阵表示图,很容易确定图中任意两个顶点是否有边相连。
邻接矩阵的C语言描述
用一个顺序表来存储顶点信息
图的邻接矩阵表示法
1.图的邻接矩阵表示法
在图的邻接矩阵表示法中:
① 用邻接矩阵表示顶点间的相邻关系
② 用一个顺序表来存储顶点信息
2.图的邻接矩阵(Adacency Matrix)
设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵:
【例】下图中无向图G 5 和有向图G 6 的邻接矩阵分别为A l 和A 2 。
3.网络的邻接矩阵
若G是网络,则邻接矩阵可定义为:
其中:
w ij 表示边上的权值;
∞表示一个计算机允许的、大于所有边上权值的数。
【例】下面带权图的两种邻接矩阵分别为A 3 和A 4 。
4.图的邻接矩阵存储结构形式说明
#define MaxVertexNum l00 //最大顶点数,应由用户定义
typedef char VertexType; //顶点类型应由用户定义
typedef int EdgeType; //边上的权值类型应由用户定义
typedef struct{
VextexType vexs[MaxVertexNum] //顶点表
EdeType edges[MaxVertexNum][MaxVertexNum];
//邻接矩阵,可看作边表
int n,e; //图中当前的顶点数和边数
}MGragh;
注意:
① 在简单应用中,可直接用二维数组作为图的邻接矩阵(顶点表及顶点数等均可省略)。
② 当邻接矩阵中的元素仅表示相应的边是否存在时,EdgeTyPe可定义为值为0和1的枚举类型。
③ 无向图的邻接矩阵是对称矩阵,对规模特大的邻接矩阵可压缩存储。
④ 邻接矩阵表示法的空间复杂度S(n)=0(n 2 )。
5.建立无向网络的算法。
void CreateMGraph(MGraph *G)
{//建立无向网的邻接矩阵表示
int i,j,k,w;
scanf("%d%d",&G->n,&G->e); //输入顶点数和边数
for(i=0;in;i++) //读人顶点信息,建立顶点表
G->vexs =getchar();
for(i=0;in;i++)
for(j=0;jn;j++)
G->edges[j]=0; //邻接矩阵初始化
for(k=0;ke;k++){//读入e条边,建立邻接矩阵
scanf("%d%d%d",&i,&j,&w);//输入边(v i ,v j )上的权w
G->edges[j]=w;
G->edges[j]=w;
}
}//CreateMGraph
该算法的执行时间是0(n+n 2 +e)。由于e
根据图的定义可知,图的逻辑结构分为两部分:V和E的集合。因此,用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,称这个二维数组为邻接矩阵。邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵。
邻接矩阵(adjacency matrix)的Matlab表达
N = 4;
dag = zeros(N,N);
C = 1; S = 2; R = 3; W = 4;
dag(C,[R S]) = 1;
dag(R,W) = 1;
dag(S,W)=1;
邻接矩阵(Adjacency Matrix)相关推荐
- 图数据结构之邻接矩阵Adjacency Matrix(Python版)
对于图这样的数据结构,我们在 图数据结构之字典实现(Python版) 有一种示例,可以表示出从起点出发有多少条路径选择,然后到达某个指定的终点,下面来看下另外一种图的数据结构. 邻接矩阵:顾名思义就是 ...
- 数据结构与算法(C++) -- adjacency matrix
#include <iostream> using namespace std;// 用邻接矩阵表示图, 顶点 边 // 邻接矩阵为对称阵(两个定点相互是相连的), 对角元素为0(顶点与自 ...
- 十六.Elasticsearch Adjacency Matrix Aggregation
#下面的执行语句基于6.6版本,新版本把"_doc"去掉即可 PUT /emails/_doc/_bulk?refresh { "index" : { &quo ...
- a - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历_数据结构--图
故事凌 今天 基本知识点 图可说是所有数据结构里面知识点最丰富的一个, 自己笨的知识点如下: 阶(oRDER), 度: 出度(out-Degree), 入度(in-Degree) 树(Tree), 森 ...
- (王道408考研数据结构)第六章图-第二节1:图的存储结构(邻接矩阵、邻接表、十字链表和邻接多重表)
文章目录 一:邻接矩阵--适合存储稠密图 (1)邻接矩阵定义 (2)代码 二:邻接表 (1)邻接表定义 (2)代码 (3)邻接表和邻接矩阵对比 三:十字链表(用于有向图) 四:邻接多重表(用于优化无向 ...
- 拉普拉斯矩阵(Laplacian matrix)及其变体详解
拉普拉斯矩阵(Laplacian matrix) 也叫做导纳矩阵.基尔霍夫矩阵或离散拉普拉斯算子,是图论中用于表示图的一种重要矩阵. 定义 给定一个具有 n n n个顶点的简单图 G = ( V , ...
- 拉普拉斯矩阵(Laplacian matrix)及其变体
拉普拉斯矩阵(Laplacian matrix) 也叫做导纳矩阵.基尔霍夫矩阵或离散拉普拉斯算子,是图论中用于表示图的一种重要矩阵. 定义 给定一个具有 n 个顶点的简单图 G = ( V , E ) ...
- 图的建立——邻接矩阵
通过邻接矩阵的方式建立图 邻接矩阵(Adjacency Matrix)的存储结构就是通过一维数组存储图中顶点的信息,用矩阵表示图中各个顶点的的临界关系,而矩阵通过一个二维数组表示. 图的分类 在矩阵中 ...
- 数据结构—邻接矩阵存储法代码实现
邻接矩阵法 图的邻接矩阵(adjacency matrix)是一种采用邻接矩阵数组表示顶点之间相邻关系的存储结构.设G=(V,E)是含有n(n>0)个顶点的图,各顶点的编号为0~(n-1),则G ...
- 数据结构(C++)——图:基于邻接矩阵实现的图结构
抽象数据类型 操作接口:图支持的操作接口分为边和顶点两类 Graph模板类 typedef enum { UNDISCOVERED, DISCOVERED, VISITED } VStatus; // ...
最新文章
- 用Selenium 爬虫下载文件,解除Chrome 下载警告 (Keep or Discard),设置下载目录的方法
- 升职加薪必看!如何试出一个Java开发者真正的水平
- macpro台式计算机,Mac Pro正式上架 真的可以用来刨土豆丝
- LeetCode 1023. 驼峰式匹配(暴力匹配)
- php自然排序法的比较过程,PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)...
- SPH(光滑粒子流体动力学)流体模拟实现七:屏幕空间流体渲染(SSF)
- 前端代码——前端代码规范(含html、css、javascript、vue等)
- 管理系统中计算机er图怎么画,使用PowerDesigner绘制ER图的详细教程
- 上海通用北盛汽车2012届校园招聘长春理工大学专业面试安排 共 27 人
- 软件考试(一)计算机技术与软件专业技术资格(水平)考试(以下简称软件水平考试)含金量最高,与职称挂钩。
- 蓝牙传输速率详细分析【针对蓝牙4.2]
- 【2022-03-23】JS逆向之爱奇艺滑块
- 活体检测Face Anti-spoofing前世今生:作者(Fisher Yu )
- 力天创见客流方案分析
- Tarena - 基础查询
- C# StreamRead和StreamWrite
- 字符串(字节)长度计算
- 谁能成功抢位操作系统,谁就能掌握未来汽车产业发展的主动权
- 编译可调试的ffmpeg 开关解释
- 【谷粒商城高级篇】商品服务 商品上架