數學建模---最小生成樹問題的建模~~~~~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.pswp.cn/diannao/37185.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37185.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37185.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 下啟動app

創建啟動腳本: 創建一個啟動腳本,命名為你的應用程序或服務的名稱。這個腳本負責啟動、停止和管理你的應用程序。你可以使用 sudo 權限和任何文本編輯器創建這個腳本,比如 nano: bash sudo nano /etc/init.d/my_app 在編輯器中輸入啟動腳本的內容。一個簡單的例子可能如下…

java調用海康威視SDK實現車牌識別

我采用的是 報警布防方式 SDK版本為 CH-HCNetSDKV6.1.9.48_build20230410_win32 如何引用dll 我用的是jna 就不描述了 SDK在官網自行下載 以下代碼親測可用 自行參考~ 1.1接口調用流程 虛線框的內容是可選的,設備事先安裝配置好,能力集和配置接口可…

Linux高級編程——線程

pthread 線程 概念 :線程是輕量級進程,一般是一個進程中的多個任務。 進程是系統中最小的資源分配單位. 線程是系統中最小的執行單位。 優點: 比多進程節省資源,可以共享變量 進程會占用&am…

【高考】選專業時,應避免的誤區

【高考】選專業時,應避免的誤區-CSDN博客 【高考】選專業時以什么為主?-CSDN博客 分數限制下,選好專業還是選好學校?-CSDN博客 分數限制下,選好專業還是選好學校?-CSDN博客 在選專業時,考生…

解析 ThreadLocal 原理

ThreadLocal用于線程局部變量的一個工具類。 原理是為每個線程創建獨立的變量副本,從而實現線程數據的隔離。具體來說,ThreadLocal 通過一個 ThreadLocalMap來實現,這個 ThreadLocalMap 是一個自定義的哈希表,用于存儲線程和對應的…

Qt creator實現一個簡單計算器

目錄 1 界面設計 2 思路簡介 3 代碼 目錄 1 界面設計 ?2 思路簡介 3 代碼 3.1 widget.h 3.2 widget.c 4 完整代碼 在這里主要記載了如何使用Qt creator完成一個計算器的功能。該計算器可以實現正常的加減乘除以及括號操作,能實現簡單的計算器功能。 1 界…

Hadoop版本演變、分布式集群搭建

Hadoop版本演變歷史 Hadoop發行版非常的多,有華為發行版、Intel發行版、Cloudera Hadoop(CDH)、Hortonworks Hadoop(HDP),這些發行版都是基于Apache Hadoop衍生出來的。 目前Hadoop經歷了三個大的版本。 hadoop1.x:HDFSMapReduce hadoop2.x…

MySQL學習_python操作MySQL

用python連接數據庫分為以下幾個步驟 1.首先下載pymysql pip install pymysql2.創建數據 # 1.導入pymysql import pymysql # 2.連接MySQL conn pymysql.connect(host127.0.0.1,port3306,userroot,charsetutf8,dbunicom) cursor conn.cursor(cursorpymysql.cursors.DicCurso…

uniapp開發企業微信內部應用

最近一直忙著開發項目,終于1.0版本開發完成,抽時間自己總結下在項目開發中遇到的技術點。此次項目屬于自研產品,公司擴展業務,需要在企業微信中開發內部應用。因為工作中使用的是釘釘,很少使用企業微信,對于…

重新記錄做事的方向和內容(2024年6月28日19:50:38)

感覺自己沒必要這么焦慮,最后的結果無非就是自己又開始恢復到自己抽煙,喝酒,說臟話的一個狀態,自己那么糟糕自己都已經通過實事求是走出來了,現在難道自己還害怕什么? 如果順著這種封閉和沒有斷舍離的狀態…

【Qt C++實現繪制儀表盤】

要在Qt C中繪制儀表盤&#xff0c;您可以使用QChart、QSeries、QBarSeries、QPointSeries等類。以下是一個簡單的示例&#xff0c;演示如何使用這些類創建一個繪圖儀表盤&#xff1a; #include <QApplication> #include <QChart> #include <QChartView> #in…

06 Shell編程實戰——案例1

腳本編程步驟&#xff1a; 腳本編程一般分為4個步驟&#xff0c;即先確定需求&#xff0c;然后再確定你所要用到的語句&#xff0c; 需求分析&#xff1a;根據系統管理的需求&#xff0c;分析腳本要實現的功能、功能實現的層次、實現的命令與語句等&#xff1b;命令測試&…

Windows11下安裝多個JDK版本,并切換

Windows11下安裝多個JDK版本,并切換 前言步驟1、前期準備2、版本切換思考前言 一臺電腦可以同時安裝多個版本 jdk,建議兩個,最多不超三個。安裝多個JDK版本可能會占用較多的磁盤空間。此外,同時運行多個 JDK 版本可能會對系統性能產生一定的影響。 ??切換 JDK 有兩種方式…

ios swift5 視頻播放 播放視頻失敗 無法播放HEVC (H.265) 格式的視頻 H.264格式的可以播放

文章目錄 1.問題2.原因&#xff1a;iOS swift AVPlayerViewController無法播放HEVC (H.265) 格式的視頻3.解決方法用第三方框架MobileVLCKit來播放4.用MobileVLCKit寫的播放器4.1 兩個oc版本的4.2 兩個swiftUI版本的5.蘋果是支持HEVC (H.265) 格式的視頻&#xff0c;是硬件那邊…

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…

計算文本相似度的幾種方法

計算文本相似度的幾種方法 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們來探討一下計算文本相似度的幾種方法。文本相似度在自然語言處理&#xff08…

算法訓練 | 動態規劃Part10 | 300.最長遞增子序列、674.最長連續遞增序列、718.最長重復子數組

目錄 300.最長遞增子序列 動態規劃法 674.最長連續遞增序列 動態規劃法 718.最長重復子數組 動態規劃法 300.最長遞增子序列 題目鏈接&#xff1a;300. 最長遞增子序列 - 力扣&#xff08;LeetCode&#xff09; 文章講解&#xff1a;代碼隨想錄 動態規劃法 “子序列是…

基于java語言+springboot技術架構開發的 互聯網智能3D導診系統源碼支持微信小程序、APP 醫院AI智能導診系統源碼

基于java語言springboot技術架構開發的 互聯網智能3D導診系統源碼支持微信小程序、APP 醫院AI智能導診系統源碼 一、智慧導診系統開發原理 導診系統從原理上大致可分為基于規則模板和基于數據模型兩類。 1、基于規則推理的方法通過人工建立癥狀、疾病和科室之間的對應規則實現…

Java反射API詳解與應用場景

一、Java反射API簡介: 一、什么是反射: 反射是一種強大的工具,它允許我們在運行時檢查類、方法和字段的信息,甚至允許我們動態的調用特定類的方法或改變字段的值。編程語言中的反射機制通常用于從類、對象或方法中檢索元數據,或者更特別的說,從代碼本身中獲取信息。這就…

【51單片機入門】點亮數碼管

文章目錄 前言仿真圖如何去繪制一個數字示例代碼選擇某個數碼管顯示某個數字 示例代碼總結 前言 在嵌入式系統的世界中&#xff0c;單片機扮演著至關重要的角色。51單片機&#xff0c;作為最早的微控制器之一&#xff0c;至今仍被廣泛應用在各種設備中。本文將介紹如何使用51單…