Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 稀疏位向量的散列_Algorithm_Hash - Fatal编程技术网

Algorithm 稀疏位向量的散列

Algorithm 稀疏位向量的散列,algorithm,hash,Algorithm,Hash,有没有人对稀疏位向量的哈希函数有什么好的直觉? 举一个具体的例子,假设我想散列一个4096位的整数,其中每一位为1的概率为10% 我想在散列中得到一些压缩。例如4096位输入和32位输出。这只是一个例子来说明我在寻找什么。当然,非常感谢您的回答。您能帮忙吗 如果位向量是2^32位,那么为什么不使用32位整数呢?我会像往常一样通过调用 hash<vector<bool>>(...) hash(…) 如果您使用的是C++0x,或者请参阅boost::hash。请说明您需要

有没有人对稀疏位向量的哈希函数有什么好的直觉? 举一个具体的例子,假设我想散列一个4096位的整数,其中每一位为1的概率为10%

我想在散列中得到一些压缩。例如4096位输入和32位输出。这只是一个例子来说明我在寻找什么。当然,非常感谢您的回答。

您能帮忙吗


如果位向量是2^32位,那么为什么不使用32位整数呢?

我会像往常一样通过调用

hash<vector<bool>>(...)
hash(…)

如果您使用的是C++0x,或者请参阅boost::hash。

请说明您需要哪种类型的hash。在Java和.NET中,哈希代码(用于哈希表等)是以32位整数开始的-因此显而易见的答案是返回原始值。我想这不是你想要的,所以更清晰一些是值得欢迎的。也许32位太小了。假设它是1024位,或者其他更大的值。我想压缩一下。所以32位输入->32位输出不是我想要的。您可能需要修改您的语句“如果位向量是2^32位”;]有趣。您知道Bloom过滤器的哈希函数使用什么吗?例如,对于32位整数(根据原始编辑),您可以有一个大小为2^16位的向量,如果设置了整数n/(2^16),则设置位n。然后,如果您想知道x是否在原始数据中,那么如果设置了位x/(2^16),您就知道“是”或“可能”(永远不知道“否”)。如果数据集稀疏且搜索成本高,则可以使用。有关压缩数据的更多信息和想法,请参阅《编程珍珠》(Programming Pearls)一书: