假设我有一个如下所示的查找:
{ Key 1 } : { Value 1, Value 2, Value 3 }
{ Key 2 } : { Value 2, Value 3, Value 4, Value 5 }
{ Key 3 } : { Value 1, Value 3, Value 5 }
{ Key 4 } : { Value 1, Value 2, Value 3, Value 6, Value 7 }
我需要获得具有至少N
个公共值而没有重复的密钥的所有组合(即,如果一对具有公共值的密钥已经包含在三元组中,那么它被认为是重复且不应该生成)
示例:
如果N == 1
,则1
与4
键{ Key 1, Key 2, Key 3, Key 4 }
组合,因为它们都有{ Value 3 }
。不应生成任何其他组合(对),因为它们已包含在组合中。
如果N == 2
,则为{ Key 1, Key 2, Key 4 }
(因为它们具有共同的值2
和3
),{ Key 1, Key 3, Key 4 }
(因为它们具有共同的值{{ 1}}和1
)和3
(因为它们具有共同的值{ Key 2, Key 3 }
和3
)。同样,不应生成所有其他组合(例如5
,因为这些对已包含在三元组中)
如果key1 + key3 or key3 + key4
,则为N == 3
,因为它们都有{ Key 1, Key 4 }
如果{ Value 1, Value 2, Value 3 }
,则不应生成任何组合。
我正在寻找算法或者至少要制定一些指南。
答案 0 :(得分:0)
您发布的问题与数据挖掘文献中的Frequent Itemset挖掘密切相关,也称为关联规则挖掘。 Wiki(https://en.wikipedia.org/wiki/Association_rule_learning#Algorithms)有更多算法,Ullman等人的书(http://infolab.stanford.edu/~ullman/mmds/ch6.pdf)也有一章。