iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
0
自我挑戰組

學習資料結構30天系列 第 13

[Data Structure][Graph] - Prim's Algorithm

  • 分享至 

  • xImage
  •  

前言

找Mininum spanning tree的方法有Kruskal's AlgorithmPrim's Algorithm,今天介紹Prim's Algorithm

Prim's Algorithm

先從Spanning tree中找一個頂點V作為起始點,找出與V相連且還沒有被選取的頂點裡面加權值最小的邊,並加入與加權值最小的邊相連的頂點,重覆找尋相連且未被選取的頂點加入Spanning tree,直到產生了N-1個邊,將圖的N個頂點連接起來。

  • 又到了以圖片為例子的時間了:
    https://ithelp.ithome.com.tw/upload/images/20181026/20112438KmBsa0J2B5.jpg
    1. 起始點設為B點,與B點相連的邊之權重值有6、8。
      https://ithelp.ithome.com.tw/upload/images/20181027/20112438OtOpPCzf3f.jpg
    2. 與B點相連的邊之最小權重值為6,且C點尚未被選取,於是加入頂點C。
      https://ithelp.ithome.com.tw/upload/images/20181027/20112438w2d8lhLfrt.jpg
    3. 又增加了C點的4個相鄰的邊,其權重值為4、6、8、9。
      https://ithelp.ithome.com.tw/upload/images/20181027/201124388KlaF5yqZw.jpg
    4. 與B點或C點相連的邊之最小權重值為4,且E點尚未被選取,於是加入頂點E。
      https://ithelp.ithome.com.tw/upload/images/20181027/20112438X9uqcdH8YR.jpg
    5. 又增加了E點的2個相鄰的邊,其權重值為1、2。與B點或C點或E點相連的邊之最小權重值為3,且G點尚未被選取,於是加入頂點G。
      https://ithelp.ithome.com.tw/upload/images/20181027/20112438pXCefVOF93.jpg
    6. 與B點或C點或E點G點相連的邊之最小權重值為2,且D點尚未被選取,於是加入頂點D。
      https://ithelp.ithome.com.tw/upload/images/20181027/201124380mFPnOQz0E.jpg
    7. 與B點或C點或E點G點D點相連的邊之最小權重值為3,且A點尚未被選取,於是加入頂點A。
      https://ithelp.ithome.com.tw/upload/images/20181027/20112438ttrTxT0DDm.jpg
      => 就找到Mininum spanning tree了~

參考

細談資料結構 第六版
ISBN 978-986-312-014-8


上一篇
[Data Structure][Graph] - Kruskal's Algorithm!
下一篇
[Data Structure][Graph] - Dijkstra's Algorithm
系列文
學習資料結構30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言