数据结构 Prim及单源最短路径_第1页
数据结构 Prim及单源最短路径_第2页
数据结构 Prim及单源最短路径_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用普里姆算法从顶点U出发构造网G的最小生成树为实现此算法需附设一个辅助数组closedge,用以记录从U到V-U具有最小代价的边。 对每个顶点viEV-U ,在辅助数组中存在一个相应分量closedgei-l,它包括两个域:lowcost 和 adj vex olowcost域:存储最小代价的边上的权值,即:closedgei-l.lowcost=nihi(cost(u, vi )|uEUcost(u,vi)表示边(u,vi)上的权值。若某顶点加入到U中,则此时置lowcost域为0,表示该 顶点并入U中。adjvex域:存储依附于该边在U中的顶点。显然,每加入一个顶点到U中,closedge

2、数组 就会发生相应的变化。用普里姆算法从顶点U出发构造网G的最小生成树stmct Closedge( vertextype adjvex; U 集中的顶点int lowcost; / 边的权值 closedgeMAX.VERTEX.NUM;void MiniSpanTiee_P(mgraph Q vertextype u)( int k = Locate(&G;u );若图G中存在顶点u,则返回u在图中的存储位置for (iiitj=O; jG.vexiium; +j)辅助数组初始化】f(j!=k) closedgej.adjvex=u;closedge!j.lowcost=GarcskIj;

3、closedgek.lowcost = 0;/ 初始,U=ufor (mt i=l; iHG.vexskH, ”;/输出生成树上一条边closedgefk .lowcost=0; 第 k 顶点并入 U 集for (j=0; jG.vexiium; +j)修改其它顶点的最小边if (G.arcsk j closedge j . lowcost)( clo sedge j . adj vex= Gvexsk;closedgej.lowcost=G.aicskj;)/if) /for /MiniSpaiiTree_P查找最小未被访问的边mt niuumum(mgraph G, Closedge cl

4、osedge n) ( int k;fbr(int i=0; iG. vexiium;i-H-)if(closedgei.lowcost!=0) k=i; break; fbr( ;iG.vexnum:i+)if(closedgei. lowcost! =0&closedgei.lowcostclosedgek.lowcost) k=i;return k;uit distn; /disti存放顶点i的当前最短路径长度charpathnn+1 ; /pathi+存放顶点i的当前最短路径。bool flagn; 表示当前最短路径是否己经被选择void ShortestPath.DJS(mgraph

5、 g, mt vO)( mtchar tail2;fbr (i =0; ig.vexiium; i+) ( flagi=false;disti=g.aicsOi;pathi0=v0+H;pathil=g.vexsi;pathW;fbr(mt t=l; tg.vexiium; t+)/求vO到其余n-1个顶点的最短路径 ( niiii=MAX;fbr (1=0; ig.vexiium; i+)if (disti inm&flagi=false) k = i: nuii=disti; flagk=tine;fbr (i =0; ig.vexiium; i+)if (distk+g.arcskidi

6、sti) disti=distk+ g.arcski; strcpy(pathi,pathk);tailO=i+a;taill=,(); sticat(pathijail); )for (i =0; ig.vexiium; i+) coutpathiH Mdistiendl;拓扑排序:操作方法:(1)选取一个没有前驱的顶点,输出它,并从AOV中网中删除此顶点以及所有以它 为尾的孤。(2)重复(1)直至输出所有结点统计有向图邻接表各顶点的入度void uiit_iiidegree(ALGraph G)fbr(i=O:iGvexiium;i+)mdegreei=O;fbr(i=O; iadjvex

7、+; p=p-nextarc;/fbr /imciiidegree取入度为零的点vmt getzerodegree (ALGrapg G) ( fbr(i=O;iadj vex;elsereturn-!;5 . NextAdjmt NextAdj (ALGrapg G .int v int w)(p=G vertices v .firs taic;while(p & p-adjvex! =w)p=p-nextaic;f(p)return p-nextarc-adjvex;elsereturn-!;6.算法实现m=0:Hut_mdegree(G);vr=getzerodegree(G)wliile(v!=-l)(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论