- 相關(guān)推薦
動(dòng)態(tài)哈夫曼編碼的改進(jìn)
該文所附的動(dòng)態(tài)哈夫曼編碼數據壓縮與解壓源程序中的UpDate函數是動(dòng)態(tài)修改哈夫曼樹(shù)的關(guān)鍵部分,該函數對動(dòng)態(tài)哈夫曼樹(shù)的一種可能情況無(wú)法正確修改,針對這一點(diǎn),本文附上對該函數的一個(gè)修正定義,以使該壓縮與解壓程序更加完善。
以下就舉例說(shuō)明原UpDate函數無(wú)法正確修改的一種哈夫曼樹(shù)。例如若要壓縮“TThhis”字符串,則在壓縮完“TTh”之后的動(dòng)態(tài)哈夫曼樹(shù)為圖所示(設根結點(diǎn)序號為1000):
@@04A07700.GIF;圖 壓縮完“TTh”之后的動(dòng)態(tài)哈夫曼樹(shù)@@
此時(shí)若再將字符h進(jìn)行壓縮編碼,則在輸出h的編碼“01”后需調整哈夫曼樹(shù),以997號葉結點(diǎn)為當前結點(diǎn),則與當前結點(diǎn)具有同樣重量的且序號最大的結點(diǎn)為998號結點(diǎn),而該結點(diǎn)是997號結點(diǎn)的父結點(diǎn),對二者按原文所提供的UpDate函數進(jìn)行交換,則將導致998號結點(diǎn)變成葉結點(diǎn),996號結點(diǎn)變成997號結點(diǎn)的左孩子,997號結點(diǎn)則既為自己的父結點(diǎn)又是自己的右孩子,這樣在對后繼字符i進(jìn)行壓縮編碼時(shí),首先就無(wú)法輸出996號空結點(diǎn)的編碼了,此時(shí)壓縮程序陷入死循環(huán)。
顯然這時(shí)可以簡(jiǎn)單地將998和997號結點(diǎn)的重量加1,然后以998號結點(diǎn)的父結點(diǎn)為當前結點(diǎn)進(jìn)行調整,根據這種思想對原文提供的UpDate函數進(jìn)行修正所得新的UpDate函數附后。
void UpDate(struct Node *Temp)
{
struct Node * Tempa, * Tempc, * Pointer;
struct LeafNode *p,*q,*b;
unsigned char Letter;
while(Temp!=Root)
{
if(Temp-
【動(dòng)態(tài)哈夫曼編碼的改進(jìn)】相關(guān)文章:
計算機畢業(yè)論文-動(dòng)態(tài)哈夫曼編碼的改進(jìn)03-06
針對硬件實(shí)現的H.264視頻編碼算法改進(jìn)03-18
2.4Kbps MELP低速率語(yǔ)音編碼技術(shù)研究與改進(jìn)03-30
Tunstall編碼與自適應編碼算法03-07
視音頻素材的編碼轉換03-19
對于緊致碼在三種編碼方法下的編碼特性研究03-19
最新推薦
- 搜索引擎中的網(wǎng)絡(luò )蜘蛛技術(shù)探析
- 尋找網(wǎng)絡(luò )質(zhì)量的峰值
- 艾雷斯ACS-3662工作站在硫化機中的應用
- ARP欺騙防御技術(shù)的研究
- 試論中小企業(yè)網(wǎng)站建設對其品牌發(fā)展戰略的推動(dòng)與促進(jìn)
- 無(wú)跳線(xiàn)主板BIOS高級設置
- 防沉迷系統
- 動(dòng)態(tài)哈夫曼編碼的改進(jìn)
- 基于A(yíng)SP的網(wǎng)上書(shū)店設計
- 思想動(dòng)態(tài)分析報告
- 學(xué)生思想動(dòng)態(tài)報告
- 大學(xué)生思想動(dòng)態(tài)報告
- 加油站員工心得體會(huì )
- 陽(yáng)光農廉工作總結
- 鉆井工個(gè)人工作總結
- 學(xué)習活動(dòng)總結
- 英語(yǔ)智力題及答案
- 英語(yǔ)個(gè)人求職簡(jiǎn)歷
- 學(xué)生會(huì )入職申請書(shū)