文章插圖

文章插圖
最小生成樹
假設你是電信的實施工程師,需要為一個鎮的九個村莊架設通信網絡做設計,村莊位置大致如圖,其中V0~V8是村莊,之間連線代表可達距離,數字代表里程數 。領導要求你用最小成本完成這次任務,如何做?
定義
一個連通圖的生成樹是一個極小連通子圖,它含有圖中全部頂點,但只有足以構成一個樹的n-1條邊——我們把構造連通網的最小代價生成樹稱為最小生成樹(Minimum Cost Spanning Tree)
我想在講算法之前我們先做一下思考,我們如何找到該條路徑?
我們是否可以從某一點開始尋找呢?我們從哪一個地點作為起始點呢?我們找到第一個點以后如何找最小權值的邊呢?
第一步我想先從概念下手:首先,因為一個連通圖含有圖中全部頂點,所以我們可以從任意頂點出發(開始尋找),最終結果應該是一致的 。但是為了方便講述我還是想從V0開始出發(此時我們站在V0) 。
逆著想一下,與V0鄰接有且僅有兩條邊(V0,V1),(V0,V5),我們必須要選一條(因為我們必須要到達V0),所以我們干脆在V0的兩條邊上選一條到達V0 。
我們站在V0巡視了一下兩條邊,然后選擇了(V0,V1)(此處有判斷) 。
第二步但是接下來我們該如何走呢?其實我也很迷茫,既然不知道,那就選當前能走的路的最近的一條吧 ?,F在我們有兩種選擇,第一種從V0出發,第二種從V1出發,分別產生的可能性如下(綠色):
普里姆(Prim)算法
【最小生成樹prim算法圖解 prim算法求最大生成樹】在講之前我們先選一種圖的存儲結構吧,這里我們用圖的鄰接矩陣存儲結構來講解 。
由代碼中的循環嵌套可得知此算法的時間復雜度為O(N^2) 。
- 藝術字在線字體生成器 藝術字體在線生成器軟件下載
- 花草樹葉 花草樹葉是什么垃圾
- matlab中最小二乘法擬合曲線 matlab曲線擬合的最小二乘法
- 種一棵愛心樹綜合實踐六年級 愛心樹是一棵怎樣的樹
- ico圖標生成器 ico圖標制作工具下載
- 樸樹唱送別是什么節目 樸樹唱送別為什么泣不成聲?
- 免費記賬軟件哪個好用電腦版 免費記賬軟件哪個好用可愛可以生成支票
- matlab求最大值最小值 matlab求函數最大值代碼
- 視頻壓縮大小用什么軟件 哪個軟件壓縮視頻最小
- mybatisplus 代碼生成 mybatisplus自動生成
