数学建模---最小生成树问题的建模~~~~~Matlab代码

目录

1.相关概念

(1)什么是树

(2)生成树和最小生成树:

2.适用赛题

(1)赛题分类

(2)不同之处

3.两种算法

(1)prim算法

(2)Kruskal算法

4.典型赛题

(1)架设通信线路

(2)Matlab代码分析

(3)运行结果

(4)代码分享


1.相关概念

(1)什么是树

连通,无环路,无向图就是树;

(2)生成树和最小生成树:

生成树就是一个图的子图,而且是一个树,包括原来的图的所有的顶点,一个图可能会有多个生成树,可能会有多个最小生成树,但是最小生成树的长度是唯一的;

2.适用赛题

(1)赛题分类

通信建设问题,以及这个管道的铺设问题,都是这类最小生成树问题,求解的就是这个通信线路的最短情况和这个铺设管道最节省的情况;

(2)不同之处

这个不同之处指的就是这个最小生成树和最短路径的不同之处,这个最小生成树里面没有指定这个起点和终点,只要求能够把所有的顶点走一遍就可以了;

而最短路径是指明了起点和终点,在这个限制条件下要求这个路径最短,这个是否指定起点和终点是这两个问题的本质区别;

3.两种算法

因为这个无论是在数据结构里面,还是在离散数学里面,这个算法我们都已经学习了解过了,因此下面我不会进行详细的赘述;

(1)prim算法

(2)Kruskal算法

4.典型赛题

(1)架设通信线路

(2)Matlab代码分析

我们首先要生成一个邻接矩阵,然后再根据这个不同的顶点之间的长度去初始化这个不同位置的元素的数值;

我们现实生成了一个9*9的全是0的矩阵,然后就是根据不同顶点之间的权重去对于这个矩阵的相应的位置进行初始化;这个地方需要注意的是这个生成树是没有方向的,我们对于两个顶点之间的边,只需要初始化一次;

例如1,2这两个顶点之间,权重是2,我们在对于和1相关联的节点初始化之后,就已经把和1节点相关联的2节点给初始化了;当我们对于这个2节点及其相关联的边进行初始化的时候,这个就不需要重复的进行初始化操作;

upper是指使用的是这个矩阵的上三角,因为如果全部使用就会把每两个顶点之间出现两条边,这个最小生成树是无向图,我们只需要使用上三角即可;

这个里面使用到的相关函数的简单介绍我放到下面了: 

 接下来就是求解最小生成树,sparse表示使用的是地杰斯特算法,这个是我们自己设置的,不进行设置的话就会使用默认的prim算法,这两个都是可以进行求解的,只是这个效率上面可能会有区别,读者可以下去进行尝试;

L=sum就是对于这个权重求和,求解得到这个最小权重和,highlight是对于这个图形的优化;

(3)运行结果

最小权重和是47,这个最小生成树如图所示:

(4)代码分享

clear,clc;

a=zeros(9);
a(1,[2:9])=[2 1 3 4 4 2 5 4];
a(2,[3 9])=[4 1];
a(3,4)=1;
a(4,5)=1;
a(5,6)=5;
a(6,7)=2;
a(7,8)=3;
a(8,9)=5;

