以下仅为个人猜想,部分设计的知识点本人并没有掌握,仅仅只是发表一个理论上可能实现的东西
本贴想要讨论的是极限压缩后再实现压缩(即本身已经无法通过现有的任何压缩算法减小体积)
与其说是奇思妙想不若说是异想天开!欢迎各位指正~
先说说压缩吧,压缩的原理是将重复的 N 个字节 X 缩短为 NX 来达到缩短信息长度却不损失信息的效果!
但是这个很明显在一个极限后就无法压缩了,那就是当信息基本无重复的字节的时候,压缩算法就会失效!
那么有没有可能实现无序信息的压缩呢,即在不损失信息的情况下缩短信息长度
在下提出这么一个想法!
首先创建 256 个字典,每个字典长度为 256 !每个字典的元素为 0-255 的两两组合! 0-255 的全部组合刚好是 65536 个!
256 个 256 长度的字典刚好包含他的全部组合!
以下是网络 TCP 传输时的实现(仅为假设,本人对 TCP 这个并不熟悉,仅为举例,我想表达的是这个理论压缩实现,而非 TCP 这个):
第一步:同时打开 256 个 TCP 链接!并且它们各自都有一个标识符号!代表 0-255,分别代表他们所指向的字典
第二步:准备发送数据!先将原始数据分割为两个字节为一个元素的数组!然后去找到他们所在的字典序号与所在字典内的索引!
第三步:发送数据,按先后顺序把字节通过元素所在字典序号的 TCP 链接发送其所在的字典索引!
第四步:接受数据,接收者收到数据后根据收到的索引与接受数据的 TCP 链接代表的字典序号将其重新转化为两个字节的元素!
如此可以达到用一个字节来传输两个字节的效果!
这样的话 1G/s 的宽带就传输 2G/s 的内容了!
同理,只要增加同时的链接数,就可以无限提高效率,例如直接 65536 个链接! 1 个字节直接代表 4 个字节~
但是会有问题存在!
那就是但是接收数据很难高效的判断先后顺序,特别是大流量,高延迟时,达到的先后顺序很有可能出错~
理论上来说这个方案是可以实现的。但是实用性与可靠性就需要实际测试了~
以下是文件压缩的实现:
一,首先创建 256 个文件,每个文件代表其所属的字典! 二,将两个字节转化为字典与索引的形式! 三,将索引写入字典
这里还原时会有一个难点,那就是怎样判断写入顺序?
所以文件压缩的实现可能很难实现吧
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.