问题引入:
有100万个字符串,他们长度各异,分布在[1,256]这个区间内。请设计一种方法来依次记录这些字符串的长度。
要求:
用尽可能少的空间来存储这些长度。
例子:
例如有下面四个串:
hello (5)
abc(3)
abcd(4)
good morning (12)
可以用2字节来编码他们的长度:5、3编码到第一个字节,4、12编码到第二个字节,最后的二进制表示就是:01010011 10001100。解码的时候,每4位作为一个解码单元即可按顺序解码。
对于上面的例子,你有更好的编码方案吗?
A Step Further:
上面的例子中只有4个字符串,而问题中有100万个字符串,并且注意到其长度分布只在[1,256]之间,我们能不能利用这个特殊的问题结构呢?
首先还是使用最简单的解决方案:每个字符串长度用1字节来编码(2^8 = 256,正好哦)。此时需要的空间为100万字节。
如果这100万个字符串的长度分布具有一定特征呢?比如,1-15字节长的字符串占90%,其余的只占10%,有没有更好的编码方式呢?举个例子,抛砖引玉:
1~15用4bit位来编码,其中1111用来做特征码,表示当前长度不是1-15,需要往后看。16~256用4+8 = 12bit编码,且前4bit恒为1111,后8位填入实际长度。让我们来算一算此时消耗掉的字节数:
0.5Byte * 100w * 90% + 1.5Byte * 100w * 10% = 60w Byte
比直接用1字节编码每个长度节约了40万字节!
上面的例子很极端,实际中可能没有这么好的数据分布。但给我们一个提示:在对数据进行编码前有必要对数据特征进行统计,然后针对统计结果设计合适的编码方案,这样可以节省一定的编码空间。
看到这里,你是不是想到了……
对,Huffman编码!高频率的数据用较少位编码,低频率的数据用较多位编码。但是,为了提高解压速度,特别是在数据频率分布呈现出一定的单调性的时候,我们可以对huffman编码方法进行化简,使得解码时只需要通过判断特征码就可以确定编码方法。具体该怎么做呢?留给天才的你来解决咯~~~
---
note: 长度编码与huffman编码的联系我起初还没想到,是在敲这篇文章的时候边敲边想,突然联系起来的。嗯,一下上升到规范化的理论阶段了^___^
分享到:
相关推荐
在本规范中,中国联通坚持实施MSS、BSS、DSS、OSS领域统一的数据架构,统一数据分类,统一数据分布与管理,统一数据编码与指标体系,统一企业数据模型标准。该规范是根据国际电信管理论坛的SID数据框架,对联通企业...
数据统计与分析课后答案提供了习题的答案,涵盖了SPSS应用教程的各个方面,包括数据的编码、变量定义、数据合并、排序、数据筛选、数据 weights 等。 在数据统计与分析中,编码方案的设计非常重要。编码方案的设计...
多媒体数据编码则针对音频、视频等丰富的信息形式进行处理。 一、多媒体数据压缩编码的重要性和分类 1. 重要性: 多媒体数据压缩编码对于存储和传输大量数据至关重要。例如,未经压缩的一秒钟44.1kHz采样率、16位...
其中,文件读取模块负责从外部读取数据,哈夫曼树构建模块负责创建编码的基础结构,而编码与译码模块则实现了数据的压缩和解压过程。 ##### 文件读取模块 通过`fileopen()`函数实现,负责打开并读取包含字符及其...
集团基础数据编码方案是项目实施的关键步骤,通过系统编码来规则企业的部门、人员、客商、存货等编码,以便能够系统统计和分析相关的业务数据,并达到易于进行资料的编码及收集工作、确保资料输入的便利性、一致性及...
在解码阶段,根据预先生成的哈夫曼树,按照编码规则反向解析出原始数据。 在“HuffmanCoding”这个文件中,可能包含了以下内容: - **源代码**:实现哈夫曼编码算法的程序,可能包括字符频率统计、哈夫曼树构建、...
4. 数据编码:使用生成的编码替换原文中的字符,形成压缩后的文本。 5. 数据解码:根据赫夫曼树和编码表,将压缩后的文本还原成原始内容。 在“课设之二 赫夫曼编码”文件中,可能包含了实现以上步骤的代码示例、...
- 数据编码是将非结构化的文字答案转化为数字的过程,便于计算机处理和分析。主要有以下几种类型: - 封闭式单选问题:预先设定答案代码,如性别问题中的"男"对应1,"女"对应2。 - 矩阵式问题与表格式问题:适用...
在这个“北京租房数据统计分析案例”中,我们主要探讨的是如何利用机器学习技术对北京市的租房市场进行深入的数据分析。这个案例包含两个关键文件:链家北京租房数据.csv和3.数据分析实战----北京租房数据统计分析....
### 数据结构与算法分析——Huffman编码 #### 概述 本报告主要介绍了《数据结构与算法分析》课程设计中的一个重要课题——哈夫曼编码。哈夫曼编码是一种广泛应用于数据压缩领域的编码方式,它利用特定的数据结构和...
其次,数据编码是将原始的文本数据转化为便于计算机处理的数字形式。对于封闭式单选问题,如性别、年级和户口等,答案在设计时已预设了编码,如男性为1,女性为2,大二学生为12等。矩阵式问题和表格式问题的编码则...
【多媒体数据压缩与编码技术】是信息技术领域中的一个重要分支,主要关注如何有效地处理和传输大量数据,特别是图像和视频数据。这一技术的核心在于减少数据量,以适应计算机处理能力、存储需求以及通信带宽的限制。...
数据编码与解码是数字信息处理中的关键技术,广泛应用于通信、存储、压缩等多个领域。本文主要探讨的是数据编码器、数据解码器及其编解码方法,这些技术通常涉及到高效的数据表示和传输策略。 首先,数据编码器是一...
对一幅BMP格式的灰度图像既考虑 统计规律又考虑相关性编码,并译码。 二、 算法描述 游程编码(英语:run-length encoding,缩写RLE),又称行程长度编码或变动长度编码法,是一种与数据性质无关的无损数据压缩技术...
本习题主要考察学生对于数据编码的理解和应用能力。正确地设计编码方案对于后续的数据处理和分析至关重要。 **解析:** 1. **问题一:** - **原问题**:存在水平互相嵌套的问题,例如将“每周去2次或2次以上”...
数据挖掘技术在统计编码类问题中的应用涉及将文本信息转化为可用于统计分类的结构化数据。在处理这类问题时,首先需要对文本进行预处理,包括分词、特征词提取、去除停用词和文本向量化等步骤。分词技术是将汉字序列...
这包括数据清洗,去除重复值、异常值,填补缺失值,以及数据转换,如将分类数据进行编码,日期时间数据格式化,以便于后续分析。 接着,**数据挖掘**是揭示隐藏模式的关键。可以使用关联规则学习来发现商品之间的...
4. **编码与解码**:哈夫曼编码可用于数据的加密和解密。在编码阶段,将原始数据的字符替换为它们的哈夫曼编码,形成压缩后的数据;在解码阶段,根据预先构建的哈夫曼树,按照编码规则将压缩后的数据还原为原始字符...
变换编码,将数据从一种域转换到另一种域,使得数据在新域内更具有统计规律性;量化编码,将连续数据离散化以简化表示;以及行程编码和LZW编码等熵编码方法,它们基于数据的出现频率进行编码。 在不同的应用场景中...
多媒体数据压缩与编码技术是信息技术领域的一个核心主题,特别是在存储和传输图像、音频及视频等大量数据时。编码压缩的必要性主要源自于多媒体数据的庞大数据量,这对计算机的处理速度、存储设备的容量以及通信网络...