- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例如:求最小生成树? * B A C D E F 34 12 19 26 46 25 25 17 38 B A C D E F 34 12 19 26 46 25 25 17 38 《数据结构与STL》 最小生成树 算法 1.普里姆算法 时间复杂度O(n2),适合稠密图 2.克鲁斯卡尔算法 时间复杂度O(eloge),适合稀疏图 * 《数据结构与STL》 设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。 在图G所有生成树中,代价最小的生成树称为最小生成树。 1. MST(minimal spanning tree)性质 : 假设G=(V,E)是一个无向连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。 1. 最小生成树 基本思想: 设G=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是G的最小生成树,T的初始状态为U={u0}(u0∈V),TE={},然后重复执行下述操作:在所有u∈U,v∈V-U的边中找一条代价最小的边(u,v)并入集合TE,同时v并入U,直至U=V为止。此时TE中必有n-1条边,T就是最后得到的最小生成树。 关键问题:是如何找到连接U和V-U的最短边来扩充生成树T。 2. Prim算法 U={A} U={A,F} 例: D C B E A F 25 12 34 19 26 46 38 17 25 U={A,F,C} U={A,F,C,D} U={A,F,C,D,E} U={A,F,C,D,E,B} 1.普里姆算法 一般情况下,假设n个顶点分成两个集合:U(包含已落在生成树上的结点)和V-U(尚未落在生成树上的顶点),则在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。 * U V-U 最小生成树上的边 《数据结构与STL》 1.普里姆算法 初始化 U ( A ) V-U (B C D E F ) * U B A C D E F 34 12 19 26 46 25 25 17 38 V-U 《数据结构与STL》 1.普里姆算法 然后 U ( A F) V-U (B C D E ) * U B A C D E F 34 12 19 26 46 25 25 17 38 V-U 《数据结构与STL》 1.普里姆算法 然后 U ( A F C) V-U (B D E ) * U B A C D E F 34 12 19 26 46 25 25 17 38 V-U 《数据结构与STL》 1.普里姆算法 然后 U ( A F C D) V-U (B E ) * U B A C D E F 34 12 19 26 46 25 25 17 38 V-U 《数据结构与STL》 1.图的存储结构 邻接表(顺序结构和链式存储的组合) * v1 v2 ∧ v3 v4 v5 1 1 4 ∧ 0 ∧ 3 ∧ 3 4 ∧ v1 v2 v4 v5 v3 有向图G 0 1 2 3 4 《数据结构与STL》 1.图的存储结构 * v1 v2 v3 v4 1 1 0 2 2 ∧ 2 ∧ 3 ∧ 0 1 3 ∧ v1 v4 v3 v2 无向图G 0 1 2 3 邻接表表示无向图 《数据结构与STL》 1.邻接表结点的C++描述 邻接表结点的C++描述 struct VertexNode{ char Vertex; //顶点 ArcNode *firstarc; //第一条弧 }; struct ArcNode{ int adjvex; //邻接顶点 ArcNode * next; //下一条弧 }; * adjvex nextarc 弧的结点 vertex firstarc 头结点 《数据结构与STL》 1.图的存储结构 * v1 v3 v4 v5 1 1 3 ∧ 0 1 2 3 4 3 0 1 2 1 v2 4 ∧ 4 ∧ 1 1 4 2 ∧ 0 3 4 5 1 4 2 2 3 ∧ 5 adjvex nextarc 弧的结点 weight 邻接表表示网,每条边+权值 《数据结构与STL》 1.邻接表的C++描述 const int MAXSI
文档评论(0)