2010-10-26 80 views
1

我正在構建一個應用程序,基於他/她的每個朋友的共同朋友建議facebook用戶的朋友列表。我的想法看起來像這樣:如何根據共同朋友建議Facebook用戶的好友列表?

http://i219.photobucket.com/albums/cc213/DoSvn/example03.png

我可以得到的所有共同的朋友,每個他/她的朋友(B1,B2 ......)。它是b1,b2 ...(c1,c2 ...)之間的交集。我想將朋友分成幾組,如:

b1,b2,b3在一組中;一組中的b1,b4; b5,b6在一組中; b7,b8在一組中

也許只有b1,b2,b3組被選中,因爲它通過b1更大也在另一組中。我試過一個主意:

  1. 創建很多組(我試過200),每個組包含一些共同朋友列表(它是「c」,我試過5)。
  2. 對於一個組,找出交點並將其推入另一個列表。
  3. 第2步後,我有一個包含交叉點的列表。我根據每個路口的大小安排它,並得到最大的交叉口(我試過3和5)。
  4. 隨着每個選定的路口,我找出有共同朋友的朋友包含路口並推入一組。

就是這樣。但我隨機選擇了「c」,因此結果並不準確。因爲我的小學朋友名單最大,所以他們總是出現在3或4組結果中。你有什麼主意嗎 ?謝謝:)對不起,我的可憐的解釋:)

+0

這是一個有趣的問題。我讀到了他們如何在facebook中創建freind列表作爲一項功能,但人們都懶得創建它們。 – 2010-10-27 16:57:00

回答

0

圖聚類有很多工作,可能會有所幫助。您可以將每個人建模爲一個頂點,並在朋友之間建立邊界(可能會減輕他們「接近」的體重,例如他們交換消息的頻率)。然後使用圖聚類劃分該組頂點以獲得組。 (Ut不一定是一個分區,例如,您可以查找它們之間具有高權重邊的頂點的子集。)

來自U Minn的hMetis系統實現了許多用於分區圖的策略。