Kruskal演算法的正確性證明

2021-10-11 16:26:11 字數 812 閱讀 5427

(1)演算法說明:

輸入圖g=(v,e,w), v= ; 輸出圖g的最小生成樹t

設計思想:按照長度從小到大對邊排序;依次考察當前最短邊e,如果e與t的邊不構成迴路,則把e加入樹t,否則跳過e直到選擇了n-1條邊為止。

(2)證明思路:

命題:對於任意n,演算法對n階圖找到一棵最小生成樹

歸納基礎:證明n=2時演算法正確

歸納步驟:

證明:假設演算法對於n階圖是正確的,其中n>1,則對於任何n+1階圖演算法也得到一棵最小生成樹

(3)證明

①、歸納基礎證明:

n=2時,圖g只有一條邊,顯然當前最短邊即為此邊,故而圖g的最小生成樹就是g本身

②、歸納步驟證明:

已知演算法對於n階圖正確,對於n+1個頂點的圖g,短接最短邊e,則獲得n階圖g』,由已知假設可得g』的最小生成樹為t』,再去除短接操作,將被短接的邊e恢復原來長度,獲得樹t;

如果t不是g的最小生成樹,則應當存在g的含邊e的最小生成樹t*,那麼對t短接獲得g』對生成樹t-,那麼此時應當有

w(t*-)= w(t*)-w(e)< w(t)-w(e)=w(t』)

顯然,這與t』是g』的最小生成樹矛盾,所以t*不存在,即t就是g的最小生成樹,所以演算法對n+1階圖成立

③、綜上所述,對於任意n,演算法對n階圖找到一棵最小生成樹

(4)短接操作說明

任意n+1個頂點的圖g,g中最小權邊e=,從g中短接i和j,得到圖g』

如圖所示,進行短接操作後的變化

Dijkstra演算法正確性證明

問題 求圖中點1到其他各點的最短距離 演算法描述 設初始時圖的所有點的集合u 把起點s放入初始集合set中 u u set set 找s經過集合set中的點,能達到的距離最短的點k k in u 將k併入set 言外之意k的前乙個點必然屬於set u u set set 由於每次引入的只有乙個點k,...

Dijkstra演算法正確性證明

問題 求圖中點1到其他各點的最短距離 策略 1.把起點1放入初始集合set中,從剩餘的點中,選取到set 此時set中只有1個點 距離最近的點,併入集合set中,2.從剩餘的點中,找經過集合set,到起點1的最短距離,將最短邊併入set集合 3.依次迴圈,直到所有的邊都併入set 變數的命名 set...

貪心演算法正確性證明

貪心演算法正確性證明 wiki定義 貪心演算法 英語 greedy algorithm 又稱貪婪演算法,是一種在每一步選擇中都採取在當前狀態下最好或最優 即最有利 的選擇,從而希望導致結果是最好或最優的演算法。比如在旅行推銷員問題中,如果旅行員每次都選擇最近的城市,那這就是一種貪心演算法。用大白話說...