最佳歸並樹


最佳歸並樹

歸並樹的神秘性質

讀寫磁盤需要2*(6+8+14+16)

每個初始歸並段看作一個葉子結點,歸並段的長度作為結點權值,則上面這顆歸並樹的帶權路徑長度WPL=2 * 1+(5+1+6+2) * 3 = 44 =讀磁盤的次數 = 寫磁盤的次數

WPL:結點值*到根節點的路徑長度

重要結論:歸並過程中的磁盤I/O次數 = 歸並樹的WPL * 2

可以想到:如果要追求歸並過程中的磁盤IO次數最小,就要使歸並樹WPL最小——哈夫曼樹

構造2路歸並的最佳歸並樹

一開始把每一個結點都看成一個個獨立的樹,接下來在這幾顆樹中挑選權值最小的兩棵樹,讓他們稱為兄弟。新的結點的權值是這兩個孩子結點的權值之和。還剩下4顆樹

。。。如此操作。。。

\[最佳歸並樹WPL_{min} = (1+2)*4+2*3+5*2+6*1=34 \]

讀磁盤次數 = 寫磁盤次數 = 34次

總的磁盤I/O次數 = 68

多路歸並的情況

顯然不是最佳的歸並樹

多路歸並的最佳歸並樹

原理和2路歸並類似,選擇權值最小的3個結點讓他們成為兄弟

\[WPL_{min} = (2+3+6)*3 + (9+12+17+24+18)*2 + 30*1 = 223 \]

歸並過程中 磁盤的I/O總次數 = 446次

如果減少一個歸並段

要做3路歸並

不正確!!!!

最后一次歸並是2路歸並

正確的做法

對於k叉歸並,若初始歸並段的數量無法構成嚴格的k叉歸並樹,則需要補充幾個長度為0的”虛段“,在進行k叉哈夫曼樹的構造。

添加虛段的數量

對於k叉歸並,若初始歸並段的數量無法構成嚴格的k叉歸並樹,則需要補充幾個長度為0的”虛段“,在進行k叉哈夫曼樹的構造。

k叉的最佳歸並樹一定是一棵嚴格的k叉樹,即樹中只包含度為k、度為0的結點。

知識回顧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM