2009-12-22 88 views
0

除了原來的球和籃子的問題,我這裏提到的: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

回答

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]。

在你給傑克遜答案的評論中給出的例子中,普通籃子集合是空的,所以你知道這些傢伙並沒有真正連接。

0

好吧,我最初的想法;將其作爲加權圖進行建模。讓人們成爲頂點,並在共享籃子時創建鏈接。如果他們共享多個籃子,則增加他們共享的每個籃子的鏈接權重。因此,在您的示例中,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