返回第166章 拉倒吧  介安艺首页

关灯 护眼     字体:

上一页 目录 下一页

我连十个都没有。”

楚戈老老实实地回答。

“正常人都没有。”

陈拙说。

“所以,这个矩阵里百分之九十九点九九的值,都是0,这是一个极度稀疏的稀疏矩阵。”楚戈拿着笔的手指猛地一紧。

“在内存里,你不需要存那一百亿个点,你只需要存那些是1的坐标就行了。”

陈拙继续往下说。

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

楚戈脱口而出。

“a乘以a,a的平方。”

“对。”

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

“a的平方,矩阵里值不为零的地方,就是二度人脉,a的立方,就是三度人脉。”

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

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

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

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

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

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

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

陈拙给出了最后的解法。

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

陈拙顿了顿,补了一句。

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

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

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

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

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

“我懂了。”

楚戈的声音有些发抖。

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

“对。”

陈拙应了一声。

“但是有个问题。”

楚戈的程序员思维迅速抓住了漏洞。

“a认识b,b认识c,c又认识a,这在图论里是个环,如果向量一直乘下去,会不会无

章节内容不完整,请退出阅读模式查看完整内容!
『加入书签,方便阅读』

上一页 目录 下一页