【发布时间】:2014-12-25 12:29:33
【问题描述】:
我正在使用 2^n 向量,例如n=3 可能的值是:
000, 001, 010, 011, 100, 101, 110, 111
考虑到这组组合,我想找出最有效的方法
000, 000, 001, 100, 000, 110, 000, 110
如何查找给定值是否在可能的集合中。
一种方法是遍历整个列表(蛮力)。另一个是使用任何经典的搜索方法,例如log_2(n) +1的二进制搜索等
另一种方法是使用布隆过滤器,尽管这是一种概率方法
我想知道是否还有其他东西,给定一个位字符串列表,以有效地测试其成员资格。
【问题讨论】:
-
如果 n 可以很大,您可能对此感兴趣:en.wikipedia.org/wiki/Restricted_Boltzmann_machine
-
如果您只需要成员检查,那么高效的散列函数和散列集应该可以解决问题。
-
还有 vEB 树,不过可能不节省空间(取决于数据集)
标签: performance algorithm set time-complexity bitstring