为了扩展我在原始帖子中的评论,您想创建一个集合列表,其中给定集合的每个成员与该集合的至少一个其他成员共享至少一个属性。
天真地,这可以通过以下方法解决:找到共享属性的所有对,并迭代地将具有相同伙伴的对合并在一起。这将是O(N ^ 3)(N ^
2用于对对进行迭代,最多N个独立的集合来确定成员资格)。
您也可以将这个问题认为是确定图的连接组件,其中每个对象和每个唯一属性值都是一个节点。每个对象都将连接到其每个属性值。设置该图将花费线性时间,并且您可以通过广度或深度优先搜索来确定线性时间中的连接组件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)