图 - 图的存储结构 - 邻接矩阵表示法
来源:互联网 发布:淘宝客服表格 编辑:程序博客网 时间:2024/04/28 06:03
图的存储表示方法很多,这里介绍两种最常用的方法。至于具体选择哪一种表示法,主要取决于具体的应用和欲施加的操作。
为了适合用C语言描述,以下假定顶点序号从0开始,即图G的顶点集的一般形式是V(G)={v 0 ,v i ,…,V n-1 }。
图的邻接矩阵表示法
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;i<G->n;i++) //读人顶点信息,建立顶点表 G->vexs[i]=getchar(); for(i=0;i<G->n;i++) for(j=0;j<G->n;j++) G->edges[i][j]=0; //邻接矩阵初始化 for(k=0;k<G->e;k++){//读入e条边,建立邻接矩阵 scanf("%d%d%d",&i,&j,&w);//输入边(vi,vj)上的权w G->edges[i][j]=w; G->edges[j][i]=w; } }//CreateMGraph
该算法的执行时间是0(n+n2+e)。由于e<n2,算法的时间复杂度是0(n2)。
转载自:http://sjjp.tjuci.edu.cn/sjjg/DataStructure/DS/web/gailun/gailun1.1.1b.htm
- 图 - 图的存储结构 - 邻接矩阵表示法
- 图的存储表示--邻接矩阵法实现
- 19.图的存储表示----邻接矩阵表示法
- 图的存储结构(邻接矩阵法)
- 图的邻接矩阵存储结构
- 图的存储结构 邻接矩阵
- 图的存储结构 --- 邻接矩阵
- 图的邻接矩阵存储结构
- 图的存储结构-邻接矩阵
- 图的存储结构-邻接矩阵
- 图的存储表示——邻接矩阵
- 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)
- 图的邻接矩阵表示法
- 图的邻接矩阵表示法
- 图的邻接矩阵表示法
- 图的表示-邻接矩阵表示
- 图的邻接矩阵表示
- 图的邻接矩阵表示
- 特别是要钱没钱呐,真是酸的一无是处,心底不禁自卑起来。
- setup and test samba server
- 好想抱着你睡觉
- [Gevent]gevent 网络抓取小测试
- 13点,你懂的
- 图 - 图的存储结构 - 邻接矩阵表示法
- 我打我打我打
- [1] 算法之路 - 选择排序
- lisa素材
- uva 1356 - Bridge(积分+二分)
- 【Webkit学习】Android4.4 Chromium WebView学习
- Windows平台下Git服务器搭建
- 台北Unity开发者研讨会 笔记
- 程序的段与栈