【问题标题】:What algorithms count frequencies of common elements in a collection of sets?什么算法计算集合中公共元素的频率?
【发布时间】:2008-12-17 21:03:31
【问题描述】:

我想了解有助于识别重叠数据集之间的共性和差异的算法信息。

以stackoverflow的标签系统为例:

假设这个问题被赋予了 5 个标签。假设有 1000 个其他问题至少具有这些标签之一。在这 1000 个问题中,有多少问题具有我的原始帖子所没有的共同标签?

另一种更简单的描述方式是自动建议标记系统:

“您使用 [5 个我选择的标签] 标记了您的问题。其他类似的问题被标记为 [可能感兴趣的标签列表]。其中 [可能感兴趣的标签列表] 是经常出现的标签不在我的原始列表中。

如果可能的话,用 c# 编写代码示例:)

【问题讨论】:

    标签: algorithm complexity-theory


    【解决方案1】:

    查看 Wager-Hamming 距离。这是在字符串上定义的汉明距离,即将一个字符串转换为另一个字符串所需的编辑操作数。

    您还可以潜在地使用等价类的偏序并设置包含:当问题 A 和 B 具有完全相同的一组标签直到重新排序时,它们是相等的,设置并集、设置差异和设置交集然后定义 比较的偏序。

    【讨论】:

      【解决方案2】:

      我不知道任何特定的算法或数据结构,但我可以建议一种基本的处理方法:

      假设:每个条目有五个唯一的标签。

      • 收集包含五个标签中任意一个的所有条目(无重复)。
      • 对于列表中的每个条目,为每个标签使用关联数组(哈希表),递增值。
      • 对于数组中的每个条目,将标签名称附加到该数组的条目索引中。

      在(草率的)伪代码中,使用两个循环(如果可能):

      for each entry
          if any tag in original_tags
              tag_list[tag]++
      end
      
      for next in tag_list
          tag_count[tag_list[next]] += next
      end  
      

      这应该会产生一个连接标签名称的稀疏数组(好吧,我没有包含分隔符,但嘿,它是伪代码 :-)。保留最高数字,然后向后迭代以获得最佳建议。

      (缓存要优化,但要注意更新)

      保罗。

      【讨论】:

        猜你喜欢
        • 2012-10-08
        • 2017-09-14
        • 2021-07-28
        • 1970-01-01
        • 2021-12-04
        • 1970-01-01
        • 2015-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多