我有一个巨大的表,包含元素和集合之间的成员资格。
行标题是元素名称,列标题是设置名称。每个单元格的值为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属于某些人。
如何构建这样的压缩表?
答案 0 :(得分:1)
1。如果您的表格中填充的单元格为1,则可以使用稀疏表格,仅发送0(或相反),或使用单个位表示每个细胞
2。此外,您可以使用Zlib压缩要发送的数据,或者您可以自己实现Huffman,因此您不依赖于外部库。
3. 如果您的客户只需要整个表的子集,则只发送子集。
请注意,所有这些技术可以一起使用:技术1改变您的数据结构;技术2改变要发送的数据的“编码”;技术3更改将发送给客户端的数据。
答案 1 :(得分:0)
这是我的方法:
对于每个集合,将分别基于元素的不可用性和可用性而存在零和一串的字符串。只需将该二进制文件(0和1的字符串)转换为十进制并节省一些空间。
-Ashish