什麼是mst?mst就是most small tree,應該就是最小生成樹的意思吧,具體不是很清楚,mst性質就是最小生成樹性質(以下簡稱mst性質),我們在看最小生成樹的演算法的時候,很多情況下都有關於這條性質的說明,比如,歷史上最經典的prim演算法和kruskal演算法就是根據這個性質演算出來的algorithm,mst性質的宣告如下:
最小生成樹性質:設g=(v,e)是乙個連通網路,u是頂點集v的乙個真子集。若(u,v)是g中一條「乙個端點在u中(例如:u∈u),另乙個端點不在u中的邊(例如:v∈v-u),且(u,v)具有最小權值,則一定存在g的一棵最小生成樹包括此邊(u,v)。
關於這個性質的證明過程,網上的資料不多,即使有,也不是很全面或者證明過程不夠細節,我也是花了很長時間才弄清楚的,其實很簡單,下面大家看看我是怎麼證明的:
為了方便下面的證明過程,預先做一些約定:
①將集合u中的頂點看作是紅色頂點
②而v-u中的頂點看作是藍色頂點
③連線紅點和藍點的邊看作是橙色邊
④權最小的橙色邊稱為輕邊(即權重最"輕"的邊)
因此,mst性質中所述的邊(u,v)就可簡稱為輕邊。如下圖:
用反證法來證明mst性質的正確性,假設g中任何一棵最小生成樹都不含輕邊(u,v)。則若t是g的一棵最小生成樹,則它不含此輕邊。
由於t是包含了g中所有頂點的連通圖,所以t中必有一條從紅點u到藍點v的路徑p,而且路徑p中必定包含一條橙色邊(u',v')連線紅點集和藍點集,否則u和v不可能連通。我們假設u-a-u'-v'-v
就是這樣的一條路徑,看下面的圖:
當把輕邊(u,v)加入樹t時,該輕邊和p明顯構成了乙個迴路。刪去紫邊(u',v')後迴路亦消除,由此可得另一生成樹t'。 如下:
很顯然,t'和t的差別僅僅在於t'用輕邊(u,v)取代了t中權重可能更大的橙色邊(u',v')。因為(u',v')的權重不可能比(u,v)小,由反證法的原理可知我們的前提條件裡已經說明,所有橙色邊裡最小的一條邊稱為輕邊,因為(u,v)是已經假定了的輕邊,因此,必定有如下關係式:
w(u,v)≤w(u',v')
所以,w(t')=w(t)+w(u,v)-w(u',v') ≤ w(t)
故此t'也是g的一顆最小生成樹,但是它包含(u,v),這與假設是矛盾的,所以,mst性質成立!
**其實個人覺得沒必要這麼麻煩,道理很簡單,我們假設任何一棵最小代價生成樹都不包含(u,v),由於樹都是連通圖,因而必定存在其他的邊聯通了頂點集u和v-u,並且這樣的邊必須只有一條,否則便會形成迴路,因為頂點集u和v-u裡面各個頂點也都是連通的,你畫畫看看便知道了。那麼如果我們現在把輕邊(u,v)加入這個樹中,那麼便形成迴路了,那這個時候我們把原來的聯通u和v-u的邊去掉,這樣形成的樹是比原來的那棵最小生成樹的代價還要小的,因為邊(u,v)是連線兩個點集之間的權值最小的邊。所以這棵新的樹才是最小生成樹,但是它包含了邊(u,v),所以與假設矛盾,結論成立。其實我們要證明的就是,對於兩個點集,有最小的權值的邊(u,v),如果該圖的最小生成樹不包括這條邊的話,那麼這棵樹就 不是最小生成樹。
帶你理解MST性質
假設要在n個城市之間建立通訊聯絡網,則連通n個城市需要n 1條線路。在這種情況下,我們自然需要考慮乙個問題,如何在最節省經費的條件下建立這個網路?很自然地我們會想到,將各個城市之間的線路開銷轉化為權重,要想找到最節省經費的方案,就需要找到能夠連通所有城市且權重最小的連通線路。因此,我們需要選擇一顆生...
組合數性質的證明
先列出來展開式 a n,m n n 1 n m 1 n n m c n,m a n,m m n n m m 由於時間原因 在這一篇不會全證明完 對於0 m n,有c n,m c n,n m 這是顯而易見的 首先我們舉個例子 現在乙個隊伍裡面有n個隊員,要先選擇m個隊長,求 有多少個方案數 這裡我們可...
Prufer序列 性質 證明
下午hhy還有aak看到了這個 質問我prufer序列是啥 被迫複習一波 直接從題目看吧 hnoi2004 樹的計數 大概意思就是給你n個節點 告訴你每個節點的度數 然後問你根據這些度數能夠生成多少棵樹 看樣例4 2 1 2 1 畫個 釋一下 題目中給出的樣例只有這兩種情況,所以輸出答案為2 我們更...