霍夫曼(Huffman)编码压缩问题现在我想应用霍夫曼编码对文件进行压缩.目的是实现对所有类型的文件进行压缩,以二进制形式读取文件.虽然知道霍夫曼编码的基本原理,但却无从下手.我想对

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/25 03:30:00
霍夫曼(Huffman)编码压缩问题现在我想应用霍夫曼编码对文件进行压缩.目的是实现对所有类型的文件进行压缩,以二进制形式读取文件.虽然知道霍夫曼编码的基本原理,但却无从下手.我想对霍夫曼(Huffm

霍夫曼(Huffman)编码压缩问题现在我想应用霍夫曼编码对文件进行压缩.目的是实现对所有类型的文件进行压缩,以二进制形式读取文件.虽然知道霍夫曼编码的基本原理,但却无从下手.我想对
霍夫曼(Huffman)编码压缩问题
现在我想应用霍夫曼编码对文件进行压缩.目的是实现对所有类型的文件进行压缩,以二进制形式读取文件.虽然知道霍夫曼编码的基本原理,但却无从下手.我想对每8位或者每4位进行压缩.请问应该如和建立霍夫曼树呢!或者大家有其他好的想法提供一下.
谁能帮我啊?

霍夫曼(Huffman)编码压缩问题现在我想应用霍夫曼编码对文件进行压缩.目的是实现对所有类型的文件进行压缩,以二进制形式读取文件.虽然知道霍夫曼编码的基本原理,但却无从下手.我想对
霍夫曼算法的实现
(通过对霍夫曼算法的实现,进一步了解霍夫曼算法进行数据压缩的原理及过程)
(用c++语言完成霍夫曼算法的实现)
1.算法的描述
1初始化,根据符号概率的大小按由大到小顺序对符号进行排序.
2把概率最小的两个符号组成一个节点,
3重复步骤2,得到节点P2,P3,P4,形成一棵树,其中p4称为根节点.
4从根节点开始到相应于每个符号的树叶.
5从根节点P4开始顺着树枝到每个叶子分别写出每个符号的代码
2.算法中主要功能函数的设计思想
compress_math函数进行数据的压缩操作
Huffman_c函数用Huffman编码压缩指定的文件,并将结果存为新的文件
Huffman_d函数进行Huffman解码
decompress_math函数进行数据的解压缩操作
3.算法的具体实现过程(代码)
/
int Huffman_c(char * infilename,char * outfilename) //用Huffman编码压缩指定的文件
{
if ((ifile = fopen (infilename,"rb")) != NULL)
{
fseek (ifile,0L,2);
file_size = (unsigned long) ftell (ifile);
fseek (ifile,0L,0);
get_frequency_count ();
build_initial_heap ();
build_code_tree ();
if (!generate_code_table ()) {
printf ("ERROR!Code Value Out of Range.Cannot Compress.\n");
return 0;
}
else
{
if ((ofile = fopen (outfilename,"wb")) != NULL)
{
fwrite (&file_size,sizeof (file_size),1,ofile);
fwrite (code,2,256,ofile);
fwrite (code_length,1,256,ofile);
fseek (ifile,0L,0);
compress_math ();
fclose (ofile);
}
else
{
printf("\nERROR:Couldn't create output file %s\n",outfilename);
return 0;
}
}
fclose (ifile);
}
else
{
printf ("\nERROR:%s -- File not found!\n",infilename);
return 0;
}
return 1;
}
void compress_math () // 进行数据的压缩操作
{
register unsigned int thebyte = 0;
register short loop1;
register unsigned short current_code;
register unsigned long loop;
unsigned short current_length,dvalue;
unsigned long curbyte = 0;
short curbit = 7;
for (loop = 0L; loop < file_size; loop++)
{
dvalue = (unsigned short) getc (ifile);
current_code = code[dvalue];
current_length = (unsigned short) code_length[dvalue];
for (loop1 = current_length-1; loop1 >= 0; --loop1)
{
if ((current_code >> loop1) & 1)
thebyte |= (char) (1 = 0; --bitshift)
{
cindex = (cindex > bitshift) & 1);
if (decomp_tree[cindex]

霍夫曼(Huffman)编码压缩问题现在我想应用霍夫曼编码对文件进行压缩.目的是实现对所有类型的文件进行压缩,以二进制形式读取文件.虽然知道霍夫曼编码的基本原理,但却无从下手.我想对 Huffman(霍夫曼)编码是如何运算的?最好能举例说明霍夫曼编码算法的运算过程. 代码“no pains no gains”现在要按Huffman进行编码,写出每个字母对应的权值跟据算法构造一棵相应的Huffman树,写出每个字母对应的Huffman编码 给定一组权值3,6,7,8,12,14,23,27 (1)画出huffman树(不用做)求huffman 平均编码长度(考虑概率) 已知6个符号的信源A={a1,a2,……a6},若其概率分布为P={0.30,0.25,0.25,0.10}1、写出Huffman编码(要求:1、写出Huffman编码(要求过程).2、Huffman编码的平均编码长度.急用,快 huffman编码怎样计算? 最好是有一个实例. 信息论有关哈夫曼编码的问题字符集合s={s1,s2,s3,s4,s5,s6,s7};p={0.20,0.19,0.18,0.17,0.15,0.10,0.01}(其中,p 为s中各信源出现的频率).用上述信源概率分布构造二元的Huffman编码.用matlab matlab中huffman编码结果的进一步处理比如要对数值串 [22006 22006 44004 87999 175989] (1*5)进行huffman编码,下面左列是要编码的数值,右列是编码结果:22006 [1]44004 [0 0 1]87999 [0 0 0]175989 [0 1]则原数值列 下列关于Huffman树和Huffman编码的说法正确的有1 使用频率越高的字母,Huffman编码越长.2 Huffman编码是一种前缀编码.3 对于同样的一组权值两两不同的内容可以得到不同的Huffman编码方案.4 Huffman编 霍夫曼编码a.随机输入一段英文(含标点、空格以及大小写的区分,标点仅限逗号“,”和句点“.”);b.统计各种符号出现的频度;c.进行Huffman编码(以二进制01代码输出);d.以上一步的输出( 数据结构(C语言版)中,树和二叉树中的Huffman树编码的大体框架是什么书上的看的不怎么懂,概念有混淆, 一道数据结构题目:哈弗曼算法求解描述求解最优前缀码(平均码长最小)问题的哈夫曼(Huffman)算法的基本思想.并对以下实例,给出其哈夫曼编码及求解过程.字符A, B, C, D, E 出现的频率分 数字声音的压缩编码? Huffman编码的步骤.如信源符号及其概率如下:a a1 a2 a3 a4 a5p(a) 0.5 0.25 0.125 0.0625 0.0625求其huffman编码 huffman编码计算 试对信源 X={x1 x2 x3 x4 x5 x6} 0.05 0.10 0.15 0.20 0.24 0.26 进行huffman编码写出计算过程与结果. 关于精馏塔理论塔板数的计算请问谁有huffman法的c程编码! 试写出对离散无记忆信源进行哈夫曼(Huffman)编码的算法 信息(图像 声音)数字化过程中的------编码 压缩 调制 都是什么.