1. 程式人生 > >Prim算法 kruskal算法的簡單證明

Prim算法 kruskal算法的簡單證明

kruskal prim 找到 子圖 生成樹 可能 第一個 一個 最小生成樹

prim算法證明 :

對於最小代價生成樹中的ai點

刪除與他相連接的k條邊

最小連通圖成為 k+1個連通子圖

選取ai點連接外界的最小邊 a1到a2

一定是最小樹中的一條邊

對於最小代價生成樹中的a1 a2兩點

刪除他們與外界相連接的k`條邊

連通圖成為k`+1個聯通子圖

他們與外界相連接的最小邊ai 到a3

一定是樹中的一條邊

........

按照以上步驟可以確定所有n個點的n-1條邊

kruskal證明

由prim算法可知

連接一個 最小生成樹的子圖與外界的最小邊一定是最小生成樹中的邊

按照kruskal算法選取的第一個邊

a1到a2,是a1連接外界的最小邊

由prim算法可知屬於最小生成樹

由kruskal算法找到的第二個邊a3(可能等於a1或a2) 到a4(可能等於a1或a2)

當作a3所屬的最小生成樹連接到外界的最小邊(更小的要麽已經被選 要麽已經和已經確定的邊形成回路)

由prim算法可知屬於最小生成樹

........

按照以上步驟可以確定所有n個點的n-1條邊

Prim算法 kruskal算法的簡單證明