【发布时间】:2017-06-22 01:38:08
【问题描述】:
我有一串 1 和 0,其中 1 和 0 的数量相同。我想将其压缩成一个在存储它所需的位数方面更小的数字。此外,压缩形式和非压缩形式之间的转换不需要做很多工作。
例如,对所有可能的字符串进行排序并对其进行编号并将此数字作为压缩数据将是太多的工作。
一个简单的解决方案是允许压缩数据只是字符串长度为 n 的字符串的前 n-1 个字符。在压缩数据和解压缩数据之间进行转换很容易,但这提供的压缩很少,每个字符串只有一位。
我想要一种算法,它可以压缩具有此属性(相同数量的 1 和 0)的字符串,该算法可以推广到任何偶数长度的字符串。我也希望它比上述方法压缩更多。
感谢您的帮助。
【问题讨论】:
-
“例如,对所有可能的字符串进行排序并对其进行编号并将此编号作为压缩数据将是太多的工作。”将二进制字符串转换为整数工作量太大?
-
不,但是对所有可能的字符串进行排序是太多的工作。例如,假设字符串的长度为 10,您可以将 0000011111 作为第一个字符串,以便将其压缩为 0,第二个可能是 0000101111,依此类推。在这些之间进行转换将是很多工作。按照您的建议将二进制字符串转换为整数不会压缩数据,它仍然会占用相同数量的位。
-
哦,我假设你的意思是你有一个实际的字符串,每个字符一个字节,并希望从那时起进行压缩。
-
你能根据时间复杂度/内存使用来量化“工作量太大”吗?
标签: data-compression