【问题标题】:How to create list of sets with k+1 elements from list of set with k elements if order does not matter?如果顺序无关紧要,如何从具有 k 个元素的集合列表中创建具有 k+1 个元素的集合列表?
【发布时间】:2018-12-08 20:53:52
【问题描述】:

我正在尝试实现 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] 中的案例。有没有人对这样的事情有任何建议或经验?

谢谢

【问题讨论】:

  • 在 SO 上提问时,请发布您迄今为止尝试过的代码。

标签: java algorithm data-mining apriori


【解决方案1】:

将集合作为值存储在Hashtable 中,键由列表组成,排序后用分隔符连接。这将导致[x, y][y, x] 都存储在密钥String.format('%d:%d', x, y) 下(假设x <= y)。这将让您捕获重复项。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多