有很多用戶,用戶之間存在好友關(guān)系?,F(xiàn)在要針對某一個(gè)用戶,算出跟該用戶共同好友數(shù)最多的一些用戶,按照共同好友數(shù)遞減排列。類似qq空間,facebook的好友推薦這種。
2 回答

UYOU
TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
說一個(gè)最簡單的思路
最簡單的圖算法,遍歷你所有的好友節(jié)點(diǎn),取出每個(gè)好友的好友(二度好友)的列表,然后按二度好友的ID為key做計(jì)數(shù)操作,最后按計(jì)數(shù)排序就行了。遍歷的用戶數(shù)是你的二度好友的人數(shù)。
按這個(gè)思路,相信目前流行的圖數(shù)據(jù)庫(比如Neo4j)都能實(shí)現(xiàn)你的需求。

不負(fù)相思意
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
我的想法是,利用集合的運(yùn)算進(jìn)行求解比較快捷。所有的人構(gòu)成一個(gè)S全集,每一個(gè)用戶的好友就是全集中的一個(gè)子集,而你和所有的好友求共同好友就是子集與子集的求交操作。交集最大的那個(gè)就是你所求的好友。
利用邏輯運(yùn)算的按位與運(yùn)算求集合的交集是很快當(dāng)?shù)?。哈哈?/p>
添加回答
舉報(bào)
0/150
提交
取消