如果顺序无关紧要,如何从具有k个元素的集合列表中创建具有k + 1个元素的集合列表?

时间:2018-06-29 15:55:05

标签: java algorithm data-mining apriori

我正在尝试实现Apriori算法的一种变体,该算法涉及从大小为k的集合列表中形成大小为k + 1的集合列表。例如,如果我有列表[[1],[2],[3],[4]],我想形成列表[[1,2],[1,3],[1,4], [2,3],[2,4],[3,4]],然后是[[1,2,3],[1,2,4],[2,3,4]。我已经考虑过使用LinkedHashSet数据结构来修剪重复的元素,但是LinkedHashSets不会修剪要删除的结构[x,y] [y,x]中的情况。有人在这样的事情上有任何建议或经验吗?

谢谢

2 个答案:

答案 0 :(得分:0)

将集合作为值存储在Hashtable中,其关键字由列表组成,排序后再加上分隔符。这将导致[x, y][y, x]都存储在键String.format('%d:%d', x, y)下(假设x <= y)。这样您就可以捕获重复项。

答案 1 :(得分:0)

这将是。在包含许多项目的大数据上尝试一下。您将遇到组合爆炸。

有充分的理由解释为什么APRIORI会对数据进行排序,以及为什么它执行更复杂(但更有效)的AprioriGen方法以及哈希树。