prim算法和kruskal算法的區別:prim算法圖解

昨天我們看了kruskal算法,今天我們換種算法來求。仍然是洛谷上的題目。

14856: 線路規劃

時間限制: 1 Sec 內存限制: 128 MB

題目描述

有n 個村莊之間需要架設通信線路,使得任意兩個村莊之間均可通信。兩個村莊a, b 間可通信,當且僅當它們之間存在一條通信線路或者存在村莊c 使得a,c 和b,c 間均可通信。給出村莊之間架設通信線路的代價,求出最小的總代價。

輸入

第一行包含兩個整數n,m,分別表示村莊數量和可以架設通信線路的村莊對數。以下m 行,每行三個整數a,b,c,表示村莊a,b之間架設線路的代價為c(村莊從0 開始編號)。

輸出

一個整數,最小總代價。

樣例輸入

3 30 1 11 2 12 0 3

樣例輸出

2

提示

對於50% 的數據,n<=100,m <=n^2

對於全部數據,1<=n<=10^5; n-1<=m<=10^5,所有代價均在[0, 10^6] 範圍內,保證問題有解。

題目大意就是給n個點,m對長度,求一個最小生成樹。

《算法導論》隨筆3-2 Prim算法
《算法導論》隨筆3-2 Prim算法

這個過程和Dijstra非常類似,也可以用堆優化。大家現在自己獨立思考一下。這個算法和Dijstra有什麼相同點?還有什麼不同點?可以把你的答案放到評論區內!!

Prim堆優化的算法複雜度為O(E+VlgV)

我們再綜合看一下Prim和Kruscal兩個算法。其實兩種算法的複雜度級別是差不多的。Kruscal需要並查集知識的前置,但Prim不需要。兩者的核心思想其實都是貪心,只不過貪心所用的策略和方式不同。很難說孰優孰劣,所以大家針對不同的題型或者針對自己的個人喜好自行選用就行。舉報

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/226768.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:52
下一篇 2024-12-09 14:52

相關推薦

發表回復

登錄後才能評論