高维空间里的点,用户之间的关系,是一条线。」楚戈没吭声,笔尖停在泡面盖子上。
「建立一个邻接矩阵。」
陈拙的声音很平稳,像是在大学自习室里给人讲一道大一的微积分课後题。
「假设有十万个用户,就是一个十万乘十万的矩阵A,用户i和用户j是好友,矩阵中(i,j)的值就是1,否则就是0。」「等一下。」
楚戈打断了他。
「十万乘十万,那是一百亿个数据点,你算过这要占多大内存吗?伺服器当场就得炸。」
「楚戈。」
陈拙在电话这头轻笑了一声。
「你在现实里,有十万个朋友吗?」
「没有,我连十个都没有。」
楚戈老老实实地回答。
「正常人都没有。」
陈拙说。
「所以,这个矩阵里百分之九十九点九九的值,都是0,这是一个极度稀疏的稀疏矩阵。」楚戈拿着笔的手指猛地一紧。
「在内存里,你不需要存那一百亿个点,你只需要存那些是1的坐标就行了。」
陈拙继续往下说。
「这就是个简单的坐标映射,接下来,你想找好友的好友,也就是二度人脉,在数学上怎麽表达?」楚戈的脑子转得飞快,那些大一学过,後来又被他忘得差不多的线性代数知识,突然像闪电一样劈开了他脑子里的混沌。「矩阵乘法。」
楚戈脱口而出。
「A乘以A,A的平方。」
「对。」
陈拙站起身,走到茶几倒了杯温水。
「A的平方,矩阵里值不为零的地方,就是二度人脉,A的立方,就是三度人脉。」
楚戈看着泡面盖子,原子笔在上面无意识地画着圈,呼吸变得急促起来。
「但是矩阵相乘的计算量太大了,尤其是高阶乘法,CPU还是吃不消。」
楚戈提出了最核心的问题。
「那是你太贪心了,你想一次性算出所有人的关系网络。」
陈拙喝了口水,润了润嗓子。
「伺服器不需要知道所有人认识谁,伺服器只需要回答当前登录的那个用户的请求,所以,你不需要做矩阵和矩阵的乘法。」陈拙的声音变得有些轻,但在楚戈耳朵里却像是一声炸雷。
「当前登录的用户,不是一个矩阵,他是一个向量。」
陈拙给出了最後的解法。
本章未完,请点击下一页继续阅读!