普利姆算法的正確性證明


已知條件:

圖p是一個連通圖,Y是對p使用prim算法得到的一棵生成樹,Y1是p的一棵最小生成樹

1.若Y=Y1,顯然prim算法是正確的

2.Y≠Y1,可進行如下推導:

a)Y中有n(n≥1)條邊不存在於Y1中,在構建Y的過程中,第一次遇到這樣的一條邊時(以e表示),則e的一個端點u落在V內(V是之前的prim運算得到的一個子頂點集),另一個端點v落在V外

b)Y1是連通的,故Y1中存在u到v的一條的路徑,此路徑上必然存在一條邊f,它的一個端點落在V內,另一個端點落在V外

c)把e加入Y1,去掉f,Y1仍然連通,根據prim算法,權值W(f)≥W(e),否則e不會被選入V,如果W(f)>W(e),新構建的樹的權值和會比Y1小,而Y1是最小生成樹,因此W(f)>W(e)不成立,得W(f)=W(e)

d)對每一條類似e的邊,重復過程c),最終Y和重新構建的的Y1擁有的邊完全一致,新構建的Y1也是最小生成樹,因此Y也是最小生成樹,證明prim算法正確

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM