1. 程式人生 > >次優最小生成樹<提綱>

次優最小生成樹<提綱>

主體 所有 大於 思路 結束 添加 節點 時間 判斷

時間有限,先占坑,寫下主體思路,以後有空填

prim算法中,選擇橫跨切割的邊時,比如選擇了(u,v),那麽它一定在所有已選節點到v的路徑上,此時更新所有已選節點到v的路徑上的最大權重邊。prim算法結束後,便得到最小生成樹中,任意兩節點間的簡單路徑中最大權重邊。

枚舉圖G中所有不屬於最小生成樹T的邊,將一條邊添加到T中,便得到一個環,刪除環中除了新加入的邊以外最大權重的邊,便得到一棵總代價大於等於T的生成樹。選則最小的那個,便是次優最小生成樹。

類似的方法還可以判斷最小生成樹是否唯一,簡言之,對於不屬於T的一條邊(u,v),若T中u和v兩節點間路徑上最大權重邊與(u,v)權重相等,則T加入(u,v)並刪除這個最大權重邊後,T總代價不變,也就是說,最小生成樹不唯一。

<來自算法導論第三版23章思考題>

次優最小生成樹<提綱>