字:
关灯 护眼
饿狼小说 > 我的智商逐年递增 > 第126章 算我的

第126章 算我的

    走廊里那股挥之不去的84消毒液味道,总让人觉得呼吸不太顺畅。

    215宿舍的门虚掩着,留了一条缝用来通风。

    王大勇蹲在阳门边的插座旁,眼睛死死盯着地上的那个不锈钢电热杯。

    杯子边缘已经有些被燻黑了,里头的水刚烧开,咕噜咕噜地翻滚着,顶得那个轻飘飘的盖子叮当直响。他手里攥着两包老坛酸菜面的料包,还没撕开,大勇转过头,看了一眼坐在桌前的陈拙。

    陈拙坐在书桌前,背对着阳。

    桌上摊开着一本厚重的大开本俄文书,书页微微泛黄。

    宿舍里很安静,只能听到电热杯煮水的声音,以及陈拙偶尔翻动书页时发出的轻微摩擦声。他看书的速度并不快,虽然他之前就看过俄语的书,不过还是难免遇到一些难以理解的词汇。遇到长句或者生僻的专业词汇,目光会停留在上面,手指习惯性地在桌面上轻轻敲击两下。然後他会翻开旁边的词典,按着俄文字母的顺序,耐心地把词根找出来,在脑子里过一遍它在物理语境下的准确含义。这本苏联时期出版的《朗道理论物理学教程》,在物理学界出了名的难啃。

    不仅因为它的理论门槛高,更因为作者有一个让所有初学者抓狂的习惯。

    在这位物理学大佬的笔下,推导公式的过程经常会被大幅度省路。

    往往上一行还是个复杂的微积分偏导方程,中间空了一行,下一行直接跟了一句俄文的Q, AH。(显而易见),然後就是一个乾乾净净的结论。陈拙看到这四个字的时候,总是有点无奈。

    这位大佬不仅聪明,而且确实很会省排版费。

    别人看到显而易见可能会觉得痛苦或者跳过,但陈拙不会。

    既然作者跳了步,那把这些步骤补齐,这对陈拙来说本身就是一种极好的思维消遣。

    陈拙随手从桌角的杂物堆里抽过一张列印纸。

    这是前两天楚戈用来测试印表机打废的一张代码纸,正面印着密密麻麻的C语言函数,反面是完全空白的。他拿起手边那支黑色的钢笔,拔下笔帽,在空白的那一面开始推导。

    没有任何停顿,也不需要打草稿。

    那些复杂的流形边界条件被他一层层剥开,代数矩阵在纸面上以一种极具对称美感的方式铺展,咬合。就像是在完成一个挺有意思的拚图游戏。

    大概写了小半页纸,推完最後一步的一个映射,得出的代数式刚好和书上的那个结论严丝合缝。陈拙停下笔,看着纸面上的算式,心里涌起一阵成就感。

    他把钢笔盖上,放在一边,伸手拿过旁边那个水杯,喝了一口水。

    水有些凉了,但他并不在意。

    就在这个时候,对门216宿舍的门被人猛地一把拉开了。

    紧接着,走廊里传来拖鞋踩在地板上急促的踩踏声,直冲着215过来。

    215的门被一把推开大半。

    楚戈顶着一头抓得像鸟窝一样的乱发,走了进来。

    他眼眶下一圈乌青,脸色灰白,身上的T恤皱巴巴的,整个人透着一股刚从网吧熬了三天三夜出来的颓废感和焦躁感。随着门被推开,216宿舍里的声音也清晰地传了进来。

    那是两老旧的组装电脑主机,机箱风扇因为满负荷运转,发出犹如拖拉机上坡一般的巨大轰鸣声。在这片轰鸣声中,还能听到陆嘉在对面叹气的声音。

    「拙哥。」

    楚戈一屁股坐在陈拙旁边的空椅子上,身体往後一靠,仰着头看着天花板,长长地叹了一口气。陈拙把手里的水杯放下,转过头看着他。

    「卡住了?」

    陈拙问得很理所当然,每次楚戈来找自己八成都是因为这事。

    王大勇蹲在阳边,也转过头,举着手里一直没撕开的调料包问。

    「楚老板,这水都快烧乾了,面到底下不下?刚才去你们宿舍看,陆嘉连话都不跟我说,我都没敢问他晚上要吃几包。」楚戈伸手用力搓了一把脸,声音有气无力。

    「大勇,先把电拔了。别烧了。」楚戈苦笑了一声,「这面今天晚上能不能吃得上,还是个问题。」王大勇愣了一下,赶紧伸手把墙上的插头拔了下来。

    电热杯里翻滚的水面失去了热源,渐渐恢复了平静,只剩下一丝白色的热气往上冒。

    「又出什麽事了?」

    陈拙转过身,面向楚戈,他顺手把桌上的朗道合上,往旁边推了推,腾出了一点交流的空间。楚戈指了指对门216的方向,眉头拧成了一个死结。

    「死循环了,彻底卡死了。」

    楚戈叹了口气。

    「市里那个搞医药批发的老板,这阵子不是赚翻了吗?各大医院、乡镇卫生院还有连锁药房,天天找他要84消毒液,口罩和板蓝根,他以前那个单机版的Access进销存库直接崩了,找咱们用SQL Server重新写一套。」

    楚戈越说越烦躁,从口袋里摸出一根烟,想点,看了看陈拙,又烦躁地塞了回去。

    「本来就是个简单的进出库,写个前端连个库就行,但是老板非要加一个变态的调配逻辑。」楚戈比划着名手势。

    「货源紧缺,市级医院的单子要绝对优先,然後是连锁大药房,最後才是下面县城的小诊所,而且不能把小诊所全断了,得留个百分之十的底仓给他们按比例分。」

    陈拙安静地听完,没有插话。

    「陆嘉写统筹算法的时候,用的是嵌套循环。」

    楚戈揉了揉太阳穴,有点头疼。

    「如果来的是医院订单,走路线A,查库存,扣减,如果是药房,走路线B,查库存,按比例扣减,逻辑上没毛病。」楚戈顿了顿,脸色变得很难看。

    「但是今天晚上交工,我跟陆嘉倒了三万条模拟数据进去做压力测试,三万个订单带着不同的优先级标签同时挤进来,那些IF和Else的条件判断套了五六层。伺服器要在後把这几万个订单反覆遍历,比对,排序。」

    「然後呢?」陈拙问。

    「然後CPU占用率直接飙到百分之百,内存吃满,机箱风扇转得快冒烟了,系统死机。」楚戈靠在椅背上。

    「这算法的时间复杂度太高了,我和陆嘉在对面调了一下午的参数,怎麽改最後都是死循环,老板说今晚必须看到跑通,要是扛不住这三万条并发,万把块钱的尾款就没了。」

    楚戈说完,眼巴巴地看着陈拙。

    「拙哥,你脑子好使,数学底子厚,你帮着捋捋,这底层逻辑到底是哪出毛病了?」

    陈拙坐在椅子上,目光落在桌面的那本《朗道》上,静静地思考了几秒钟。

    他听懂了。

    楚戈和陆嘉遇到的问题,在於他们试图用最直接,最笨重的穷举法去走迷宫。

    在数据量小的时候,挨个判断身份,排队,分配,计算机算得过来。

    但数据量一旦呈指数级爆发,嵌套循环就会变成一个计算黑洞。

    这和他之前看普林斯顿团队那篇论文时遇到的死结,在纯逻辑上是同构的。

    德里安的团队试图用连续的时空微积分去跨越奇点,结果遇到了发散,楚戈他们试图用线性的条件判断去处理庞大的交叉订单,结果遇到了内存溢出。陈拙点了点头。

    「思路从一开始就偏了。」

    陈拙语气平稳。

    楚戈愣住了,半张着嘴。

    「偏了?按条件判断分配,这不是编程书上教的最稳妥的统筹方法吗?」

    陈拙没急着解释。

    他伸手把刚才那张写满了物理推导公式的草稿纸拿了过来。

    他看了一眼纸面上密密麻麻的算式,那是刚刚补全的朗道理论,陈拙很自然地把纸翻了个面,露出印着废弃C语言代码的那一面。这上面的代码行距很宽,中间有很多留白的区域。

    在空白处,用钢笔轻轻点了一个黑色的墨点。

    「你们把这些订单当成了排队买票的人。」

    陈拙一边画,一边说。

    「队伍太长,你们就在检票口设了三个不同的通道,每过来一个人,你们都要问一遍:你是哪里的?然後再决定让他走哪个通道,人一多,检票口就彻底堵死楚戈凑近了点,盯着陈拙笔尖下那个黑点。

    「那不排队怎麽分?」楚戈问。

    陈拙在那个黑点旁边,又画了几个相隔很远的黑点,然後用直线把它们连接起来。

    「当成一个个独立的状态节点。」

    陈拙手腕微转,在纸上画出了一个二分图的结构,而不是楚戈说的树状分支。

    「放弃线性遍历的思维,把医院、药房、诊所,直接抽象成带有不同权重的代数点,把现有的库存物资,也抽象成一个集合。」陈拙在纸上的空白处,快速写下几个离散数学里的基础变量,然後套用了一个极简的矩阵映射公式。「在这个离散矩阵里,不需要去问如果,订单进来,自带权重值,医院是3,药房是2,诊所是1,直接让订单矩阵和库存矩阵做乘法映射,权重高的,自然优先匹配到库存节点。」

    陈拙在公式末尾补了一笔。

    「如果库存节点归零,它在矩阵里就失效了,後续的映射自动跳过,所有的判断都在一步矩阵运算里完成,而不是去跑几万次的嵌套循环。」写完最後一行,陈拙把草稿纸推到楚戈面前。

    楚戈低头盯着纸上那个清晰的矩阵结构,他的大脑在迅速把这些数学符号翻译成自己熟悉的资料库语言。楚戈虽然数学底子没有陈拙他们那麽好,但毕竟还是能混进科大少年班这种地方待着,逻辑理解能力还勉强算是一流的。看了大概半分钟。

    「我...」

    楚戈猛地擡起头,眼睛里刚才那种颓废感一扫而空,取而代之的是一种豁然开朗的亮光。

    「哈希表映射加权重排序....」楚戈看着陈拙。

    「把所有的条件判断提前转化为键值权重,然後直接做集合映射,这样一来,伺服器根本不需要去逐条比对,它只做一次整体的代数运算!」「嗯。」

    陈拙把钢笔放下。

    「运算量起码能降几个数量级,再多的模拟数据冲进来,也就是矩阵的维度变大了一点,CPU不会满载。」楚戈一把抓起桌上那张草稿纸,就像抓着一张救命的支票。

    他连看都没看纸的背面写着什麽,直接站起身。

    「大勇,水温着,别倒!」楚戈冲着角落喊了一嗓子,声音都劈叉了,「咱们今晚有救了!」说完,楚戈拿着那张双面草稿纸,头也不回地冲出了215宿舍。

    风风火火地跑向对面,紧接着是216的门被一脚踢开的声音。

    「陆嘉!别死磕你那个嵌套循环了!快来看看拙哥画的这个离散矩阵!把逻辑重构一下!」楚戈的大嗓门在对面宿舍里回荡。

    215宿舍里重新安静了下来。

    王大勇麻溜地把电热杯的插头重新插上墙上的插座,刚才还没凉透的水,没过一会儿又开始冒出细密的气泡,盖子再次发出叮当的响声。陈拙坐在椅子上,伸手轻轻揉了揉自己的後脖颈。

    刚才看书看久了,一直低着头,肩膀确实有些发酸。

    「小拙。」

    大勇蹲在地上,擡头看了他一眼,笑得有些憨厚。

    「还是你厉害,楚老板刚才进来的时候,脸都是灰的,出去的时候脸都红了。」

    陈拙笑了笑,没有接话。

    他转过身,把那本厚重的俄文《朗道》重新翻开,视线平稳地落回到刚才夹着书签的那一页上。走廊对面的216宿舍里,传来陆嘉有些压抑但语速极快的声音。

    随後,就是一阵比之前更加猛烈,更加密集的敲击键盘声。

    劈里啪啦,像是急促的雨点砸在键盘上,没有了之前的停顿和烦躁,只有顺畅到底的执行。陈拙没有去管对面的动静,连头都没有回一下。

    他知道只要底层逻辑的死结解开了,剩下的代码实现工作对於楚戈来说,就只是纯粹的体力活,完全不需要他操心。他低下头,继续看着俄文书上关於热力学的一大段理论阐述。

    遇到稍微有些拗口的句子,便再次翻开手边的《俄汉词典》,按着字母顺序快速查阅,沉浸在朗道的思维世界里。窗外的天色渐渐暗了下来。

    徽州四月的傍晚,老树新长出的叶子在晚风中微微摇晃。

    校园里的大喇叭准时响了起来,播放着新闻播音员字正腔圆的声音,播报着全国各地每天新增的疑似和确诊病例数字,提醒同学们注意开窗通风,勤洗手。封校的日子,每天的轨迹都是这样单调且让人觉得有些压抑。

    大门紧锁,食堂的菜色翻来覆去就那麽几样,每个人都被困在这个几平方公里的校园里。

    但宿舍里的这点菸火气和打字声,把这种沉闷冲淡了不少。

    电热杯里的水彻底沸腾了,大勇撕开两包老坛酸菜面的包装袋,把干硬的面饼掰成两半,扔进翻滚的开水里。陈拙抽了抽鼻子。

    看了一下午的理论物理,脑子转得飞快,这会儿闻到泡面的味道,肚子确实很诚实地发出了抗议的咕噜声。「大勇。」

    陈拙目光还停在书页上,随口问了一句。

    「晚上咱们到底下几包面?」

    大勇拿了双乾净的一次性筷子,在锅里搅和着泡面。

    「不知道啊,楚老板还没发话。」

    大勇吞了口口水,盯着锅里的面条。

    「不过看刚才那架势,这活儿应该是能成,要是尾款结了,咱们也不差这一包两包的吧,大不了我把我那份分点出来。」就在大勇话音刚落的时候。

    对门216宿舍里突然爆发出一声压抑的低吼。

    「跑通了!」

    是陆嘉的声音,平时的那个闷葫芦,这一嗓子喊得极其破音,带着一种如释重负的解脱感。紧接着,是楚戈放肆的大笑声,笑得有些癫狂。

    「哈哈哈!三万条数据并发,伺服器连警报都没响一下!内存占用稳在百分之十五!这曲线平稳得跟心电图似的!」楚戈在那边大喊大叫。

    「陆嘉,保存录像!马上给老板的邮箱发过去!今晚这钱稳了!」

    听着对面走廊传来的狂欢动静,陈拙拿着钢笔的手停在半空。

    他嘴角微微上扬,把钢笔盖上,合上了那本俄文版的《朗道》。

    走廊里又是一阵拖鞋的狂奔声。

    楚戈冲进215宿舍,脸上的乌青好像都散了不少,整个人散发着一种熬夜干完大项目,死里逃生後的亢奋感。他手里还攥着陈拙刚才给他的那张正反两面都写满公式的草稿纸。

    「拙哥!」

    楚戈双手撑在陈拙的桌子上,大口喘着粗气。

    「拙哥牛逼!你那个离散矩阵一加上去,系统跑得比德芙还丝滑,尾款保住了!」

    「保住了就好。」

    陈拙点了点头,语气中带着一点轻松。

    对他来说,这只是一件顺理成章的事情,数学逻辑对了,结果自然就对了。

    这和他刚才在纸的背面验证一个那位大佬的推导过程,没有任何本质上的区别。

    楚戈转头看着蹲在阳边的大勇,又看了看翻滚的电热杯里已经煮软的面条。

    「大勇,面煮得怎麽样了?」

    楚戈大手一挥,豪气干云。

    「今天晚上咱们算是搞定了,等老板验收完打了尾款,明天去校内超市给你们弄点好吃的加餐,全算我的!我买单!」
『加入书签,方便阅读』