deflate树与deflate编码
http://www.cnblogs.com/zengzy/p/5156130.html
关于deflate树,能搜到的资料非常少,这个概念来自gzip的压缩算法,是由huffman树转变过来的。这里简单记录下deflate树的生成过程以及deflate编码。
假设以5 8 9 10 14 15,建立一颗huffman树,可以是这个样子的:
61/ \27 34/ \ / \14 13 15 19/ \ / \5 8 9 10
也可以交换任意结点的两棵子树
61/ \34 27 / \ / \15 19 14 13/ \ / \9 10 5 8
交换的过程虽然会改变叶子结点的huffman编码,但是,不会改变huffman树的带权路径和,也不会改变每个叶子结点的编码长度。基于这一点,我们可以做个更特殊的变换,每一层,让非叶子结点排在右边,叶子结点排在非叶子结点的左边。上面这棵树的变换之后如下:
61/ \34 27 / \ / \15 14 19 13/ \ / \9 10 5 8
A/ \B C / \ / \D E F G/ \ / \G H I J/ \ K L / \M N
A/ \B C / \ / \D G F E/ \ / \I J H G/ \ K L / \M N
61/ \34 27 / \ / \15 19 14 13/ \ / \9 10 5 8
61/ \34 27 / \ / \15 14 19 13/ \ / \9 10 5 8
现在再来说一下,有了这个码表如何解码,解码是编码的逆过程,所以,先看deflate树的编码
deflate树,编码方式为:
第n层的最左边的叶子结点的编码=((第n-1层的最左边的叶子结点的编码 )+ (第n-1层的叶子结点数))<< 1 。
第n层,后一个叶子结点的编码 = 前一个叶子结点的编码+1
还以下面这颗树为例:
61/ \34 27 / \ / \15 14 19 13/ \ / \9 10 5 8
作者:zengzy
出处: http://www.cnblogs.com/zengzy
deflate树与deflate编码相关推荐
- huffman树和huffman编码
不知道为什么,我写的代码都是又臭又长. 直接上代码: #include <iostream> #include <cstdarg> using namespace std; c ...
- 树的Prufer 编码和最小生成树计数
Prufer数列 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2.它可以通过简单的迭代方法计 ...
- 数据结构实验三:Huffman树及Huffman编码的算法实现
Exp03 Huffman树及Huffman编码的算法实现 Author: Maskros 实验目的 了解该树的应用实例,熟悉掌握Huffman树的构造方法及Huffman编码的应用, 了解Huffm ...
- 利用Huffman树进行文本编码解码的实现
--------------------------------- 功能:利用Huffman树进行文本编码解码的实现 环境:WinXP,VC6.0 输入:C:\\in.txt 输出:C:\\out.d ...
- Huffman树与Huffman编码
Huffman树与Huffman编码 问题描述 已知某系统在通信联络中只可能出现6种字符,其使用频度如下表所示: 根据Huffman编码原理,为6种字符设计一种Huffman编码方案. 算法分析与设计 ...
- 以太坊的MPT树,以及编码,leveldb存储
声明:此为使用网上多处资料整理而成,由于很多地方内容相同,已经分不清哪里是原创 一.MPT树 1. Trie树 Trie,又称为字典树或者前缀树 (prefix tree),属于查找树的一种.它与平衡 ...
- 哈夫曼树 构造,编码 完整代码
Haffman Tree 构造方法: 1.初始化每个叶子结点都是一棵树. 2.找最小权值的两棵树. 3.合并两树,生成新结点. 编码: 1.往左为1,右为0. 2.不等长编码. #include< ...
- C语言:哈夫曼树构造及编码(核心代码每一行都有注释)
一.[实验目的及要求] 理解Huffman树的概念及其存储结构: 熟悉Huffman树的构造: 掌握Huffman树的编码方法. 二.[实验内容] 1.代码实现Huffman编码 2.请统计每个字符出 ...
- 【数据结构】基于c++的哈夫曼树构造、编码、译码算法实现
创建哈夫曼树的描述: 数据结构: 数据的逻辑结构是树状结构:采用静态的三叉链表存放. 算法思想: 1.先把三叉链表中N个元素进行初始化,存放叶子节点,他们都没有孩子和双亲. 2.再初始化后n-1个非叶 ...
最新文章
- AIX忘记root密码后,重设密码步骤
- 如何让一套代码适配所有iOS设备尺寸?
- 全文索引 - Pomelo.EFCore.MySql
- jmeter进行性能测试_使用JMeter进行性能测试
- 前端学习(3262):js高级教程(5)数据变量和内存
- sql exist 优化查询时间
- GaussDB(DWS)应用实践丨负载管理与作业排队处理方法
- 测试过程中如何快速定位一个bug
- Selenium API-WebDriver 属性
- Win10 安装rational rose 7教程
- OpenWRT配置 -- 网络配置network文件
- 制作后台管理系统首页
- 深入解析Superdome 2:惠普关键业务平台再加强?
- 配置错误 访问被拒绝 解决方案
- Ubuntu解决文件带锁问题
- 走青甘西北环线,感受祖国的大、美、强
- WeGame聊天室采集
- STM32F0-DAY1
- vulnhub-FIRSTBLOOD1靶场
- 辩证唯物主义 历史唯物主义 第一章绪论 一 唯物主义和唯心主义
热门文章
- 线性模型之二:线性回归模型性能的评估(残差图、MSE与R2)
- Linux系统调用之lseek函数
- 读书笔记 -公司改造 和 紧迫感
- Spring系列之依赖注入的三种方式
- 长安链源码学习--提案(Proposer)(五)
- 宏定义函数和普通函数
- BZOJ 4544: 椭圆上的整点
- adb:failed to install app.apk Failure [INSTALL_FAILED_VERSION_DOWNGRADE: Package Verification Result
- 我是小交易所老板,我现在很慌
- int64_t 在 32 位环境下其实是 long long