4.普里姆算法【信息技术】.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最小生成树 假设要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然会考虑这样一个问题,如何在最节省经费的前提下建立这个通信网。 在每两个城市之间都可以设置一条线路,相应地都要付出一的经济代价。n个城市之间,最多可能设置n(n-1)/2条线路,那么,如何在这些可能的线路中选择n-1条,以使总的耗费最少呢?   普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法是两个利用MST性质构造最小生成树的算法。 : program prim; const max=6; s:array[1..max,1..max] of byte=((0,6,1,5,0,0), (6,0,5,0,3,0), (1,5,0,5,6,4), (5,0,5,0,0,2), (0,3,6,0,0,6), (0,0,4,2,6,0)); ss:array[2..max] of byte=(100,100,100,100,100); 扩展用数组,ss[I]=0表示I点已扩展,ss[I] 0表示ss[I]是当前所有已扩展点到点I的路径中的最短路径。 var q:array[1..max,1..max] of byte; 最小生成树矩阵,q[I,j] 0表示I点与j点连 p:array[1..max] of byte; 存ss[I]的另一端点,即s[I,p[I]]=ss[I] i,j,l,m,n:integer; begin for i:=1 to max do for j:=1 to max do q[i,j]:=0; 清零 for i:=2 to max do if s[1,i] 0 then begin ss[i]:=s[1,i];p[i]:=1 end; ss数组赋初值,并找出与1点相通的所有点。 for i:=2 to max do begin l:=100; for j:=2 to max do 找出与当前树中所有点相连的最短边中的最小边 if (ss[j] 0) and (ss[j] l) then begin l:=ss[j];m:=j;n:=p[m] end ss[m]:=0;q[n,m]:=l;n:=m; ss[m]置零,表示m点已扩展,q[n,m]建树 for j:=2 to max do 找出与m点相连的边(另一端点为j),若小于ss[j]则替换 if (s[n,j] 0) and (ss[j] 0) and (s[n,j] ss[j]) then begin ss[j]:=s[n,j];p[j]:=n end; end; for i:=1 to max do 输出最小生成树矩阵 begin for j:=1 to max do write(q[i,j]);writeln end; writeln end. 普里姆 .2-1. ① ② ③ ④ ⑤ ⑥⑤ 1 2 3 4 5 6 6 5 5 6 5 ⑤ ④ ⑥⑤ ⑥⑤ ⑤ ④ ③ ② ① ⑤ ④ ③ ⑥⑤ ② 1 ① ③ ⑤ 4 1 ② ① ⑤ ⑥⑤ ④ 2 1 ③ ② ① ⑥⑤ 4 5 2 1 ④ ③ ② ① 4 4 3 2 1

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档