【问题标题】:Grouping sets algorithm分组集算法
【发布时间】:2016-01-08 02:25:08
【问题描述】:

需要开发一种算法来解决以下任务

给定:

The N sets with a different number of elements

预期结果:

The new M sets containing ≥X common elements of the N sets

例子:

N1=[1,2,3,4,5]
N2=[2,3,5]
N3=[1,3,5]
N4=[1,2]

if X=3:

M1=[1] (from N1,3,4)
M2=[2] (from N1,2,4)
M3=[3,5] (from N1,2,3)

【问题讨论】:

  • 突然想到:对输入集的元素进行排序。然后使用 merge-match 遍历每个现存的整数,边走边计算每个整数。计数 >= X 的人进入 M 组。对每个这样的整数在 N 组成员船上使用二进制编码,以进行哈希以将成员分组到 M 组中。
  • 新的 M 集是否不相交?

标签: algorithm set grouping


【解决方案1】:

给定 N 个 已排序 整数集合(记为 Ni),初始化 N 个变量Hi,它将持有每个集合的头部。

虽然仍然存在索引Hi没有到达它们各自Ni的末尾,但遍历值Vi=Ni[Hi]并找到最小值Vmin,计算出现次数n和存储对应的索引j(一个循环就可以做到)。

增加Hj

如果n>X,这会给你一个新的集合M = [Vmin] (from Nj)

由您来对数据表示进行相应的建模,以便使用(from Nj)作为映射键。

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2012-10-28
    • 2012-04-26
    相关资源
    最近更新 更多