[奇思妙想] 网络传输中的乱序压缩实现?

2020-11-27 12:04:56 +08:00
 8520ccc

以下仅为个人猜想,部分设计的知识点本人并没有掌握,仅仅只是发表一个理论上可能实现的东西

本贴想要讨论的是极限压缩后再实现压缩(即本身已经无法通过现有的任何压缩算法减小体积)

与其说是奇思妙想不若说是异想天开!欢迎各位指正~

先说说压缩吧,压缩的原理是将重复的 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 个文件,每个文件代表其所属的字典! 二,将两个字节转化为字典与索引的形式! 三,将索引写入字典

这里还原时会有一个难点,那就是怎样判断写入顺序?

所以文件压缩的实现可能很难实现吧

2959 次点击
所在节点    分享发现
33 条回复
kop1989
2020-11-27 14:35:38 +08:00
@XiaoxiaoPu #20 lz 的这个例子简单点就是,东西抱着沉,但背着就不沉了(因为看不见😂)。
no1xsyzy
2020-11-27 14:37:15 +08:00
@8520ccc 你除了没说自己是对的,其他部分确实就是民科呢亲
不挑信息内容的 1:2 压缩率,你觉得轮得到你发现?
这狗屁不通的理论还能理论上可行?你没必要来这里显示你多没文化吧?
si
2020-11-27 14:47:55 +08:00
我刚刚查了一下,“每发一个包,不论大小协议头会占用一定的空间 TCP 头 20 字节,IP 头 20 字节,MAC 头 14 字节,共 54 字节”。相当于用几十个字节表示一个字节了。好像要 256*54=13824 个连接才能抵得过,而且还没考虑其他问题。
shuax
2020-11-27 14:48:33 +08:00
支持楼主,香农算什么,他根本不懂什么叫信息。(狗头)
yolee599
2020-11-27 16:35:40 +08:00
字典快递过去吗?
CrazyRundong
2020-11-27 17:58:47 +08:00
指出一下主要的 flaw 吧:

“用一个字节来传输两个字节的效果” 是错误的。按照你的算法,虽然虚构的 “TCP 链接” 里只传输了 1 字节,但是为了让远端知道用来解码的字典序号,还需要在协议中规定按照 “接受数据的 TCP 链接代表的字典序号” 来确定字典——也就是说,256 个信道,每一时间槽只有 1 个信道有效,这不就是把第 1 字节的信息用时分复用传输嘛——到头来 2 个源字节的信息你都得发出去。

你自己提到的 “接收数据很难高效的判断先后顺序”,就是时分复用模式的问题。LZ 愿意想这些问题是值得鼓励的,但毕竟思而不学则殆。建议 LZ 去搜一些严肃的课程材料,譬如通信原理和信息论,稍微了解下信息熵、时分 /频分复用这些基本概念。

不要低估聪明人(我是指,历史上 *真正的* 那部分聪明人)在闲得无聊时候做的思维体操,更不要低估 *理论上* 这三个字的重量 :)

祝 LZ 学习愉快
garipan
2020-11-27 18:29:07 +08:00
Pied Piper 准备上线
zckevin
2020-11-27 18:33:18 +08:00
少想多读书
GeruzoniAnsasu
2020-11-27 18:54:57 +08:00
香农就是个种花的农民,懂个屁的信息论(
zxlzy
2020-11-27 19:13:54 +08:00
@rekulas 这种做法也是不可行的。数字的长度很可能长于原始数据
vindurriel
2020-11-27 19:45:43 +08:00
楼主这个问题本身挺好的 不连续的数据当然也可以压缩 可以查下 柯氏复杂性 和 霍夫曼编码 但是纯随机数据的压缩极限 shannon 在数学上已经证明了 目前还没有传输算法达到这个极限 甚至没有接近 因为还要容错
liukangxu
2020-11-27 20:51:00 +08:00
香农的棺材板压不住了( doge
rekulas
2020-11-28 09:42:40 +08:00
@zxlzy 看好我设置的前提,0 开始的位置,所以数据长度一定远小于数字的,差了 N 个数量级
理论上一定可行的,前提是有足够“强大的超算和足够的时间”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/729813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX