就爱来小说网

第165章 拉倒吧(2/5)



    陈拙继续往下说。

    「这就是个简单的坐标映射,接下来,你想找好友的好友,也就是二度人脉,在数学上怎麽表达?」楚戈的脑子转得飞快,那些大一学过,後来又被他忘得差不多的线性代数知识,突然像闪电一样劈开了他脑子里的混沌。「矩阵乘法。」

    楚戈脱口而出。

    「A乘以A,A的平方。」

    「对。」

    陈拙站起身,走到茶几倒了杯温水。

    「A的平方,矩阵里值不为零的地方,就是二度人脉,A的立方,就是三度人脉。」

    楚戈看着泡面盖子,原子笔在上面无意识地画着圈,呼吸变得急促起来。

    「但是矩阵相乘的计算量太大了,尤其是高阶乘法,CPU还是吃不消。」

    楚戈提出了最核心的问题。

    「那是你太贪心了,你想一次性算出所有人的关系网络。」

    陈拙喝了口水,润了润嗓子。

    「伺服器不需要知道所有人认识谁,伺服器只需要回答当前登录的那个用户的请求,所以,你不需要做矩阵和矩阵的乘法。」陈拙的声音变得有些轻,但在楚戈耳朵里却像是一声炸雷。

    「当前登录的用户,不是一个矩阵,他是一个向量。」

    陈拙给出了最後的解法。

    「一个只有他自己那个位置是1,其余全是0的向量,你拿这个一维向量,去乘那个稀疏矩阵,乘一次,得出他的直接好友向量,再拿结果去乘一次矩阵,得出二度好友。」

    陈拙顿了顿,补了一句。

    「向量乘稀疏矩阵,时间复杂度是0(N),就算他有一万度的人脉,计算机做这种一维数组的乘法,连一毫秒都用不了。」网吧里,楚戈嘴里的糖已经咬乾净了。

    咬到了糖棍被骆了一下牙,他才猛地反应过来,一把将糖棍甩在地上。

    他的眼睛死死盯着面前那张沾着红油的泡面纸盖。

    上面写着两行有些淩乱的公式。

    困扰了京城那个初创团队整整半个月,被几个清华计算机系的高材生视为无解硬体瓶颈的资料库死锁问题。在这个十二岁男孩嘴里,被几句最基础的线性代数概念,直接降维打击成了碎渣。

    「我懂了。」

    楚戈的声音有些发抖。

    「抛弃资料库的关系查询,把所有的关系表抽出来,在内存里维护一个稀疏矩阵,所有的查询,全部在内存里做向量相乘,算出结果後,再拿用户ID去资料库里提头像和名字。」

    「对。」

    陈拙应了一声。

    「但是有个问题。」

    楚戈的程式设计师思维迅速抓住了漏洞。

    「A认识B,B认识C,C又认识A,这在图论里是个环,如果向量一直乘下去,会不会无限循环,把算力耗死?」「楚戈。」

    陈拙在电话那头叹了口气,语气里带着点无奈。

    「这是工程问题,不是数学证明题,向量乘出来的结果里,凡是数值大於0的,你顺手用个哈希表把1D记下来,下次乘的时候遇到已经记过的,直接跳过不就行陈拙轻轻摇了摇头。

    「你是个写代码的,别指望数学公式连你拉屎用几格纸都算清楚,用点你程式设计师的常识好吗?」楚戈听着电话里那点调侃,突然咧开嘴乐了。

    「行,哥哥我承你这个情了,这回算我欠你的。」

    楚戈把那张泡面盖子折了两下,小心翼翼地塞进贴身的口袋里。

    「过完年回科大,我请你吃一个月的食堂小炒,先挂了,我得赶紧把这个底层的-->>

本章未完,点击下一页继续阅读