1ファイル圧縮

ファイル圧縮:ZIP
1.ファイル圧縮とは何ですか?

    数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,
或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。

2.なぜあなたはファイル圧縮に必要なのでしょうか?

	a.文件太大,为了节省空间
	b.提高数据在网络上传输的效率
	c.压缩之后,对文件可以起到加密的作用。在文件传输的过程中更安全

3.ファイル圧縮分類?

	a.有损压缩:解压缩之后不能将其还原成与源文件完全相同的格式。解压缩之后的文件虽然有损,但是在识别文件内容的时候,基本没有障碍。
		举例:看电影的时候,有表情,高清,蓝光。视频文件进行了分类,虽然视觉有体验差异,但是并没有影响对信息的获取
	b.无损压缩:源文件被压缩之后,通过解压工具如果能够还原成和源文件完全相同的形式

4.どのように圧縮方法は?

GZIP压缩算法经历了两个阶段
	第一个阶段使用改进的LZ77压缩算法对上下文中的重复语句进行压缩
	第二阶段,采用huffman编码思想对第一阶段压缩完成的数据进行字节上的压缩,从而实现对数据的高效压缩存储。

	对于一些文件来说可以通过一定的算法,来达到压缩的目的。
	GZIP:GZIP就是L7ZZ的变形 + 基于哈夫曼编码的压缩
	L7ZZ变形:原理就是将重复出现的语句用距离长度对来替换
		举例:	对mnoabczxyuvwabc123456abczxydefgh进行压缩
				压缩结果:mnoabczxyuvw(9,3)132456(18,6)defgh
		括号中数字的意思就是在距离现在9个字符的位置,往后数有3个字符重复
	所以说现在的问题就是如何从一个长的文件中找到尽可能多的字符?假如使用的是STL中的字符匹配,
	时间复杂度太大,所以有别的查找算法。在第一步压缩结束的情况下,再进行基于哈夫曼编码的再次压缩

	L7ZZ:是基于语句的压缩。
	哈夫曼编码是基于字节的压缩。

学び:L7ZZ圧縮アルゴリズムの簡単な

GZIPハフマンは考えました:

       通过前面LZ77变形思想对源数据进行语句的重复压缩之后,语句层面的重复性已经解决,但并不代表压缩效果已经
达到最佳,字节层面可能也有大量重复的。比如:"BCDCDDBDDCADCBDC"

       一个字节占8个比特位,那如果能对所有字节找到小于8个比特位的编码,然后用找到的编码对源文件中对应字节重
新进行改写,也可以让源文件更小。

1.静的長コーディング、等
ここに画像を挿入説明
静的長圧縮符号化方式、等「BCDCDDBDDCADCBDCは」圧縮結果のみ4バイトの完了後、0,110,111,011,110,111 1,110,001,110,011,110圧縮さ
2.動的可変長符号を
ここに画像を挿入説明
可変長符号の使用をリソースを圧縮する:1,011,101,100,101,001 1,100,011,101,011長持ち少し良く圧縮ボード、3マルチビット圧縮、長い圧縮比の結果、より。

取得ハフマン符号化:
ここに画像を挿入説明
質問は今は必要に応じて圧縮ファイルに、ハフマン符号化木を取得する方法で、再エンコードする可変長符号を決定するためにハフマン木で?

ハフマンツリー構築

1. 由给定的n个权值{ w1, w2, w3,, wn}构造n棵只有根节点的二叉树森林F={T1, T2 , T3,,Tn},
每棵二叉树Ti只有一个带权值wi的根节点,左右孩子均为空。
2. 重复以下步骤,直到F中只剩下一棵树为止

	a.在F中选取两棵根节点权值最小的二叉树,作为左右子树构造一棵新的二叉树,新二叉树根节点的权值为其左右子树根节点的权值之和
	b.在F中删除这两棵二叉树
	c.把新的二叉树加入到F中

ここに画像を挿入説明
ここに画像を挿入説明

質問:行う方法の別のコードのプレフィックスは、コードが可変長符号で表示された場合はありますか?この問題が発生したかどうか?

肯定不会,因为每个叶子节点都是唯一的,通往叶子结点的路径也是唯一的。
公開された230元の記事 ウォン称賛28 ビュー9297

おすすめ

転載: blog.csdn.net/weixin_43767691/article/details/103762349