论文天下|会计论文|管理论文|计算机论文|医药学论文|经济学论文|法学论文|社会学论文|文学论文|教育论文|理科论文|工科论文|艺术论文|哲学论文|文化论文|外语论文|格式论文
论文天下
计算机应用论文  计算机理论论文  计算机网络论文  电子商务论文  软件工程论文  操作系统论文  通信技术论文   
动态哈夫曼编码的改进

  《计算机世界月刊》1994年7月号所登载的《动态哈夫曼编码的数据压缩方法》一文给出了一种实时性较强的数据压缩方法,该方法的最大特点是不需预先对原始数据进行一遍扫描以建立哈夫曼树,而改为以动态变化的哈夫曼树对数据编码。
该文所附的动态哈夫曼编码数据压缩与解压源程序中的UpDate函数是动态修改哈夫曼树的关键部分,该函数对动态哈夫曼树的一种可能情况无法正确修改,针对这一点,本文附上对该函数的一个修正定义,以使该压缩与解压程序更加完善。
以下就举例说明原UpDate函数无法正确修改的一种哈夫曼树。例如若要压缩“TThhis”字符串,则在压缩完“TTh”之后的动态哈夫曼树为图所示(设根结点序号为1000):
@@04A07700.GIF;图 压缩完“TTh”之后的动态哈夫曼树@@
此时若再将字符h进行压缩编码,则在输出h的编码“01”后需调整哈夫曼树,以997号叶结点为当前结点,则与当前结点具有同样重量的且序号最大的结点为998号结点,而该结点是997号结点的父结点,对二者按原文所提供的UpDate函数进行交换,则将导致998号结点变成叶结点,996号结点变成997号结点的左孩子,997号结点则既为自己的父结点又是自己的右孩子,这样在对后继字符i进行压缩编码时,首先就无法输出996号空结点的编码了,此时压缩程序陷入死循环。
显然这时可以简单地将998和997号结点的重量加1,然后以998号结点的父结点为当前结点进行调整,根据这种思想对原文提供的UpDate函数进行修正所得新的UpDate函数附后。
vid UpDate(strut Nde *Tep)
{
strut Nde * Tepa, * Tep, * Pinter;
strut LeafNde *p,*q,*b;
unsigned har Letter;
hile(Tep!=Rt)
{
if(Tep->Eight)
{
P=eight;
hile(p->Next->harNde->eight !=Tep->eight)
p=p->Next;
if(Tep->Frnt!=NULL)
{
Tepa=Tep;
hile(Tep->Frnt !=NULL)
Tep=Tep->Frnt;
if(Tep==Tepa->Parent)
{
Tepa->eight++;
Tepa->After=Tepa->Frnt=NULL;
Tep->After=NULL;
Inserteight(Tepa);
}
else
{
Pinter=Tep->Lefthild;
if(Pinter !=NULL)
Pinter->Parent=Tepa;
Tep->Lefthild=Tepa->Lefthild;
if(Tep->Lefthild !=NULL)
Tep->Lefthild->Parent=Tep;
Tepa->Lefthild=Pinter;
Pinter=Tep->Righthild;
if(Pinter !=NULL)
Pinter->Parent=Tepa;
Tep->Righthild=Tepa->Righthild;
if(Tep->Righthild !=NULL)
Tep->Righthild->Parent=Tep;
Tepa->Righthild=Pinter;
Letter=Tep->Letter;
Tep->Letter=Tepa->Letter;
Tepa->Letter=Letter;
if((Tepa->Lefthild==NULL)≈≈(Tepa->Righthild==NULL)
{
b=leaf;
hile(b!=NULL)
{
if(b->harNde==Tep)
{
b->harNde=Tepa;
break;
}
else b=b->Next;
}
}
if((Tep->Lefthild==NULL)≈≈(Tep->Righthild++NULL))
{
b=Leaf;
hile(b!=NULL)
{
if(b->harNde==Tepa)
{
b->harNde=Tep;
break;
}
else b=b->Next;
}
}
}
}
p->Next->harNde=Tep->After;
if(Tep->After==NULL)
{
q=p->Next;
p->Next=q->Next;
free(q);
}
else Tep->After->Frnt=NULL;
}
Tep->eight++;
Tep->After=Tep->Frnt=NULL;
Inserteight(Tep);
Tep=Tep->Parent;
}
}

作者:刘飞 孙扬声

未完...点击下方链接下载完整文档

动态哈夫曼编码的改进

《计算机世界月刊》1994年7月号所登载的《动态哈夫曼编码的数据压缩方法》一文给出了一种实时性较强的数据压缩方法,该方法的最大特点是不需预先对原始数据进行一遍扫描以建立哈夫曼树,而改为以动态变化的哈夫曼树对数据编码。 该文所附的动态哈夫曼编码数
  • 上一篇:用Windows终端仿真程序实现微机远程文件传送1
  • 下一篇:文本方式下图形提示界面制作
  • 海拉尔通信段ZXA10综合接入网常
    windows nt环境下fddi网卡驱动程
    物联网对计算机通信网络的影响
    数字移动多媒体案例分析
    局域网中的通信协议
    小议第三代移动通信及发展趋势预
    基于GPRS的无线智能家居系统方案
    信息时代计算机通信技术的应用
    关于通信工程设计项目组织结构评
    计算机通信与网络课程中网络资源
    《通信原理》的系统教学法
    试析计算机通信网络安全及防护对
    论3G技术打造“高起点、高质量、
    关于低压电力线载波通信技术的研
    浅论光纤通信技术的特点和发展趋
    高速电力线通信电磁兼容技术标
    TD-SCDMA系统中的动态信道分配
    差分空时分组编码的研究探讨
    一种改进的预编码跳码扩频通信
    基于网络编码在无线网络通信技
    LHARC中的动态限长编码压缩算
    视频压缩编码的差错复原技术
    基于数据分割和可逆变长编码的
    CDMA移动通信系统概述及其信道
    差分空时分组编码的研究探讨
    | 设为首页 | 加入收藏 | 联系我们 | 论文发表

    Copyright 2006-2020 © 论文天下 All rights reserved 本站所有内容均由SPider自动索引,如有侵权请联系QQ:2486851删除