假设你有一个很大的数字,99999999999。有没有任何方法可以将它压缩到更短的数字,比如“234.56”,假设你可以在后台存储参考信息(即有关用什么方法来“解压缩”的信息“,从234.56回到999999999)
答案 0 :(得分:5)
一般而言,并按字面意思提出问题,否。有些数字会变得更大,或保持相同的大小。
很容易证明这一点:假设您的问题的答案是“是”。从较大的数字中得到一个较短的数字。重新申请,直到最终得到一个0位数字。看到问题了?
但除此之外,您可以使用任何无损压缩算法。将它们全部放在二进制文件中,并根据需要将整个文件压缩。虽然你需要大量的数字来压缩开销,但是如果这些是随机数,你就不幸了 - no algorithm can compress randomness。
当然,根据您的样本空间,您可以做得更好。例如,如果您知道它们可能包含1位数字,则可以简单地存储数字和运行长度,并为不符合该模式的数字设置转义序列。如果您知道有256个不同的公共数字,请将那些包含在您的程序中,然后将一个字节索引存储到该数组中,再加上不在数组中的数字的转义序列。等
但同样,您的问题的答案通常是否。
答案 1 :(得分:0)
取决于“背景中的商店参考信息”的含义。在极端情况下,“参考信息”将是数字本身,“压缩”数字将只是“参考信息”的索引。基本上你有一个数字的URL缩短器。