收藏本页
联系我们
论坛帮助

>> 关于竞赛设计的各种算法,欢迎大家到此讨论
趣题之家信息学竞赛算法艺术 → 最小生成树

  发表一个新帖子  发起一个新投票  回复本主题 您是本帖的第 4596 个阅读者
  标题:最小生成树 树形   打印   收藏   推荐  
     帅哥哟,离线,有人找我吗?
    
    
    头衔:ENDLESS
    等级:版主
    文章:36
    积分:116
    注册:2004-11-24
给remlostime发送一个短消息 把remlostime加入好友 查看remlostime的个人资料 搜索remlostime在的所有贴子 点击这里发送电邮给remlostime 引用回复这个贴子 回复这个贴子 楼主
发贴心情 最小生成树
最小生成树


假设要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然会考虑这样一个问题,如何在最节省经费的前提下建立这个通信网。


    在每两个城市之间都可以设置一条线路,相应地都要付出一定的经济代价。n个城市之间,最多可能设置n(n-1)/2条线路,那么,如何在这些可能的线路中选择n-1条,以使总的耗费最少呢?


  普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法是两个利用MST性质构造最小生成树的算法。


1

2

3

4

5

6

⑥⑤

6

5

5

6

program prim;


  const max=6;


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));


of byte=(100,100,100,100,100); 扩展用数组,ss=0表示I点已扩展,ss<>0表示ss是当前所有已扩展点到点I的路径中的最短路径。


<>0表示I点与j点连


of byte; 存ss的另一端点,即s[I,p]=ss


       i,j,l,m,n:integer;


  begin


:=0; 清零


<>0 then begin ss:=s[1,i];p:=1 end;


                                          ss数组赋初值,并找出与1点相通的所有点。


    for i:=2 to max do


      begin


        l:=100;


        for j:=2 to max do  找出与当前树中所有点相连的最短边中的最小边


end


建树


则替换


) then


:=n end;


      end;


    for i:=1 to max do  输出最小生成树矩阵


);writeln end;


    writeln


  end.

发贴IP已设置保密 2005-03-15 23:09
       
     帅哥哟,离线,有人找我吗?
    
    
    头衔:大菜鸟
    等级:版主
    威望:1
    文章:117
    积分:315
    注册:2004-10-19
 QQ 给licong发送一个短消息 把licong加入好友 查看licong的个人资料 搜索licong在的所有贴子 点击这里发送电邮给licong 引用回复这个贴子 回复这个贴子 2
发贴心情
普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法是两个利用MST性质构造最小生成树的算法。

MST?


终极菜鸟复活~~~~~~
发贴IP已设置保密 2005-03-21 13:37
       

 2   2   1/1页      1    


网上贸易 创造奇迹! 阿里巴巴 Alibaba

Powered By Dvbbs Version 7.1.0
Copyright ©2003 - 2006 QTHome.Org
页面执行时间 00.13867 秒, 3 次数据查询
本论坛采用阿里巴巴支付宝网上银行支付系统,安全、可靠、便捷