球和篮筐版本2

问题描述:

除了原来的球和篮子的问题,我这里提到的:Balls and Baskets Problem Algorithm?球和篮筐版本2

有一个稍微不同的问题。

还有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

呜呼!更多功课! – 2009-12-22 20:18:37

+0

为什么所有人都看到球和篮筐后就认为这是一场疯狂的比赛。这实际上是一个严重的问题,但我不认为任何人都认真对待它。试着解决,你会看到。如果你不能在现实生活中使用它,这只是另一个严重的问题! 我仍然乐于接受任何建议。 – huhuhuuu 2009-12-22 21:07:31

杰克逊的想法是一个开始。

当你找到了派系后,定义了共同购物篮为每个派系,由所有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]。

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

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

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

+0

谢谢杰克逊,但这里是我在你的解决方案中看到的一个问题: 在宣传边缘,派对派系后,我们将派对具有相同数量的普通篮子,但这些普通篮子可能与其他对不同在集团。 例如: 1个输出集团是ABCD 阈值为3 AB具有1 2 3 4在共同BC 已经5 6 7在共同 CD 8有9 10 11在共同AD 12在共同拥有13 14 15 16 AC有17 18 19 20共同 BD有21 22 23 24共同 这样就可以产生派系,但实际上它看起来不像派系。我清楚吗? – huhuhuuu 2009-12-22 21:36:02

+0

我看到了这个区别,将不得不更多地考虑这一点。 – Jackson 2009-12-23 08:32:44