Binary 二进制流的熵编码
我想压缩一个二进制流。我知道在每个“1”之后找到“0”的概率更高,而在每个“0”之后找到“1”的概率更高。我应该如何编码它?我在考虑赖斯密码,但我没有走到这一步。。。提前感谢您的回复。您尝试过一些简单的哈夫曼编码吗?也许它不会节省那么多,但如果其中一个代码“10”和“01”的概率比“00”或“11”高得多,则可以将其重新映射到“0”,将其他代码映射到“10”、“110”和“111” 当然,这不是最好的选择,因为它将您的流拆分为2位块,并且只优化了一种情况。然而,它可以通过计算/测量更大输入集(如4或8位)的概率来改进,例如,在8位情况下,10101010和01010101的使用频率将高于00000000和11111111 通过算术编码或一些真正使用基于比特概率的模型的压缩,您可能会获得更好的结果Binary 二进制流的熵编码,binary,entropy,Binary,Entropy,我想压缩一个二进制流。我知道在每个“1”之后找到“0”的概率更高,而在每个“0”之后找到“1”的概率更高。我应该如何编码它?我在考虑赖斯密码,但我没有走到这一步。。。提前感谢您的回复。您尝试过一些简单的哈夫曼编码吗?也许它不会节省那么多,但如果其中一个代码“10”和“01”的概率比“00”或“11”高得多,则可以将其重新映射到“0”,将其他代码映射到“10”、“110”和“111” 当然,这不是最好的选择,因为它将您的流拆分为2位块,并且只优化了一种情况。然而,它可以通过计算/测量更大输入集(如
另一个简单的方法是每秒钟反转一位。由于您提到的概率将趋向于许多交替流部分,如0101010,这将为您提供许多流部分,如111111,通常可以通过常用的压缩算法更好地进行压缩。但这种方法的成功与否取决于“概率差距”到底有多大。Hi!我试过哈夫曼,但正如你所注意到的,它不会给出最佳结果。。。不过,感谢您对算术编码的建议。看来是个正确的选择,我会试试看。谢谢算术编码是专利,使用范围编码。