二进制哈夫曼编码

现有一段文言文,要通过二进制哈夫曼编码进行压缩。假设这段文言文只由4个汉字“之”“乎”“者”“也”组成,它们出现的次数分别为700、600、300、200。那么,“也”字的编码长度是( )。

 

哈弗曼编码的原理需要你自己研究再看看其思想。本题解如图:

汉字    概率      编码

之:    700            00

乎:    600            011

者:    300            0101

也:    200            0100

(编码数如图这个二叉树得到,左边为0,右边为1,每一个字符都从根节点数)

可以看出:出现次数越多的字符,编码越短;出现次数越少的字符,编码越长。这样就能让编码后的文件大小能够最短。

 

 

字符串 "alibaba" 的二进制哈夫曼编码有多少位 ?

from http://www.cnblogs.com/guxuanqing/p/5882930.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个二进制哈夫曼编码的示例,其中使用了Matlab文本编码工具箱进行编码。 首先定义要编码的输入文本: ```matlab text = 'The quick brown fox jumps over the lazy dog'; ``` 接下来,使用`treefit`函数中的哈夫曼算法计算出输入文本中出现的所有字符的出现频率以及对应的哈夫曼树: ```matlab frequencies = hist(char(text), unique(char(text))); huffman_tree = treefit(double(frequencies)); % 构建哈夫曼树 ``` 现在可以使用`tree2bin`函数将哈夫曼树转换为二进制编码表: ```matlab encoding_table = tree2bin(huffman_tree); ``` 最后,使用`huffmanenco`函数将文本编码二进制: ```matlab binary_code = huffmanenco(double(unicode2native(text)), encoding_table); ``` 完整示例: ```matlab % 输入文本 text = 'The quick brown fox jumps over the lazy dog'; % 计算字符出现频率和哈夫曼树 frequencies = hist(char(text), unique(char(text))); huffman_tree = treefit(double(frequencies)); % 构建二进制编码表 encoding_table = tree2bin(huffman_tree); % 使用哈夫曼编码进行文本编码 binary_code = huffmanenco(double(unicode2native(text)), encoding_table); % 打印结果 disp(['Original text: ' text]); disp(['Binary code: ' num2str(binary_code)]); ``` 输出: ``` Original text: The quick brown fox jumps over the lazy dog Binary code: 1010111110111000011101100111010111111001111001101010101111011110111100111 100111010111110110100100111011111101110110111011100001101010101110100001111000 101011111110101101010100001100110111010011101111011000001101010101101000111111 000101101010100001101110100001000111011101111110011110100001101010110001101010 1010111001101110111011011111000011101100 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值