压缩不断增加的唯一整数序列

时间:2015-07-03 11:54:58

标签: integer compression

我有一个两字节整数序列,范围从0到2 ^ 16-1 = 65535。 它们被排序,因此序列总是在增加,并且没有重复。

此序列通常有大约270~500个数字。如果它更密集(即> = 32768元素),我可以保存不在序列中的数字,但事实并非如此......现在这是挑战,我必须使用少于6位每个压缩整数(平均)!

我最好的猜测是使用Bloom Filters。以这种方式,为了解压缩序列,我将不得不迭代从0到65535的所有整数,询问它们是否在集合中。但我不知道如何处理误报。我可以存储它们,但我担心它会占用太多数据。

1 个答案:

答案 0 :(得分:1)

平均每个整数不可能使用少于6位。你可以计算从一组65536中不经重复地选择270或500个东西的方法的数量,并确定表示一个选择所需的位数是每个东西9.34位和每个东西8.46位。

如果您从65536中选择了2721项或更多,那么您可以用6位或更少的数字来表示它们。