数据结构 第7章 图.ppt

7.1图的定义和术语 7.2图的存储结构 7.3图的遍历 7.4图的连通性问题 7.5有向无环图及其应用 7.6最短路径 7.1 图的定义和术语 基本术语 完全图 在具有n 个顶点的有向图中,最大弧数为 n(n-1) 在具有n 个顶点的无向图中,最大边数为 n(n-1)/2 顶点的度 无向图:与该顶点相关的边的数目 有向图: 入度ID(v) :以该顶点为头的弧的数目 出度OD(v) :以该顶点为尾头的弧的数目 权 某些图的边具有与它相关的数, 称之为权。这种带权图叫做网络。 子图 设有两个图 G=(V, E) 和 G‘=(V’, E‘)。若 V’? V 且 E‘?E, 则称 图G’ 是 图G 的子图。 路径 在图 G=(V, E) 中, 若从顶点 vi 出发, 沿一些边经过一些顶点 vp1, vp2, …, vpm,到达顶点vj。则称顶点序列 ( vi vp1 vp2 ... vpm vj ) 为从顶点vi 到顶点 vj 的路径。它经过的边(vi, vp1)、(vp1, vp2)、...、(vpm, vj)应是属于E的边。 路径长度 非带权图的路径长度是指此路径上边/弧的条数。 带权图的路径长度是指路径上各边/弧的权之和。 简单路径 若路径上各顶点 v1,v2,...,vm 均不互相重复, 则称这样的路径为简单路径。 回路 若路径上第一个顶点 v1 与最后一个顶点vm 重合, 则称这样的路径为回路或环。 基本术语 基本术语 基本术语 生成树 一个连通图的生成树是它的极小连通子图,在n个顶点的情形下,有n-1条边。 生成树是对指连通图来而言的 是连同图的极小连同子图 包含图中的所有顶点 有且仅有n-1条边 本章不予讨论的图 7.2 图的存储表示 图7.8 图的邻接矩阵 无向图的邻接矩阵是以主对角线对称的,有向图的邻接矩阵可能是不对称的。 在有向图中: 第 i 行 1 的个数就是顶点 i 的出度, 第 j 列 1 的个数就是顶点 j 的入度。 在无向图中, 第 i 行 (列) 1 的个数就是顶点i 的度。 网的邻接矩阵 算法7.1是在邻接矩阵存储结构Mgraph上对图的构造操作的实现框架,它根据图 G的种类调用具体构造算法。 Status CreateGraph (Mgraph G){ //采用数组(邻接矩阵)表示法,构造图G。 scanf( G.kind); switch (G.kind) { case DG:returnCreateDG(G); //构造有向图G case DN:returnCreateDN(G); //构造有向网G case UDG:returnCreateUDG(G);//构造无向图G cese UDN:returnCreateUDN(G);//构造无向网G default: return ERROR; } }// CreateGraph 算法 7.1 如果G是无向网,则调用算法7.2。构造一个具有n个顶点和e条边的无向网G的时间复杂度是O(n2+e·n),其中对邻接矩阵G.arcs的初始化耗费了O(n2)的时间。 Status CreateUDC(MGraph G){ //采用数组(邻接矩阵)表示法,构造无向网G。 sacnf(G.vexnum, G.arcnum, IncInfo); //IncInfo为0则各弧不含其它信息 for(i=0;iG.vexnum;++i) scanf (G.vexs[i]); //构造顶点向量 //初始化邻接矩阵 for(i=0;iG.vexnum;++i) for(j=0;jG.vexnum;++j) G.arcs[i][j]={INFINITY,NULL}; //{adj,info} 2.邻接表 (Adjacency List)—— 一种链式存储结构 把同一个顶点发出的边链接在同一个边链表中,链表的每一

文档评论(0)

1亿VIP精品文档

相关文档