- 1、本文档共115页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第七章图;图的概念;▲图的二元组的另一个定义:图由顶点集(vertexset)V(G)和边集(edgeset)E(G)所组成。
假设V(G)为空,那么E(G)也必然为空;假设V(G)非空,那么E(G)不一定非空。
▲有向图(directedgraph)----
指图G的边集E(G)中为有向边。
▲无向图(undirectedgraph)----
指图G的边集E(G)中为无向边。;V(G1)={0,1,2,3}
E(G1)={(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)}
V(G2)={0,1,2,3,4,5,6}
E(G2)={(0,1),(0,2),(1,3),(1,4),(2,5),(2,6)}
V(G3)={0,1,2}E(G3)={0,1,1,0,1,2}
E(G4)={0,1,2,3}
V(G4)={0,1,1,0,0,2,2,0,0,3,3,0,1,2,2,1,1,3,3,1,2,3,3,2};;端点(endpoint)和邻接点(adjacent);顶点的度、入度、出度;假设一个图有n个顶点和e条边,那么该图所有顶点的度同边数e满足一下关系:
证明:∵每条边连接着两个顶点,
∴每个顶点的度数分别加1,总和加2,
∴全部顶点的度数为所有边数的2倍。;完全图、稠密图、稀疏图;子图;路径和回路;路径长度----是指该路径上经过的边的数目。
简单路径----指一条路径上的所有顶点均不同。
复杂路径----指一条路径上的顶点有所重复。
回路(环cycle)----指一条路径上的前后两端点相同。;连通和连通分量;强连通图和强连通分量;权和网;图的存储结构;邻接矩阵(adjacencymatrix);next;对于带权图,邻接矩阵表示为;采用邻接矩阵表示图,便于查找图中任一边或边上的权,时间复杂度为O(1)。
例:查找边(i,j)或i,j,只要查A[i,j]是否为一个有效值(非零值或非MaxValue值)即可;假设为有效值那么边存在,否那么不存在。
也便于查找图中任意顶点的度,时间复杂度为O(n)。
例:在无向图中,统计第i行(列)有效元素个数可得顶点vi的度;在有向图中,统计第i行有效元素个数可得顶点vi的出度,统计第i列有效元素个数可得顶点vi的入度。;查找任一顶点的邻接点也同样方便,依次查找一个顶点所有邻接点(出边邻接点或入边邻接点)时间复杂度为O(n)。
例:查找vi的一个邻接点(无向图)或出边邻接点(有向图),只要在第i行上查找出一个有效元素,以该元素所在列号j为序号的???点vj就是所求。
空间复杂度:邻接矩阵存储需要占用n*n个整数存储位置表示顶点的相邻关系,还需要一个n个元素的一维数组存储顶点信息,空间复杂度为O(n2)。适合稠密图。;邻接矩阵的类型定义:
#defineMaxVertexNum8
#defineMaxEdgeNum20
#defineMaxValue1000
typedefintVertexType;
typedefVertexTypeVexlist[MaxVertexNum];
typedefintAdjmatrix[MaxVertexNum][MaxVertexNum];;算法7-1生成无向带权图顶点数组和邻接矩阵的算法p128-129
voidCreate1(VexlistGV,AdjmatrixGA,intn,inte)
{inti,j,k,w;
printf(“输入%d个顶点数据:〞,n);
for(i=0;in;i++)scanf(“%d〞,GV[i]);;for(i=0;in;i++)
for(j=0;jn;j++)
{if(i==j)GA[i][j]=0;
elseGA[i][j]=MaxValue;}
printf(“\n输入d条无向带权边:\n〞,e);
for(k=1;k=e;k++)
{scanf(“%d%d%d〞,i,j,w);
GA[i][j]=GA[j][i]=w;}
};邻接表(adjacencylist);无向图的vi邻接表的边结点数,等于vi的边数/邻接点数/度数;
有向图的vi邻接表的边结点数,等于vi的出边数/出边邻接点数/出度数。
边结点包含三个域:
▲邻接点域(adjvex):存储顶点vi的一个邻接顶点vj的序号j;
▲权域(weight):存储边(vi,vj)/vi,vj的权;(无权图不需要)
▲链域(next):用以链接下一个边结点;用一个n个元素
文档评论(0)