图的邻接矩阵表示法
2014-07-23 23:22
239 查看
在图的邻接矩阵表示法中:
① 用邻接矩阵表示顶点间的相邻关系
② 用一个顺序表来存储顶点信息
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);//输入边(v i ,v j )上的权w
G->edges[i][j]=w;
G->edges[j][i]=w;
}
}//CreateMGraph
该算法的执行时间是0(n+n 2 +e)。由于e<n^2 ,算法的时间复杂度是0(n^2 )。
http://www.cnblogs.com/kangyoung/articles/2169183.html
相关文章推荐
- Java编程实现邻接矩阵表示稠密图代码示例
- 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)
- 《数据结构》示范程序/图邻接矩阵表示
- 图的邻接矩阵表示(DFS,BFS)
- 有向图的邻接矩阵表示法(创建,DFS,BFS)
- 图的邻接矩阵表示方法以及遍历
- 图的邻接矩阵表示
- SDUT 图的深度优先遍历(邻接矩阵表示)
- 【c/c++ 算法/数据结构】 邻接矩阵表示图,深度,广度优先遍历 算法设计+代码+图片
- 图的深度优先遍历DFS(邻接矩阵表示法)
- 数据结构(C实现)------- 图的邻接矩阵表示
- 广度优先搜索BFS——图邻接矩阵表示
- 图算法-----图的邻接矩阵表示法(数组表示法)
- 图的邻接矩阵表示法及广度优先遍历
- 有向图的邻接矩阵表示法(创建,DFS,BFS)
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
- 深度优先搜索 DFS(邻接矩阵表示)
- 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)
- 图的邻接矩阵表示
- 图的邻接表和邻接矩阵表示以及相关算法