C语言普里姆(Prim)算法实现计算国家建设高铁运输网最低造价的建设方案

背景:

描述:为促进全球更好互联互通,亚投行拟在一带一路沿线国家建设高铁运输网,请查阅相关资料
画出沿线国家首都或某些代表性城市的连通图,为其设计长度最短或造价最低的高铁建设方案。 要求:抽象出的图中顶点不少于10个,边不少于15条,边的权值代表各国家城市间的高铁长度或造价(假设1公里高铁的造价为人民币1亿元)

 操作提示::
(1)抽象出无向网画出代表各个国家城市名、城市之间连通线路及其造价的无向网; (2)输入初始数据:首先从终端分别输入顶点及边的总数,然后输入各顶点名(各个国家城市的名 称),再输入顶点之间的连通线路及其权值(相关城市名、长度或造价),建立无线网(建议:为节省
输入时间和测试数据准确性,采用读入文本文件的方式输入原始数据);
(3)求解最小生成树:利用普里姆(Prim)算法或克鲁斯卡尔(Kruskal)算法求解连通图的最小生
成树; (4)输出最小生成树:以<城市名1,城市名2,长度或造价>方式依次输出连通所有城市的高铁网最短长度或最低造价的建设方案。

效果展示:

我们使用下图标出地点进行模拟

Prim算法:

在图论中,最小生成树是一个重要的概念,它在许多实际问题中都有广泛应用。Prim算法作为一种常用的贪心算法,被用来求解最小生成树问题。

  1. 最小生成树简介 最小生成树是一张连通图的所有顶点构成的树,它包含了图中所有顶点,并且边的权值之和最小。最小生成树的一个重要性质是它不包含任何形成环路的边,因此可以保证生成树的连通性。

  2. Prim算法原理 Prim算法采用贪心策略,从一个起始顶点开始,逐步扩展生成树,直到所有顶点都被加入。其基本思想是每次选择一个与当前已选中的顶点集合相邻且权值最小的边,将其加入生成树中。具体步骤如下:

    1. 任选一个起始顶点,将其加入生成树中。
    2. 找到与生成树中的顶点相邻的所有边,并筛选出其中权值最小的边。
    3. 将上一步中找到的边所连接的顶点加入生成树中。
    4. 重复第2步和第3步,直到所有顶点都被加入。

从顶点A开始,我们将它加入生成树。然后选取与A相邻且权值最小的边(AB权值为5),将顶点B加入生成树。继续选择与生成树相邻且权值最小的边(CA权值为7),将顶点C加入生成树。接着选择CD边(权值为2),将顶点D加入生成树。最后选择DE边(权值为4),将顶点E加入生成树。此时所有顶点都已经加入,生成树构建完毕。

源码获取

欢迎大家点赞、收藏、关注、评论、批评啦 、查看👇🏻👇🏻获取联系方式👇🏻👇🏻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/268389.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸡群算法4.实验参数设定5.算法结果6.参考文献7.MA…

kubernetes(k8s) Yaml 文件详解

YAML格式&#xff1a;用于配置和管理&#xff0c;YAML是一种简洁的非标记性语言&#xff0c;内容格式人性化&#xff0c;较易读。 1、查看API 资源版本标签 kubectl api-versions 2、编写资源配置清单 kubectl create -f nginx-test.yaml --validatefalse 2.3 查看创建的po…

讲解充电桩测试项目

充电桩测试项目是为了保证充电桩的质量和安全性&#xff0c;对充电桩进行全面、系统的检测和评估。功能测试是充电桩测试的基础&#xff0c;主要检查充电桩的各项功能是否正常。包括充电接口连接测试、充电过程控制测试、充电状态显示测试等。通过功能测试&#xff0c;可以确保…

python自动化测试实战 —— WebDriver API的使用

软件测试专栏 感兴趣可看&#xff1a;软件测试专栏 自动化测试学习部分源码 python自动化测试相关知识&#xff1a; 【如何学习Python自动化测试】—— 自动化测试环境搭建 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更…

JIT即时编译器深度解析——Java性能提升利器

文章目录 一、JIT概述1、为什么要用JIT即时编译器2、C1、C2与Graal编译器3、分层编译4、热点代码5、热点探测&#xff08;1&#xff09;方法调用计数器&#xff08;2&#xff09;回边计数器 二、编译优化技术1、方法内联&#xff08;1&#xff09;什么是方法内联&#xff08;2&…

如何充分准备面试,迅速融入团队并在工作中取得卓越成就

首先&#xff0c;关于如何筹备面试&#xff0c;首先需要对所申请公司与职位进行深入的调查了解&#xff0c;并依据可能提出的面试问题预先准备相应的答案&#xff0c;并提前调试面试所需的仪器设备。同时&#xff0c;也要注重自身形象的塑造。更为关键的是 1. 在计算机领域的面…

读一张AFL终端截图

以下回答来源于ChatGPT plus 英文版 The image you uploaded shows a screenshot of a terminal or command-line interface running a fuzz testing program. Heres an analysis based on the visible text and layout: Program Name: The program is named "american f…

java基础之抽象的概念(全网最详细)

一.抽象的概念 如下图所示&#xff1a; 如上图所示&#xff0c;一个父类为图形&#xff0c;计算图形的面积方法&#xff0c;那么就会有疑问&#xff0c;计算哪个图形的面积呢&#xff1f;所以这个计算图形的面积方法就称为抽象方法&#xff1b; 二.抽象方法和抽象类的格式 …

LIMoE:使用MoE学习多个模态

文章链接&#xff1a;Multimodal Contrastive Learning with LIMoE: the Language-Image Mixture of Experts 发表期刊&#xff08;会议&#xff09;: NeurIPS 2022 目录 1.背景介绍稀疏模型 2.内容摘要Sparse Mixture-of-Experts ModelsContrastive LearningExperiment Analy…

lwIP 细节之五:accept 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程&#xff0c;其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数&#xff0c;注册到协议栈&#xff0c;在适当的时候&#xff0c;由协议栈自动调用&#xff0c;所以称为回调。 注&#xff1a;除非特别说明&#xff0c;以下内…

阿木实验室普罗米修斯项目环境配置

引言 普罗米修斯项目其实只是个大ROS功能包&#xff0c; 里面每个模块就是每个ROS功能包&#xff0c;比如控制模块&#xff0c;视觉模块等等。对PX4配置的与这个一样&#xff0c;另外他是使用自己的P系列无人机&#xff08;我个人是&#xff30;450&#xff09;&#xff0c;所…

Objection

本文作者&#xff1a;杉木涂鸦智能安全实验室 Home objection - 基于frida的命令行hook工具食用手册 实用FRIDA进阶&#xff1a;内存漫游、hook anywhere、抓包-安全客 - 安全资讯平台 Objection是一个基于Frida的命令行hook工具&#xff0c;用于移动设备的运行时探索。它可…