假设我们在某处存储了数万亿组数据。这些集合中的每一个的域都是相同的。它也是有限且离散的。因此,每个集合可以被存储为相对较短长度(例如:1024)的位字段(例如:0000100111...)。也就是说,位字段中的位 X 指示项目 X(1024 个可能的项目)是否包含在给定集合中。
现在,我想设计一种存储结构和算法来有效地回答查询:数据存储中的哪些集合将 Y 设置为子集。设置 Y 本身不存在于数据存储中,而是在运行时指定。
现在解决这个问题的最简单方法是将集合 Y 的位字段与数据存储中每个集合的位字段进行一一“与”操作,选择“与”结果与 Y 的位字段匹配的位字段。
我怎样才能加快速度?是否有树结构(索引)或某种智能算法可以让我执行此查询,而不必对每个存储集的位字段进行 AND 操作?
是否有数据库已经支持对大型集合进行此类操作?
如果您可以预处理这些集合,则子集关系可以表示为 DAG(因为您正在描述一个偏序集)。如果计算了传递约简,那么我认为您可以通过从最大集合开始执行 DFS 并在 Y 不再是当前访问集合的子集时停止来避免测试所有集合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)