【发布时间】:2014-01-12 22:38:26
【问题描述】:
我们如何将 20 个字母的字符串压缩/编码为 6 个字母。我发现很少有算法解决数据压缩问题,如 RLE、算术编码、通用代码,但它们都不能保证 6 个字母。
原始字符串可以包含字符 A-Z(大写)、0-9 和破折号。
【问题讨论】:
-
如果你想要无损编码,那是不可能的。长度为 20 的 ASCII 字符串有 20^128 个可能,长度为 6 的字符串只有 6^128 个。你无法将第一个类别塞进第二个类别。
-
20个字母的字符串类型有什么限制吗?
-
无法保证这一点。您只能压缩具有某种可编码重复的字符串。
-
糟糕,是吗?好吧,即便如此,第一个数字大于第二个,所以我的原点仍然有效。推荐阅读:pigeonhole principle,特别是上面写着“任何无损压缩算法,只要它使某些输入更小(正如压缩名称所暗示的那样),也会使其他一些输入更大。”
-
@shoover 我很确定 OP 想要一些可逆的东西(术语“编码”的通常含义),这与这种散列函数截然不同......
标签: string algorithm encoding shrink