一种新的流文件压缩思路
通信速率的上限是什么,假如带宽一定,那么就只能通过数据压缩来实现。而压缩率也是有上限的。
能不能通过机器学习的方法来提高通信速率呢?
基本想法是通过通信双方的字典交换来实现。比如在日常生活中会有很多术语,一般是很长的一段话的简称。实际交流中只要说这么一个词,实际上一大段话的意思就都传递到对方去了。通信速率得到了很大的提升,能不能在通信中采用这样的策略呢?比如一个html页面很多内容都是重复的,标准的有head,body这样的标签。能不能做成一个字典呢?
怎么样去确定一个字典呢?
以A向B通信为例,B接收到A的信息发现其中有些字符序列重复出现,B就认为这些字符是相关的,作为一个字典。同时告诉A下次如果你需要再传这个序列只需要传一个很小的串过来就可以了。A收到B的字典后就会按照B的说明进行处理。
一个问题这样做的结果会不会实际上和压缩是一样的?
因为A完全可以在总结规律之后再向B进行发送。总结规律实际上就是压缩算法干的事情。
从信息压缩的角度进行考虑,文件越大可能的规律就会越多,那么相应的压缩率就会越大。交换字典这种方法能够提高压缩率的原因是在于提高规律的范围上面。一般的压缩只是停留在当前的通信内容上,而交换字典这种方式是作用在未来的通信内容上,只要字典在未来的通信上被用到那么就能很高的提高压缩率。
应该是信息的发送者自己去总结这个规律,比如以1KB为基本数据分析单位,逐个分析自己已经发送的数据如果pattern重复的程度达到一定程度就作为字典
64位起始位 + 字典标志位64位 + 64位截至位 所以pattern的长度至少要大于24B才会有意义
所以压缩率是会出现局部的不符合香浓熵的规律的。这个压缩方法还有更好的,比如有些pattern是类似于模板的,一长串中只有几个字符会变化,这样的按照我的想法就不会被作为模板。应该先研究一下已有的压缩算法。