1. 程式人生 > >圖論-最小生成樹

圖論-最小生成樹

而是 最小 動態 課程 最小生成樹 圖論 重疊 其中 每次

今天聽了CLRS的第二作者講的課程,關於最小生成樹的算法。

其實就是先模擬一下小樣例(不是單純模擬,而是發現其中的規律,要思考)

然後發現最優子結構-如果(u,v)是一條唯一連接兩點的邊,那麽將原圖拆分為兩塊(一塊包含u,一塊包含v),兩圖分別最優解+dist[u,v]就是原圖的最優解了。

然後發現這樣做會有很多很多的重疊子問題:把每次的(u,v)換一換順序就一堆重疊子問題。於是就有動態規劃的思路了……

別急!

這裏還有一個性質:如果(u,v)在當前圖中邊權最小,則(u,v)必在此圖的最小生成樹中。

證明:

我們把此圖(V,E)的點集合分為兩個點集集合(A,B)且u∈A,v∈B,且A+B=V,A&B=?;則在(V,E)的最小生成樹中,必有一條邊連接(跨越)A,B兩個集合。

然而(u,v)必定比這條邊優。所以(u,v)必在此圖的最小生成樹中。

貪心證明完畢!

圖論-最小生成樹