压缩成员资格表

时间:2014-06-12 12:21:45

标签: algorithm data-structures compression encode

我有一个巨大的表,包含元素和集合之间的成员资格。

行标题是元素名称,列标题是设置名称。每个单元格的值为true 1或false 0,true表示该元素属于该集合,否则为false。

例如:

   e1 e2 e3 e4 e5
s1  1  1  1  0  1
s2  0  1  0  1  0
s3  1  1  1  1  0

我无法向客户发送这张巨大的桌子,因为他们并不关心全貌,但我需要给他们最压缩/编码的版本,以便他们可以用来快速检查是否有些e属于某些人。

如何构建这样的压缩表?

2 个答案:

答案 0 :(得分:1)

1。如果您的表格中填充的单元格为1,则可以使用稀疏表格,仅发送0(或相反),或使用单个位表示每个细胞

2。此外,您可以使用Zlib压缩要发送的数据,或者您可以自己实现Huffman,因此您不依赖于外部库。

3. 如果您的客户只需要整个表的子集,则只发送子集。

请注意,所有这些技术可以一起使用:技术1改变您的数据结构;技术2改变要发送的数据的“编码”;技术3更改将发送给客户端的数据。

答案 1 :(得分:0)

这是我的方法:

对于每个集合,将分别基于元素的不可用性和可用性而存在零和一串的字符串。只需将该二进制文件(0和1的字符串)转换为十进制并节省一些空间。

-Ashish