|
无限压缩基本不可能实现,以下仅提供一种思路,未验证!
压缩实际是对数据进行映射,例如将 aaaaaaaaaa 映射到 10a 那么可以减少一部分空间!
但是实际上到最后是没办法进行映射了的,因为要表示所有可能必须要做到 1 对 1 映射
那么现在要无限压缩则 需要消除一部分需要映射的数量了
举例说明:
32位的二进制 有4294967295个状态
一个由 【a-z】组成的N位长度的字符串共有 26的N次方个状态
这时候我想做到无限压缩,必然需要将其中一部分状态舍弃,例如 32位的二进制原来有4294967295个状态 我假设舍弃一半 就只剩下 2147483647个状态了
可以映射到31位的二进制中去了! 但是为了表示32位的所有可能我必须要把被舍弃的状态通过某个方案转换为 没有被舍弃的状态!
如何转换?我目前想到的方案是对称加密,对称加密也可以看作是 通过某个函数 实现状态的 1 对 1 映射
即,如果本次压缩的数据是被舍弃的状态,那么对称加密一次,如果加密结果还是被舍弃的,继续加密!!
直到加密后的状态是未被舍弃的状态即可(此处需要记录总共的加密次数)解压时再加密这么多次即可!!!
如此就可以实现不限次数的压缩
但是实际情况貌似很难实现,问题还是在于需要记录加密次数!假设 数据以二进制表示!
要把1024位长度的二进制 压缩到1023位 的同时需要有数据来记录压缩次数!!!! 压缩次数转为二进制还不止 1位
当然可以把 1024位直接映射到1000位 但是这时候损失的状态太多了,需要加密很多次才能转为 未被舍弃的状态!这时候可能压缩次数的二进制数又大于24位了
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
综上~
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
多想了下 明显不可行! |
|