实现了一个压缩算法,在数据高度压缩的前提下,还可以快速查找 key
来源:互联网 发布:局域网远程协助软件 编辑:程序博客网 时间:2024/04/30 17:48
最近写了一个算法,可用于 (key,value) 存储,key 当然是 string 类型。
用一个 2.3G 的 url 集合做测试,如果不计 value 占用的空间,key 集合的存储空间可以被压缩70倍!压缩后整个数据结构仅占31M内存!压缩率比 bzip2 还要高。
本质性的不同于: gzip, bzip2 等压缩算法仅仅是压缩而已,无法快速地从压缩数据中查找。
我实现的这个算法能高效地支持对 key 的查找,并且查找的时间复杂度仅与 key 的长度有关,不管数据集合有多大,时间复杂度总是 O(strlen(key))。实际数据:当 key 长度均值为 76 字节时(该 url 集合中所有 url 的平均长度),平均查找时间大约 900 纳秒(笔记本 i7-720M)。
可能有人以为是 bloom filter, MD5 之类投机取巧的实现方式,我付责任的地说:不是,该算法是确定性的。bloom filter/MD5 ... 是概率的,并且它们的内存占用还要更多。
如果要让 key 再对应一个 value,并且仍然要以 O(strlen(key)) 的时间复杂度访问 value,需要再多用一点点空间用于索引结构,仍以前面 url 压缩为例,需要在 31M 的基础上多大约 4M 的空间。当然,value 本身占的空间是另外一回事。
有需要该算法的公司或个人,请联系本人
- 实现了一个压缩算法,在数据高度压缩的前提下,还可以快速查找 key
- Linux 哪个压缩命令 可以在windows下解压的
- 实现图片的任意压缩,可以根据宽度或者高度进行
- IDEA实现热部署,在不重启服务器的前提下可以同时升级系统
- 一个优化后的压缩算法(下)
- 一个优化后的压缩算法(下)
- 数据的压缩存储与解压缩算法实现(C语言)
- 快速解压的无损压缩算法FRZ
- 在Ubuntu下如何压缩一个文件夹
- Linux下实现Huffman编码压缩算法
- Linux下实现Huffman编码压缩算法
- Linux下实现Huffman编码压缩算法
- zip 的压缩原理与实现(lz77 算法压缩)
- zip 的压缩原理与实现(lz77 算法压缩)
- DCT算法可以说是有损压缩的第一步,多用在视频压缩方面。
- oracle 在有数据的前提下变更字段类型
- long和DWORD的一个压缩算法
- 压缩感知理论+一个经典的算法
- GIS开源库shapeLib的使用方法(二)
- 记录点滴10
- 依靠自己
- 12_traffic_timer_int(改)
- spring 3 jar包依赖关系
- 实现了一个压缩算法,在数据高度压缩的前提下,还可以快速查找 key
- 基于jquery的异步ztree树形插件的用法和心得
- 拓扑排序
- poj 3006 Dirichlet's Theorem on Arithmetic Progressions
- 怎样让快速排序(quick sort)更快?
- delphi7 跨进程 读写内存总结
- 报表中,什么是左主格,什么是上主格
- ubuntu12.04 grub无法写入MBR。ubuntu12.04和win7双系统。(待解决)
- ASP.NET MVC Tips #1 - 支持上传文件的ModelBinder