多维交集算法



全部,

我有一个问题需要解决,但我不知道如何有效地解决。假设我有一个具有多个属性的对象集合,每个属性可以取多个值。

例如,在伪代码中,对象可以如下所示:

Object.Color  
Object.Size  
Object.Sides  
Object.Dimensions  

我希望能够获得集合中与一组颜色、一组尺寸、一组边和一组尺寸相匹配的所有对象。

现在,我的代码基本上是如果ColorSet中的Object.Color和SizeSet中的Object.Size。。。和Object。Dimensions中的Dimensions Set然后我标记要处理的对象(通过使用字典(。

有更有效的方法吗?我可以创建一个数据结构或算法来帮助我有效地解决这个问题吗?

干杯!

如果你只想做一个这样的查询,那你就没什么可做的了。

创建从属性映射到具有这些属性的对象集的字典。例如,对于颜色,可能有从Red{obj1, obj2, obj3}以及从Blue{obj4, obj5}的映射。对每个属性(颜色、大小、侧面、尺寸(执行此操作。

然后,您将表达对整个集合的查询。对象。ColorSet中的颜色将成为ColorSet中颜色的相应集合的并集。同时需要一种颜色和一个大小就变成了对象集与这些颜色和大小的交集。

这可能更有效,因为您只需要检查可能具有所有属性的对象,例如,如果您对Blue对象感兴趣,则可以立即排除Red集中的所有对象。

最新更新