object HuffmanCode { private abstract sealed class Tree[A] { val freq: Int def toCode: List[(A, String)] = toCodePrefixed("") def toCodePrefixed(prefi... ...
分类:
其他好文 时间:
2019-03-24 17:39:15
阅读次数:
135
这篇随笔主要是Huffman编码,构建哈夫曼树有各种各样的实现方法,如优先队列,数组构成的树等,但本质都是堆。 这里我用数组来存储数据,以堆的思想来构建一个哈弗曼树,并存入vector中,进而实现哈夫曼编码 步骤: 1生成哈夫曼树 (取最小权值树和次小权值树生成新树,排列后重新取树,不断重复) 2编 ...
分类:
其他好文 时间:
2019-02-03 10:49:44
阅读次数:
173
二叉树: 性质1、满二叉树定理:非空满二叉树树叶的数目等于其分支结点数加1 性质2、二叉树的第i层(根为第0层,i>=0)最多有2i个结点 性质3、高度为k的二叉树至多有2k-1个结点 性质4、有n个结点(n>0)的完全二叉树的高度为【log2(n+1)】(深度为【log2(n+1)-1】) 二叉树 ...
分类:
其他好文 时间:
2018-12-18 02:20:25
阅读次数:
189
#include #include #include typedef struct HuffmanTree { int weight; int parent, lchild, rchild; }HuffmanTree; typedef struct CodeNode { int ch; char b... ...
分类:
其他好文 时间:
2018-11-04 23:00:47
阅读次数:
217
场景:上次回答word2vec相关的问题,回答的是先验概率和后验概率,没有回答到关键点。 词袋模型(Bag of Words, BOW)与词向量(Word Embedding)模型 词袋模型就是将句子分词,然后对每个词进行编码,常见的有one hot、TF IDF、Huffman编码,假设词与词之间 ...
分类:
其他好文 时间:
2018-05-21 00:01:36
阅读次数:
807
一、目的 词频越高的词,希望编码长度越短。 在huffman树中,叶子节点是各个词,叶子节点的权重是词频。每个词都有权重×距离根节点的长度,即词频*编码长度。Huffman树保证了上述所有词的上述乘积的和是最小的,即该编码方式的总代价是最小的。 二、huffman树的构造算法:这里略去,总之有确定的 ...
分类:
其他好文 时间:
2018-05-11 13:48:54
阅读次数:
195
文件压缩与解压缩> 近期这段时间一直在学习树的这样的数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们经常使用的zip压缩也是利用的Huffman编码的特性,那仫是不是能够自己实现一个文件压缩呢?当然能够了.在文件压缩中我实现了Huffman树和建堆Heap的代码,zip ...
分类:
其他好文 时间:
2018-04-06 12:26:55
阅读次数:
182
1、描述 Huffman编码,将字符串利用C++编码输出该字符串的Huffman编码。 Huffman树是一种特殊结构的二叉树,由Huffman树设计的二进制前缀编码,也称为Huffman编码在通信领域有着广泛的应用。在word2vec模型中,在构建层次Softmax的过程中,也使用到了Huffma ...
分类:
编程语言 时间:
2018-02-26 13:19:32
阅读次数:
165
Huffman算法也是一种无损压缩算法,但与上篇文章LZW压缩算法不同,Huffman需要得到每种字符出现概率的先验知识。通过计算字符序列中每种字符出现的频率,为每种字符进行唯一的编码设计,使得频率高的字符占的位数短,而频率低的字符长,来达到压缩的目的。通常可以节省20%~90%的空间,很大程度上依赖数据的特性!Huffman编码是变长编码,即每种字符对应的编码长度不唯一。前缀码:任何一个字符的编
分类:
编程语言 时间:
2018-02-08 17:47:15
阅读次数:
209
Google 认为互联网用户的时间是宝贵的,他们的时间不应该消耗在漫长的网页加载中,因此在 2015 年 9 月 Google 推出了无损压缩算法 Brotli。Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压塑压缩 ...
分类:
编程语言 时间:
2017-11-21 14:47:25
阅读次数:
209