0

通过使用复杂的数学公式/算法,长 Ascii 字符串文本可能会或可能不会被压缩并压缩为哈希类型的 ascii“校验和”。就像可以压缩的空气一样。

要将兆字节的 ascii 文本压缩成 128 字节左右,通过改组,然后从第一个到最后一个轮流混合单个“字节”的新“模式”。当我们解压它时,首先提取最后一个字符,然后我们使用公式和从最后一个到第一个的顺序键继续解压。顺序键以及最后一个和第一个字节必须准确知道,包括完全更新的最终编译字符串,以及被压缩的字节总数。

这是我正在考虑的 terra 压缩。这可能吗?你能解释一下例子吗。我正在研究这个理论,这是我自己的想法。

4

7 回答 7

8

一般来说?绝对不。

对于某些特定情况?是的。仅由空格组成的一兆字节的 ASCII 文本很可能压缩得非常好。实际文本通常会很好地压缩......但不是以几兆字节的顺序压缩成 128 字节。

想想有多少字符串——甚至只是有效的英语单词字符串——可以容纳几兆字节。远远超过 256^128。根据鸽子洞原理,它们不能全部压缩到 128 字节...

于 2010-08-22T22:09:11.297 回答
6

如果您有n 个可能的输入字符串和m个可能的压缩字符串,并且m小于n,则两个字符串必须映射到同一个压缩字符串。这被称为鸽巢原理,这也是为什么您可以压缩数据的数量受到限制的根本原因。

您所描述的更像是一个哈希函数。许多散列函数的设计使得给定一个字符串的散列,您极不可能找到另一个给出相同散列的字符串。但是没有办法给定一个散列,你可以发现原始字符串。即使您能够反转散列操作以生成给出该散列的有效输入,也有无限多的其他输入会给出相同的散列。你不会知道其中哪一个是“正确的”。

于 2010-08-22T22:09:47.930 回答
3

信息论是解决此类问题的科学领域。它还为您提供了计算存储压缩消息(使用无损压缩)所需的最小位数的可能性。这个下限被称为消息的

使用马尔可夫模型可以计算一段文本的熵。这样的模型使用的信息是字母表中某个字符序列的可能性有多大。

于 2010-08-22T22:16:20.623 回答
2

空气类比是非常错误的。

当你压缩空气时,你会使分子彼此靠近,每个分子被给予的空间更小。

当您压缩数据时,您无法缩小数据(除非您将硬盘驱动器放入液压机中)。实际上使比特更小的最接近的方法是增加网络的带宽,但这不是压缩。

压缩是关于找到计算数据的可逆公式。关于数据压缩的“规则”就像

  • 该算法(包括任何标准起始字典)是事先共享的,并且不包含在压缩数据中。
  • 所有启动参数都必须包含在压缩数据中,包括:
    • 算法变体的选择
    • 字典的选择
    • 所有压缩数据
  • 该算法必须能够压缩/解压缩域中所有可能的消息(如纯文本、数字或二进制数据)。

要了解压缩的工作原理,您可以研究一些示例,例如Run length encodingLempel Ziv Welch

于 2010-08-23T06:42:10.140 回答
1

您可能正在考虑通过存储公式和起始值来有效工作的分形压缩。该公式被迭代一定次数,结果是原始输入的近似值

这允许高压缩但有损(输出接近输入但不完全相同)并且压缩可能非常慢。即便如此,170:1 的比率大约是目前达到的最高比率。

于 2010-08-22T22:17:54.367 回答
0

这有点离题,但我想起了出现在 USENET 上的Broloid 压缩笑话线程……回到 USENET 还很有趣的时候。

说真的,任何声称拥有可以将任何文本兆字节文件减少到几百字节的神奇压缩算法的人要么是:

  • 骗子,
  • 不了解基本信息论的人,或
  • 两个都。
于 2010-08-23T07:48:28.490 回答
0

您可以将 test 压缩到一定程度,因为它不使用所有可用位(即 az 和 AZ 构成 256 个值中的 52 个)。重复模式允许一些智能存储 (zip)。

无法任何固定长度的字节数存储任意大块文本。

你可以压缩空气,但你不会去除它的分子!它的质量保持不变。

于 2010-08-22T22:10:43.617 回答