- 1、本文档共103页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性结构-图
第七章 图 四类基本结构: 公元1736年 Euler 哥尼斯堡七桥问题 哥尼斯堡七桥问题模型 7.1 图的定义和术语 图是一种较线性表和树更为复杂的数据结构。 线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继; 树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关; 而在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。 7.2 图的存储结构 7.3 图的遍历 7.4 图的连通性问题 构造生成树的算法 多数算法利用了MST (Minimum Spanning Trees) 性质: 假设N=(V,E)是一个连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值(代价)的边,其中,u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。 void MiniSpanTree_PRIM(MGraph G, VertexType u) { int i,j,k; k = LocateVex ( G, u ); for ( j=0; jG.vexnum; ++j ) // 辅助数组初始化 if (j!=k) { closedge[j].adjvex=u; closedge[j].lowcost=G.arcs[k][j].adj; } closedge[k].lowcost = 0; 7.5 有向无环图及其应用 拓扑排序—问题引入 拓扑排序 在AOV网络中不能出现有向回路,即有向环。在AOV网络中如果出现了有向环,则意味着某项活动应以自己作为先决条件,此AOV网络所代表的工程是不可行的。 例如,对学生选课工程图进行拓扑排序, 得到的拓扑有序序列为(不一定唯一) C1 , C2 , C3 , C4 , C5 , C6 , C8 , C9 , C7或 C1 , C8 , C9 , C2 , C5 , C3 , C4 , C7 , C6 拓扑排序 拓朴排序算法描述(存储结构-邻接表) 逆拓扑排序 7.6 最短路径 问题的提法:已知一个各边权值均大于0的带权有向图,对每一对顶点 vi ? vj,要求求出vi 与vj之间的最短路径和最短路径长度。 弗洛伊德(Floyd)算法的基本思想: 定义一个n阶方阵序列: D(-1), D(0), …, D(n-1). 其中 D(-1) [i][j] = arcs[i][j]; D(k) [i][j] = Min {D(k-1)[ i][j], D(k-1)[i][k] + D(k-1)[k][j] }, k = 0,1,…, n-1 作 业 7.7 7.11 7.14 给定带权有向图和源点v0 0 5 1 2 3 4 100 30 60 10 10 5 50 20 最短路径 长度 (v0,v2) 10 (v0,v4) 30 (v0,v4,v3) 50 (v0,v4,v3,v5) 60 v0→v1 无 从某个源点到其余顶点的最短路径 设置两个顶点的集合S和T=V-S,集合S中存放已找到最短路径的顶点,集合T存放当前还未找到最短路径的顶点。 初始状态时,集合S中只包含源点v0,然后不断从集合T中选取到顶点v0路径长度最短的顶点u加入到集合S中; 集合S每加入一个新的顶点u,都要修改顶点v0到集合T中剩余顶点的最短路径长度值,集合T中各顶点新的最短路径长度值为原来的最短路径长度值与顶点u的最短路径长度值加上u到该顶点的路径长度值中的较小值。 此过程不断重复,直到集合T的顶点全部加入到S中为止。 迪杰斯特拉(Dijkstra)算法 时间复杂度是O(n2) Dijkstra算法的实现思想:存储结构 1、带权邻接矩阵cost,用cost[i,j]表示弧〈vi,vj〉 上的权。 2、顶点分为两组:S,V-S S中存放已求得最短路径的终点的集合。 3、辅助一维数组dist 若vi∈S ,dist[i] 表示源点到vi的最短路径长度
文档评论(0)