演算法之路--最小代價生成樹
阿新 • • 發佈:2019-02-14
前言
一個無向連通圖的生成樹是極小連通子圖
這句話是在我學習演算法設計的時候看到的,當時學了很多什麼無向連同有向連同的,具體的我也記不清了,記得上次說要整理演算法模組的,一直沒時間整理,心想行動才是最有效的辦法。整理得出一句話:一棵生成樹的代價是樹中各條邊上的代價之和且是最小。
貪心法
求一個帶權無向圖的最小代價生成樹問題是一個最優化問題,一個無向圖有多顆不同的生成樹,一個無向圖的所有生成樹都可看成是問題的可行圖。其中代價最小的生成樹就是所求的最優解。加上我個人的觀點就是遍歷所有無向圖可生成的樹求得最小代價的解。為什麼這麼說呢,因為我們知道無向圖的節點是有限個,既然結點有限那麼派生出的樹自然也就是有限個,我們在有限個解集中尋求最小生成樹是可行的,不通思路效率不一樣罷了。
運用窮舉法是可行的,但是窮舉法是在是太耗費精力了。實用貪心法可以極大的減少演算法的計算量。
既然用貪心法,我們首先就要確定一條貪心準則,在每一步中我們都會選取一個區域性最優的方案。在N個點中我們需要通過貪心法選擇出N-1條邊來構成無向連通圖。我剛才也說了,貪心法是每部是選擇區域性最優,所以從全域性的角度來考慮的話,不一定是全域性最優解。
首先我們得設計一個類或者是一個Node來形容這個N個點,通過觀察我們發現這個N個點有相同之處,
記錄篇,慢慢更新