第(2/3)页 超链分析这个概念,国外有论文提到过,但没见到实际应用。 他们需要自己从头设计算法。 第二天,李明在白板上画出了第一版架构图:“我们需要建两个矩阵。 一个记录每个网页的出链,一个记录入链。 然后迭代计算,直到收敛。” “收敛条件呢?” “每个网页的分数变化小于某个阈值。” “计算量还是大。”张涛摇头,“十万网页,矩阵就是一百亿个元素。 现在的服务器算不动。” 第三天,陈浩打电话来了。 “遇到困难了?”他问。 贾瀞雯实话实说:“算力不够。 团队说矩阵太大,迭代计算需要的时间太长。” 电话那头沉默了一会儿。 “可以简化。”陈浩说,“第一,不需要算所有网页。 只计算有入链的网页,那些孤立页面直接给最低分。 第二,迭代可以分批进行,不需要一次性算完。 第三,分数不需要精确到小数点后很多位,整数就行。” 贾瀞雯把这些记下来,转告给团队。 李明听了,一拍大腿:“对啊!我们可以分块计算!先把网页按链接关系分组,组内迭代,组间再迭代。 这样内存占用能降下来。” 思路打开了,进展就快了。 第一周结束时,他们做出了简化版的超链分析算法。 测试数据很小,只有一千个网页,但结果令人鼓舞——重要网页的分数确实高,垃圾网页的分数确实低。 第二周,开始集成到真实数据里。 问题又来了:十万网页的链接关系太复杂,计算一次要八个小时。 “太慢了。”张涛盯着屏幕,“如果每天都要重新计算,根本跟不上网页更新的速度。” 贾瀞雯给陈浩打电话。 这次陈浩的建议很直接:“增量更新。 每天只计算新增网页和发生变化的部分,其他的用缓存。” 又是新的挑战。 但团队已经适应了这种节奏——遇到问题,分析问题,解决问题。 第二周周四晚上,李明从座位上跳起来。 “出来了!第一次完整计算完成!” 第(2/3)页