球和篮子Ver2

时间:2009-12-22 20:16:43

标签: algorithm mathematical-optimization

除了我在这里提到的原始球和篮子问题:Balls and Baskets Problem Algorithm?

问题略有不同。

仍然有N人,他们有无限的球,但他们这次没有篮筐。

问题是:

有N个人有无限的球和M个不同的篮子。 人们把球扔到篮子里。

我想找到那些把球扔到同一个篮子里的人群。

A人投掷到篮子1,2,4,6,7,14,51,32 B人投掷到篮子3,4,6,7,14,15,16,64,43 人员C投掷到篮子3,4,6,7,5,87,42,32,52,55 。 。 。 等

在这个例子中,人A和B可以很好地连接(让我们说朋友)(4,6,7,14常见) 和C也可以连接到它们但没有那么好连接。 (4,6,7常见)

我希望在一个非常庞大的人群数据库中找到4-5人的群体。

2 个答案:

答案 0 :(得分:0)

好的,我最初的想法;将其建模为加权图。让人们成为顶点,并在他们共享一个篮子时创建一个链接。如果他们共享多个篮子,则增加他们共享的每个篮子的链接权重。因此,在您的示例中,A和B之间边缘的权重将为4。

然后,您可以决定组中每个人的友好程度,修剪权重小于该值的边缘,然后在结果图中查找派系。

答案 1 :(得分:0)

杰克逊的想法就是开始。

在找到派系后,通过所有egdes'篮子的交集为每个集团定义公共篮子集。 (边缘的篮子是这个边缘节点所代表的人共有的篮子)。只有当普通的篮子集大于X时,这个集团才代表一个真正联系的群体。

例如,在原始问题中,边缘将是:

A-B:  weight=4, baskets=[4,6,7,14]
A-C:  weight=3, baskets=[4,6,7]
B-C:  weight=4, baskets=[3,4,6,7]

如果你修剪的次数少于3,你会得到这是一个集团,普通的篮子设定= [4,6,7]。

在你给杰克逊答案的评论中给出的例子中,普通的篮子集是空的,所以你知道这些人并没有真正联系。