Algorithm 多维求交算法

Algorithm 多维求交算法,algorithm,data-structures,Algorithm,Data Structures,全部, 我有一个问题需要解决,但我不知道如何有效地解决。假设我有一个具有多个属性的对象集合,每个属性可以接受多个值 例如,在伪代码中,对象可以如下所示: Object.Color Object.Size Object.Sides Object.Dimensions 我希望能够获得集合中的所有对象,这些对象匹配一组颜色、一组大小、一组边和一组尺寸 现在,我的代码基本上是如果Object.Color在ColorSet和Object.Size在SizeSet和。。。和Object.D

全部,

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

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

Object.Color  
Object.Size  
Object.Sides  
Object.Dimensions  
我希望能够获得集合中的所有对象,这些对象匹配一组颜色、一组大小、一组边和一组尺寸

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

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


干杯

如果您只想执行一个这样的查询,那么您可以做的就不多了。相反,我假设您希望执行多个这样的查询

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

然后将对集合的查询表示为一个整体。ColorSet中的颜色成为ColorSet中颜色的对应集合的并集。同时需要颜色和大小的对象集成为具有这些颜色和大小的对象集的交点


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

如果您知道每个属性的每个值的相对频率,您可以重新排序比较以获得更好的每次比较的预期时间。太棒了!这是我的想法之一,但我认为总体来说可能会慢一些。谢谢