文章目录

  • 1 简介
    • 1.1 创新
  • 2 方法
    • 2.1 编码
    • 2.2 解码
  • 3 实验

1 简介

论文题目:A Block-sorting Lossless Data Compression Algorithm
论文来源:Systems Research Center 1994
组织机构:
论文链接:https://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-124.pdf
代码链接:

1.1 创新

  • 提出了一种无损的数据压缩技术(Burrows Wheeler transform),通过对文本块进行可逆变化,使输入中的冗余更容易被简单的编码方案获得。
  • 算法是通用的,使用排序根据上下文将字符组合在一起,在文本和非文本数据中均能取得不错的效果。
  • 算法的解压速度比压缩速度快。

2 方法

2.1 编码

给定字符串,进行循环移位,得到的字符串根据字典序进行排序,取每个移位字符串的最后一列为L。
例如S=‘abraca’,得到L为caraab,index=1。

代码实现

def rotations(t):tt = t * 2return [tt[i:i+len(t)] for i in range(0, len(t))]def bwm(t):return sorted(rotations(t))def bwtViaBwm(t):return ''.join(map(lambda x: x[-1], bwm(t)))

2.2 解码

编码阶段得到L=caraab,index=1。

  1. 对L进行字典排序,得到循环列表的第一列F=aaabcr。
  2. 根据F和L,得到映射T。F[T[j]] = L[j]
  3. T和index还原原始字符串S。
    S=[N−1−i]=L[Ti[I]]S=[N-1-i]=L[T^i[I]]S=[N−1−i]=L[Ti[I]](其中T0[x]=xT^0[x]=xT0[x]=x,Ti+1[x]=T[Ti[x]]T^{i+1}[x]=T[T^i[x]]Ti+1[x]=T[Ti[x]])
    代码实现(在输入文本结尾加入$符号表示结尾,因此不需要记录index了):
def rankBwt(bw):tots = dict()ranks = []for c in bw:if c not in tots:tots[c] = 0ranks.append(tots[c])tots[c] += 1return ranks, totsdef firstCol(tots):first = {}totc = 0for c, count in sorted(tots.items()):first[c] = (totc, totc+count)totc += countreturn firstdef reverseBwt(bw):ranks, tots = rankBwt(bw)first = firstCol(tots)for c, count in sorted(first.items()):if c == "$":rowi = count[0]t = '$'while bw[rowi] != '$':c = bw[rowi]t = c + trowi = first[c][0] + ranks[rowi]return t

3 实验

实验过程为首先对字符串进行编码,然后move-to-front编码,最后进行哈夫曼编码,
将对循环的排序改为后缀排序。
Q1:对原始字符串扩展k个EOF字符,定义为S’。(K为一个机器字的字符数)
Q2:初始化W[0,…,N-1],W[i]=S’[i,…,i+k-1]
Q3:初始化V=[0,1,…,N-1],算法完成后,V[i]表示第i个字符的字典序。
Q4:以每个后缀的前两个字符为key,对V进行排序。
Q5:对字母表中的字符进行遍历ch,完成Q6、Q7。
Q6:对字母表中的字符进行遍历ch’,对ch ch’开始的后缀进行排序。
Q7:对W的值进行修改,高位为ch(保持不变),低位为i。
实验结果如下图:

输入文本块的长度对实验结果的影响:

对比实验:

论文笔记|A Block-sorting Lossless Data Compression Algorithm相关推荐

  1. 论文笔记-Real-Time MDE using Synthetic Data with Domain Adaptation via Image Style Transfer

    论文信息 标题: Real-Time Monocular Depth Estimation using Synthetic Data with Domain Adaptation via Image ...

  2. 论文笔记——N2N Learning: Network to Network Compression via Policy Gradient Reinforcement Learning...

    论文地址:https://arxiv.org/abs/1709.06030 1. 论文思想 利用强化学习,对网络进行裁剪,从Layer Removal和Layer Shrinkage两个维度进行裁剪. ...

  3. 论文笔记之:Playing for Data: Ground Truth from Computer Games

    Playing for Data: Ground Truth from Computer Games ECCV 2016 Project Page:http://download.visinf.tu- ...

  4. 【论文笔记之 CLMS】The Complex LMS Algorithm

    本文对 B. Widrow 等人于 1975 年在 Proceedings of the IEEE 上发表的论文进行简单地翻译.如有表述不当之处欢迎批评指正.欢迎任何形式的转载,但请务必注明出处. 论 ...

  5. 【论文笔记之 APA】an adaptive filtering algorithm using an orthogonal projection to an affine subspace ...

    本文对 Kazuhiko Ozeki 等人于 1984 年在 Electronics and Communications in Japan (Part I: Communications) 上发表的 ...

  6. 深度模型压缩论文(02)- BlockSwap: Fisher-guided Block Substitution for Network Compression

    文章目录 1.摘要和背景 1.1 摘要 1.2 背景 2.方法和贡献 2.1 方法 2.2 贡献 3.实验和结果 3.1 实验 3.2 结果 4.总结和展望 4.1 总结 4.2 展望 本系列是在阅读 ...

  7. 论文笔记:WORD TRANSLATION WITHOUT PARALLEL DATA

    引用文章 Facebook MUSE 无监督跨语言迁移学习任务 face - Word Translation without Parallel Data 文献阅读笔记:Word Translatio ...

  8. 论文笔记:DLWL: Improving Detection for Lowshot classes with Weakly Labelled data

    论文笔记:DLWL: Improving Detection for Lowshot classes with Weakly Labelled data 使用弱标签数据改进对Lowshot类的检测 1 ...

  9. 【论文笔记之 MDF】Multidelay Block Frequency Domain Adaptive Filter

    本文对 JIA-SIEN SOO 和 KHEE K. PANG 于 1990 年在 IEEE Transactions on Acoustics, Speech, and Signal Process ...

最新文章

  1. TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
  2. 外企员工职场跃迁:他们将目光转向杭州 转向云计算
  3. 有理有据:一篇来自前端同学对后端接口的吐槽!
  4. ASP.NetViewState的实现方案
  5. 报错 findMergedAnnotation activemq
  6. 史上最简单的git教程搭配Github和Gitee一起食用更佳
  7. android 电话 快捷键,Android studio开发常用快捷键详解
  8. JavaScript中对象的比较
  9. Python春节特训营09:老师的点名神器
  10. Android打字机动画,Android 打字机效果
  11. java ews appointment_EWS API 2.0读取日历信息-读取内容注意事项
  12. 如何在iPhone和iPad上使用Group FaceTime
  13. 数据科学家处理小数据的7个技巧。
  14. 知云文献翻译 for mac
  15. JumpServer开源堡垒机完成龙芯架构兼容性认证
  16. python人物关系可视化百年孤独_百年孤独LDA主题分析
  17. 《常用典型机械零件制图规范》
  18. Essential Linux Device Drivers》中文版第2章
  19. 无人机遥感测绘服务:主要应用于航空摄影测量、国土测绘等
  20. mac clion 下 stdio.h file not found

热门文章

  1. C++面向对象学习之路(一)类与对象
  2. python二次方程_怎么用python解一元二次方程?
  3. 项目管理-5大过程组-10大知识领域-47过程
  4. Centos7配置网络
  5. HTML/CSS仿制Uplay官方网页面后记
  6. C++入门教程(四十二):函数参数使用引用
  7. OKRs, How Google sets goals, Startup Lab workshop | Chatopera
  8. java课程设计计算器 uml简图,计算器的用例建模
  9. 3.4.3 Electric Fence电网 USACO(毕克定理) USACO
  10. 《微机原理第五版》期末知识总结(第五章---第七章)