s=cellstr(strcat('v',int2str([1:9]')));

G=graph(a,s,'upper');%使用上三角矩阵画出图形

p=plot(G,'EdgeLabel',G.Edges.Weight);



T=minspantree(G,'Method','sparse');%使用迪杰斯特算法

L=sum(G.Edges.Weight)

highlight(p,T,'EdgeColor','Red','LineWidth',2.5)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PlatformIO开发环境

PlatformIO是一个开源的生态系统,用于构建物联网应用,它支持多种微控制器(MCU)和硬件开发板,并且与各种IDE集成良好,如VSCode, Atom等,使得跨平台的固件开发变得更加简单和高效。 ### 平台介绍…

计算机图形学入门21:辐射度量学

1.前言 在使用Blinn-Phong着色模型的时候,定义了一个光的强度I(Intensity),假如I等于10。那么I等于10是什么意思?它肯定有单位和物理意义。另一方面,whited-style光线追踪模型也不是准确的模型,因为做了很多假设&#…

VS Code快速选定当前括号中内容 快速选择当前行内容(必备)

文章目录 快速选定当前括号内容效果方法 快速选定当前行内容效果操作 快速选定当前括号内容 效果 方法 下载插件 默认快捷键选中当前括号内容 ctrl w 可修改快捷键 快速选定当前行内容 效果 操作 点击左键三次即可

鸿蒙HarmonyOS自定义组件开发和使用

自定义组件的介绍 在开发和使用自定义组件直接,我们需要了解什么是自定义组件? 在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。在进行 UI 界面开发时,通常…

操作系统之《处理器机调度算法》【知识点+详细解题过程】

目录 PS:处理机调度算法相关公式: 1、【FCFS】先来先服务调度算法 2、【SJF(SPF)】短作业(进程)优先调度算法 3、【HRRF】最高响应比优先算法 4、【SRTF】最短剩余时间优先调度算法(抢占式&am…

图解支付账务系统入门

这篇文章主要从研发的视角讲清楚:账务相关的一些基础概念,账务系统核心的职责,以及一些关键模块的设计要点。 进入正题前,先讲个小故事。 几年前一个狂风暴雨电闪雷鸣的下午,老板把负责账务系统的技术经理炒了鱿鱼&a…

Android 14 独立编译 Setting apk

我们在setting 目录下是用 mm 会报错。 所以应该在 源码主目录 采用 make Settings 进行编译 很多时候如果在apk 目录下 mm 单独编译会出错, 都可以才用这种方式进行编译。

Electron录制应用-打包静态文件问题【命令行ffmpeg导不出视频】

问题描述 在开发环境下,所有功能都运行正常,但一旦进行打包并运行生产环境的版本,导出mp4视频的功能就失效了。没有文件生成,也没有任何错误提示。 排查问题 为了找到问题的根源,我首先决定通过日志来追踪。我使用了winston和winston-daily-rotate-file这两个强大的日志…

招聘,短信与您:招聘人员完整指南

招聘人员面临的最大挑战之一就是沟通和联系候选人。为何?我们可以从以下原因开始:候选人通常被太多的招聘人员包围,试图联系他们,这使得你很难吸引他们的注意。在招聘过程的不同阶段,根据不同的工作量,让申请人保持最…

HBuilder X 小白日记01

1.创建项目 2.右击项目&#xff0c;可创建html文件 3.保存CtrlS&#xff0c;运行一下 我们写的内容&#xff0c;一般是写在body里面 注释的快捷键&#xff1a;Ctrl/ h标签 <h1> 定义重要等级最高的(最大)的标题。<h6> 定义最小的标题。 H标签起侧重、强调的作用…

【R语言】plot输出窗口大小的控制

如果需要输出png格式的图片并设置dpi&#xff0c;可采用以下代码 png("A1.png",width 10.09, height 10.35, units "in",res 300) 为了匹配对应的窗口大小&#xff0c;在输出的时候保持宽度和高度一致即可&#xff0c;步骤如下&#xff1a; 如上的“10…

vue2axios的使用

1.安装axios npm i axios 2.配置代理服务器 1.在config.js中配置单个代理服务器 // 开启代理服务器 需要重新启动项目devServer: {proxy: http://localhost:5000}配置简单&#xff0c;请求资源时直接发给前端&#xff08;8080&#xff09;即可&#xff1b;但不能配置多个代理…

11.常见的Transforms(二)

常见的Transforms&#xff08;二&#xff09; 1.Resize() 的使用 1.1 作用 resize可以把输入的图片按照输入的参数值重新设定大小。 1.2 所需参数 需要输入想要重新设定的图片大小。 输入的参数类型可以为包含长和宽数值的一个序列&#xff08;h,w&#xff09;或者一个整…

css做旋转星球可举一反三

<!DOCTYPE html> <html lang"en"><head> <meta charset"UTF-8" /> <title>旋转的星球</title> <style type"text/css">.box {/*position: relative;*/position: absolute;width: 139px;height: 139p…

ASUS/华硕幻13 2022 GV301R系列 原厂Windows11系统

安装后恢复到您开箱的体验界面&#xff0c;带原机所有驱动和软件&#xff0c;包括myasus mcafee office 奥创等。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http:…

pdf合并,这三种方法学会了吗?

在信息爆炸的时代&#xff0c;PDF文档凭借其跨平台、不易修改的特性&#xff0c;成为了我们工作和学习中不可或缺的一部分。然而&#xff0c;当面对多个PDF文件需要合并成一个完整的文档时&#xff0c;许多人可能会感到头疼。今天&#xff0c;就让我们一起来探讨三种高效的PDF合…

【python】socket通信代码解析

目录 一、socket通信原理 1.1 服务器端 1.2 客户端 二、socket通信主要应用场景 2.1 简单的服务器和客户端通信 2.2 并发服务器 2.3 UDP通信 2.4 文件传输 2.5 HTTP服务器 2.6 邮件发送与接收 2.7 FTP客户端 2.8 P2P文件共享 2.9 网络游戏 三、python中Socket编…

戴尔md3400存储控制器脱机故障 电池故障处理

看了一下网上关于DELL MD系列存储故障处理的文档还是比较少的&#xff0c;最近处理了一些关于MD系列存储的问题&#xff0c;稍微整理整理就分享一下&#xff0c;各位喜欢摸索的朋友可以稍稍做些参考&#xff0c;当然如果想寻求外援的也可以快速的找到合适的人。以便安全又快捷的…

SBTI(科学碳目标)认证是什么?

SBTI认证&#xff0c;全称为“科学基础目标设置倡议”&#xff08;Science-Based Targets initiative&#xff09;认证&#xff0c;是一种广泛认可的企业可持续发展标准。以下是关于SBTI认证的详细解释&#xff1a; 一、认证目标 SBTI认证旨在推动企业采取可持续的经营实践&a…

Android进阶之路 - DialogFragment有没有了解的必要?

几个月前写到了弹框业务&#xff0c;以前经常用Dialog、ButtomDialog 、popupWindow 组件&#xff0c;为了契合项目结构参考了原有的 DialogFragment 组件&#xff0c;特此予以记录 我一般在项目中写弹框组件的话&#xff0c;主要用到 alertDialog、popupWindow 组件&#xff0…