Algorithm 什么算法计算集合中公共元素的频率?

Algorithm 什么算法计算集合中公共元素的频率?,algorithm,complexity-theory,Algorithm,Complexity Theory,我想了解有关算法的信息,这些算法可以帮助识别重叠数据集之间的共性和差异 以stackoverflow的标签系统为例: 假设这个问题有5个标签。假设还有1000个其他问题至少有一个标签。在这1000个问题中,有多少问题有我的原始帖子没有的共同标签 另一种更简单的描述方式是自动建议标签系统: “您用[5个我选择的标记]标记了您的问题。其他类似的问题用[list of tags that May's interest]标记。其中[list of tags that May's interest]经常出

我想了解有关算法的信息,这些算法可以帮助识别重叠数据集之间的共性和差异

以stackoverflow的标签系统为例:

假设这个问题有5个标签。假设还有1000个其他问题至少有一个标签。在这1000个问题中,有多少问题有我的原始帖子没有的共同标签

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

“您用[5个我选择的标记]标记了您的问题。其他类似的问题用[list of tags that May's interest]标记。其中[list of tags that May's interest]经常出现在我的原始列表中不存在的标记


c#中的代码示例(如果可能:)

查看下注汉明距离。这是字符串上定义的汉明距离,表示将一个字符串转换为另一个字符串所需的编辑操作数


您还可以潜在地使用等价类和集合包含的偏序:当问题A和问题B具有完全相同的标记集进行重新排序时,它们是相等的、集合并集、集合差分和集合交集,然后定义用于<和>比较的偏序。

查看下注汉明距离。这是汉明距离字符串上的ance定义为将一个字符串转换为另一个字符串所需的编辑操作数


您还可以潜在地使用等价类和集合包含的偏序:当问题A和问题B具有完全相同的标记集进行重新排序时,它们是相等的、集合并集、集合差分和集合交集,然后定义用于<和>比较的偏序。

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

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

  • 收集包含五个标记中任何一个的所有条目(无重复项)
  • 对于列表中的每个条目,为每个标记使用关联数组(哈希表),递增值
  • 对于数组中的每个条目,将标记名附加到该数组的条目索引中
在(松散的)伪代码中,使用两个循环(如果可能):

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

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


Paul.

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

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

  • 收集包含五个标记中任何一个的所有条目(无重复项)
  • 对于列表中的每个条目,为每个标记使用关联数组(哈希表),递增值
  • 对于数组中的每个条目,将标记名附加到该数组的条目索引中
在(松散的)伪代码中,使用两个循环(如果可能):

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

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

保罗

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