圖形的應用
資料結構
鍾宜玲
最小成本擴展樹
(MINIMUN COST SPANNING TREE)
1 3 2 4
原圖
1 3 2 4 1 3 2 4擴展樹
1 3 2 4 18 16 17 12 14 15 1 3 2 4 16 12 14成本 = 12 + 14 + 16 = 42
加權圖形
最小成本擴展樹
KRUSKAL 演算法
假設圖形G共n個頂點 擴展樹T的起始值為一空樹 1. 若擴展樹T中的邊數少於 n – 1,則 如果G中的邊皆已選過,則沒有擴展樹,程式結束。 否則 在圖形G中選一個尚未被選過的最小成本的邊, 若此邊加入擴展樹T中不會造成循環,則加入。 2. 重複以上步驟直到擴展樹T中的邊數等於 n - 1。流程圖
T為一空樹 開始 選一個尚未被選過的最小本的邊e e加入T造成循環? 將與V相鄰但未走訪過的頂點依序放入堆疊內 結束 否 是 T即為擴展樹 否 是 G中的邊皆已選過? T的邊樹小於n - 1 否 G沒有擴展樹 是用KRUSKAL演算法求最小成本擴展樹
1 4 2 5 6 3 13 3 12 8 11 10 9 6 5 7 1 4 3 2 6 5 1 4 3 2 6 5 1 4 3 5 6 2 6 5 1 4 3 5 6 3 8 10 2 6 5 1 4 3 5 6 3 8擴展樹的邊數 入選的邊 成本 是否加入擴展樹中 0 (1,4) 3 是 1 (2,6) 5 是 2 (2,5) 6 是 3 (5,6) 7 造成循環不加入 3 (3,5) 8 是 4 (2,3) 9 造成循環不加入 4 (1,2) 10 是 5 ==> 擴展樹的邊數 = 頂點數減1,故結束。 成本= 3 + 5 + 6 + 8 + 10 = 32