接上一篇--最小生成树之Prim算法(根据点来实现最小生成树)
生活随笔
收集整理的這篇文章主要介紹了
接上一篇--最小生成树之Prim算法(根据点来实现最小生成树)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Prim算法:該算法也被稱為加點法,從一個節點開始出發,每次迭代權值代價最小的邊對應的點,加入到最小生成樹中。算法從某一個頂點s開始,逐漸長大覆蓋整個連通網的所有頂點。
加入到生成數的時候就只有兩個條件:
1. 該節點之前沒加入過生成樹中;
2. 該節點所對應的邊權值是當前優先級隊列中最小的一個。
下面給出流程圖:
其實這個過程挺簡單的,但是要畫圖出來就真的有點難度了~
我就簡單的就上面那個圖給大家講講整個過程:
1. 以A作為第一個節點,找到A節點的所有nextEdges(下一條邊),并按照權值從小到大放進優先級隊列里面去;
2. 選擇A節點的nextEdges中權值最小的邊,并且該邊的節點toNode還沒被遍歷過的(具體算法實現是還沒放進set集合的)
這個時候就選擇C(因為A的nextEdges中A到C邊的權值最小,并且C還沒被遍歷過)同時將C放到set里面去(證明它被遍歷 過了),如果toNode節點已經被遍歷過了,那么就繼續找權值第二小的邊進行判斷~
3.選擇C的同時,將C的nextEdges的所有邊按照權值從小到大放進優先級隊列中(注意:之前存進去的那些邊還在優先級隊列中)
下面供上算法的具體實現:
歡迎留言~
參考博文:https://blog.csdn.net/luoshixian099/article/details/51908175
總結
以上是生活随笔為你收集整理的接上一篇--最小生成树之Prim算法(根据点来实现最小生成树)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java某个时间推迟60天_java计算
- 下一篇: Log4j文件配置教程大全