用纯粹的词语来解释这个问题很难,所以这里是我需要解决的抽象问题的一个例子:
一些辅助信息/约束:
如何有效解决这个问题?此外,是否有实际的实现来看待?
答案 0 :(得分:1)
首先,我假设您已经优化了查询/密钥比较代码。您应该能够通过按位进行有效的操作,并对键和查询的每个单词进行比较。如果您使用的是具有SIMD指令的体系结构,那么这些指令可以并行完成。
您还没有说过这些位的含义或者您希望它们如何在键和查询之间分配。
如果您希望经常重复查询,您可以做的一件非常简单的事情就是使用带有n个最常用查询的缓存的线性搜索。
如果大多数键中的大多数键都不存在,那么您可以对键中的位重新排序,使得最不频繁出现的位具有最低值索引(即,位0具有最少数量的键使用该位设置,位1具有下一个最少,依此类推)。然后创建一个由位索引索引的数组,其索引包含包含该位的键列表。在解析查询时,选择查询中的最低设置位(有效地执行此操作),查找相应的匹配列表并线性搜索。只要密钥没有过于密集的位模式,就可以提供显着的加速。