1. 程式人生 > >n個結點的無向完全圖的生成樹的個數

n個結點的無向完全圖的生成樹的個數

頭部閒扯

今天閒來在google搜了一下cantjie,突然發現我的部落格竟然被引用過,很是驚訝。因為雖然僅僅只是過去一年,我現在看我去年寫的部落格,就有種“這寫的什麼垃圾玩意”的感覺,沒想到竟然也會有人瀏覽並引用我的部落格。

想來這個部落格閒置一年多了,突然就想再拾起來看看,能不能再偶爾寫幾篇,不一定為了分享給誰看,也是為了給自己整理一下思路。

正文

剛到新加坡,前兩天介紹了一下 community detection的知識,但是主要演算法都沒有講,過兩天如果有空看看能不能邊學習演算法邊寫寫部落格。昨天做這門課的quiz,遇到一個有趣的問題:6結點的無向完全圖的生成樹的個數是多少?想了一個多小時也沒有想出來結果。

最開始的思路是,應該有個什麼遞推公式吧,比如把4個結點可以分為1+3或2+2之類,也許這個思路還可以再想下去,目前還沒有什麼進展。

然後看看了matrix67的部落格http://www.matrix67.com/blog/archives/682【經典證明:Prüfer編碼與Cayley公式】
大概瞭解Cayley公式就是說:n個結點的無向完全圖有 n(n-2)個結點。
而這個Prufer數列是說:一個Prufer序列唯一對應了一個無根樹,這個序列的長度是n-2

部落格中給了Prufer數列唯一對應一個無根樹的證明過程。之後思考問題的關鍵在於將:“n個結點的完全無向圖的生成樹的個數”轉化為“n個結點可以構成多少棵樹”,再轉化為“n個結點可以構成多少個prufer數列”。這樣就想明白了,prufer序列長度為n-2,每個位置取值都是[1,n],且各個位置可以重複,那麼構成的prufer數列的數目自然就是n(n-2)

了。

尾部閒扯

最後還是想抱怨兩句,感覺自己學習能力和自制力真的很成問題。
自己學習一會就想去youtube看會兒視訊刷刷空間朋友圈什麼的,通過這種方式消磨的時間,如果湊起來,大概已經可以去植物園和動物園一趟了。明明中午就沒有午休,晚上睡前還非要玩會手機,把可以有8個多小時的睡眠壓縮到七個小時。
自己讀了半天才理解的程式碼,計算機專業的大佬輕輕鬆鬆就看明白了。自己嘗試了半天才把某個基礎的庫函式勉強會用,有的同學簡單一句我沒見過的庫函式就把我好幾行程式碼都寫完了。
差的太多了,自己。