首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

腾讯朋友网、人人网等的人脉大体是如何实现的?

2012-09-22 
腾讯朋友网、人人网等的人脉大体是怎么实现的??如A到B的人脉是经过C、D的,则记A-B的人脉是A-C-D-B,朋友

腾讯朋友网、人人网等的人脉大体是怎么实现的??
如A到B的人脉是经过C、D的,则记A->B的人脉是A->C->D->B,
朋友网有两亿用户,请试着设计数据结构和算法,求出A->B的人脉,
不考虑数据结构与内存的存储问题以及内存大小问题(设内存无限大),
还有这种大量数据的设计问题该怎么想?
谢谢大家!

[解决办法]
无权图的广度优先搜索可以吧

[解决办法]
无向图的连通问题吧。
[解决办法]
说说想法:
将所有的ID唯一编码,作为图的顶点。
if两者之间存在直接关系,则两者之间有一条无向边。
经过这样的预处理之后,就形成了一个无向无权图。
假如要计算A与B之间是否有人脉相关联,可以采用BFS
判断两者之间是否联通,并且if联通,那么同时BFS也可以
求得两者之间的最短路径。(BFS可以解决无权图的最短路径)。

为了省空间,采用邻接矩阵表示无向图,由于无向图对称,
所以只需要存储一半矩阵,并采用位图0,1表示是否邻接。
这样的话两亿个用户
2*10^8*2*10^8/2 bits<2.5*10^6GB
汗,这样的存储方式是行不通的。
-------------------------------------------------------
楼主貌似这个题目是今年腾讯实习生笔试题的附加题。

热点排行