`
java-mans
  • 浏览: 11426553 次
文章分类
社区版块
存档分类
最新评论

统计规律与数据编码

 
阅读更多

问题引入:

有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编码的联系我起初还没想到,是在敲这篇文章的时候边敲边想,突然联系起来的。嗯,一下上升到规范化的理论阶段了^___^

分享到:
评论

相关推荐

    MH编码.zip对一幅BMP格式的灰度图像既考虑 统计规律又考虑相关性编码,并译码。

    对一幅BMP格式的灰度图像既考虑 统计规律又考虑相关性编码,并译码。 二、 算法描述 游程编码(英语:run-length encoding,缩写RLE),又称行程长度编码或变动长度编码法,是一种与数据性质无关的无损数据压缩技术...

    国家统计局 - 2018年统计用区划代码和城乡划分代码(地址编码)

    为执行国家标准,保证统计部门与民政部门名称相同的县级单位六位区划代码的一致性,国家统计局根据《统计用区划代码和城乡划分代码编制规则》(国统字〔2009〕91号),调整黑龙江省大兴安岭地区所辖的加格达奇区、...

    超市销售数据分析.csv

    数据挖掘、数据统计、数据库应用甚至练习表格操作均可,CSV格式绿色环保,可转文本可转表格,易于操作,4.2w条数据,来源于生活,更便于统计,更容易发现数据规律(我自己只找过两三个指标)。 数据字段:顾客编号 ...

    企业编码管理系统python版

    数据校验:集成校验功能,确保生成的编码符合预设规则,避免重复或格式错误。 批量操作:提供批量生成和导入功能,方便企业进行大规模的编码管理工作。 查询统计:实现编码的快速查询和统计分析,帮助企业掌握编码...

    最新行政区划数据5级:2019-01-31国家统计局发布截止20181031日止的行政区划数据-省、市、区、街道(乡镇)、居委会

    可与国家统计局数据一一对比,数据很全面的,无错误数据,无乱码,无遗漏,区划编码和名称全都有!良心分享,绝无欺骗,希望能帮助到大伙。 另外,这个csdn下载频道积分规则调整,我也是醉了,csdn频道自己设置和...

    统计用区划代码和城乡划分代码编制规则.docx

    统计用区划代码和城乡划分代码编制规则,国家统计局;2019全国城乡代码;全国城市基础数据;全国省市县镇乡,统计用区划代码和城乡划分代码的区划范围,是国家统计局开展统计调查的区划范围。未包括我国台湾省、香港...

    数据分析数据流.zip

    4.2统计量 5、预分析(特征工程,流程化和模块化) 5.1、异常值 单变量异常值 多变量异常值 5.2、缺失值 单变量缺失值 多变量缺失值 5.3、特征筛选 单变量特征筛选 多变量特征筛选 5.4、共线性 scipy.optional 单...

    R语言数据分析教程与挖掘

    数据清洗与转换:涵盖缺失值填充、数据筛选、合并、重塑以及变量编码等预处理技术。 可视化探索:利用ggplot2等图形库进行数据可视化,以直观理解数据分布、关联关系及潜在模式。 数据挖掘技术概览:涉及聚类(如k...

    论文研究-基于多碱基组合映射编码和DNA计算的一次一密算法.pdf

    对图像仿真和安全性的分析表明,密钥本的制作基于混沌映射和多碱基DNA编码规则两层操作,密钥空间足够大,并且攻击者在密文图像中得不到任何有用的统计数据。另外,随着需要加密的明文数据量增加,攻击者完全破解所...

    数据结构课程设计:哈夫曼编/译码的设计与实现(含文件)

    系统具有如下的几个功能:接收原始数据、编码、译码、打印编码规则。 二、运行与测试 1、 利用下列数据调试程序:令叶子结点个数n为4,权值集合为{1,3,5,7},字符集合为{A,B,C,D},并有如下对应关系,A——1、B——3...

    论文研究-基于DNA编码和超混沌系统的图像加密算法.pdf

    针对DNA编码规则单一和混沌加密算法对密钥的灵敏度低等问题,提出一种基于DNA编码和超混沌系统的图像加密方案。该算法首先使用SHA-3算法计算明文图像的哈希值,用于超混沌系统的初始值,增加明文敏感性;其次将...

    面对大数据的数据仓库系统.pptx

    不只存放数据 数据仓库中存放的应该不仅是供分析使用的数据,还应有在一 激发条件下能主动起作用的处理规则、算法、甚至是过程。 3. 虚拟数据仓库 传统的物理数据仓库方法并非唯一的选择,应根据需求的具体情况,建立...

    stata爬数据案例dofile中国统计信息网上前50页1000市的GDP

    stata爬数据案例dofile中国统计信息网上前50页1000市的GDP do文件编码格式: 将do文件打开时,需要将编码格式选择为Chinese GBK,否则汉字乱码 **************************************************************...

    Excel 2007数据透视表完全剖析 1/7

    8.1 与其他版本的Office共享数据透视表 175 8.1.1 Excel 2003数据透视表中不可用的功能 176 8.1.2 Excel 2007的兼容模式 176 8.1.3 版本为12的数据透视表没有降级方法 176 8.1.4 共享数据透视表的策略 177...

    Excel 2007数据透视表完全剖析 3/7

    8.1 与其他版本的Office共享数据透视表 175 8.1.1 Excel 2003数据透视表中不可用的功能 176 8.1.2 Excel 2007的兼容模式 176 8.1.3 版本为12的数据透视表没有降级方法 176 8.1.4 共享数据透视表的策略 177...

    Excel 2007数据透视表完全剖析 4/7

    8.1 与其他版本的Office共享数据透视表 175 8.1.1 Excel 2003数据透视表中不可用的功能 176 8.1.2 Excel 2007的兼容模式 176 8.1.3 版本为12的数据透视表没有降级方法 176 8.1.4 共享数据透视表的策略 177...

    2000-2021中国海关数据库进出口贸易数据整合版

    016由于统计规则的改变,变量包括: 年份、截止日期、进出口分类代码、进出口分类 名称、HS商品编码、HS商品名称、金额_美元、经营单位代码、经营单位名称、产销国 代码、产销国名称、贸易方式代码、贸易方式名称...

    数据挖掘技术分析.doc

    3) 关联规则法 关联规则是数据挖掘技术中的一种技术,它是一种非常简单但很实用的一种规 则,描述了一个事物如果某些属性同时出现的规律。关联规则分析就是根据一定的可信 度、支持度等建立相关规则,可以帮助很多...

    SQL SERVER 2000开发与管理应用实例

    4.1 字符存储编码与排序规则 107 4.1.1 字符数据的存储编码 107 4.1.2 UNICODE 108 4.1.3 排序规则 109 4.1.4 排序规则比较和排列规则 111 4.1.5 使用排序规则 112 4.1.6 如何选择字符字段类型 ...

    数据库设计规范-命名规范.docx

    3.1 数据表和程序模块的分类 根据"处理特点",将数据表和程序模块进行分类如下: 数据表分类:业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结 算数据表、决策数据表。 程序模块分类:初始化、...

Global site tag (gtag.js) - Google Analytics