快速过滤数据的数据结构

时间:2017-06-01 20:07:01

标签: data-structures filtering

当涉及到特定数据的许多属性时,我正在研究制作有效的过滤算法。这对我来说是一个有趣的项目,可以学习新的数据结构。

例如,我想要Playstation上的所有RPG游戏都有英文版本。

现在我想允许更复杂的查询。

是否有良好的数据结构来处理这样的过滤属性,而无需提供所有属性。相反,我可以只给几个,仍然找到正确的游戏?

我目前计划拥有"水桶"这将描述一个属性,例如所有类型的游戏ID将在一个桶中,依此类推。然后我将使用哈希算法为该游戏添加1,并且仅在搜索后使用具有正确值的游戏。

但我想尝试找到一种更快或更简单的方法,在过滤许多属性以查找项目集时有什么建议吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

你是什么意思"不需要提供所有属性"?你是说你有N个属性,你想找到匹配l< N个属性,或者您是说您不想为每个属性计算索引?

  • 将每个属性散列到存储桶中将以O(n)空间为代价为O(1)时间存储每个索引。
  • 您可以按一个或两个属性对列表进行排序以进行一些查找O(logn),但代价是必须先进行O(nlogn)时间的排序
  • 您可以通过bloom filters为您的属性获得一些聪明,并让一些属性重叠。这会导致一些误报,但你可以在事后将其过滤掉。这为您提供了在常规情况下具有恒定时间查找的恒定空间(但在最坏的情况下是O(n)时间)。