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

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

无向图:

有向图:

#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的路径的数目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joanh_Lan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值