C语言普里姆(Prim)算法实现计算国家建设高铁运输网最低造价的建设方案
背景:
描述:为促进全球更好互联互通,亚投行拟在一带一路沿线国家建设高铁运输网,请查阅相关资料
画出沿线国家首都或某些代表性城市的连通图,为其设计长度最短或造价最低的高铁建设方案。 要求:抽象出的图中顶点不少于10个,边不少于15条,边的权值代表各国家城市间的高铁长度或造价(假设1公里高铁的造价为人民币1亿元)
?操作提示::
(1)抽象出无向网:画出代表各个国家城市名、城市之间连通线路及其造价的无向网; (2)输入初始数据:首先从终端分别输入顶点及边的总数,然后输入各顶点名(各个国家城市的名 称),再输入顶点之间的连通线路及其权值(相关城市名、长度或造价),建立无线网(建议:为节省
输入时间和测试数据准确性,采用读入文本文件的方式输入原始数据);
(3)求解最小生成树:利用普里姆(Prim)算法或克鲁斯卡尔(Kruskal)算法求解连通图的最小生
成树; (4)输出最小生成树:以<城市名1,城市名2,长度或造价>方式依次输出连通所有城市的高铁网最短长度或最低造价的建设方案。
效果展示:
我们使用下图标出地点进行模拟
Prim算法:
在图论中,最小生成树是一个重要的概念,它在许多实际问题中都有广泛应用。Prim算法作为一种常用的贪心算法,被用来求解最小生成树问题。
-
最小生成树简介 最小生成树是一张连通图的所有顶点构成的树,它包含了图中所有顶点,并且边的权值之和最小。最小生成树的一个重要性质是它不包含任何形成环路的边,因此可以保证生成树的连通性。
-
Prim算法原理 Prim算法采用贪心策略,从一个起始顶点开始,逐步扩展生成树,直到所有顶点都被加入。其基本思想是每次选择一个与当前已选中的顶点集合相邻且权值最小的边,将其加入生成树中。具体步骤如下:
- 任选一个起始顶点,将其加入生成树中。
- 找到与生成树中的顶点相邻的所有边,并筛选出其中权值最小的边。
- 将上一步中找到的边所连接的顶点加入生成树中。
- 重复第2步和第3步,直到所有顶点都被加入。
从顶点A开始,我们将它加入生成树。然后选取与A相邻且权值最小的边(AB权值为5),将顶点B加入生成树。继续选择与生成树相邻且权值最小的边(CA权值为7),将顶点C加入生成树。接着选择CD边(权值为2),将顶点D加入生成树。最后选择DE边(权值为4),将顶点E加入生成树。此时所有顶点都已经加入,生成树构建完毕。
源码获取
欢迎大家点赞、收藏、关注、评论、批评啦 、查看👇🏻👇🏻获取联系方式👇🏻👇🏻
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!