我的智商逐年遞增 第193章

作者:介安藝

  陳拙看到這四個字的時候,總是有點無奈。

  這位大佬不僅聰明,而且確實很會省排版費。

  別人看到顯而易見可能會覺得痛苦或者跳過,但陳拙不會。

  既然作者跳了步,那把這些步驟補齊,這對陳拙來說本身就是一種極好的思維消遣。

  陳拙隨手從桌角的雜物堆裡抽過一張列印紙。

  這是前兩天楚戈用來測試印表機打廢的一張程式碼紙,正面印著密密麻麻的C語言函式,反面是完全空白的。

  他拿起手邊那支黑色的鋼筆,拔下筆帽,在空白的那一面開始推導。

  沒有任何停頓,也不需要打草稿。

  那些複雜的流形邊界條件被他一層層剝開,代數矩陣在紙面上以一種極具對稱美感的方式鋪展,咬合。

  就像是在完成一個挺有意思的拼圖遊戲。

  大概寫了小半頁紙,推完最後一步的一個對映,得出的代數式剛好和書上的那個結論嚴絲合縫。

  陳拙停下筆,看著紙面上的算式,心裡湧起一陣成就感。

  他把鋼筆蓋上,放在一邊,伸手拿過旁邊那個水杯,喝了一口水。

  水有些涼了,但他並不在意。

  就在這個時候,對門216宿舍的門被人猛地一把拉開了。

  緊接著,走廊裡傳來拖鞋踩在地板上急促的踩踏聲,直衝著215過來。

  215的門被一把推開大半。

  楚戈頂著一頭抓得像鳥窩一樣的亂髮,走了進來。

  他眼眶下一圈烏青,臉色灰白,身上的T恤皺巴巴的,整個人透著一股剛從網咖熬了三天三夜出來的頹廢感和焦躁感。

  隨著門被推開,216宿舍裡的聲音也清晰地傳了進來。

  那是兩臺老舊的組裝電腦主機,機箱風扇因為滿負荷咿D,發出猶如拖拉機上坡一般的巨大轟鳴聲。

  在這片轟鳴聲中,還能聽到陸嘉在對面嘆氣的聲音。

  “拙哥。”

  楚戈一屁股坐在陳拙旁邊的空椅子上,身體往後一靠,仰著頭看著天花板,長長地嘆了一口氣。

  陳拙把手裡的水杯放下,轉過頭看著他。

  “卡住了?”

  陳拙問得很理所當然,每次楚戈來找自己八成都是因為這事。

  王大勇蹲在陽臺邊,也轉過頭,舉著手裡一直沒撕開的調料包問。

  “楚老闆,這水都快燒乾了,面到底下不下?剛才去你們宿舍看,陸嘉連話都不跟我說,我都沒敢問他晚上要吃幾包。”

  楚戈伸手用力搓了一把臉,聲音有氣無力。

  “大勇,先把電拔了。別燒了。”楚戈苦笑了一聲,“這面今天晚上能不能吃得上,還是個問題。”

  王大勇愣了一下,趕緊伸手把牆上的插頭拔了下來。

  電熱杯裡翻滾的水面失去了熱源,漸漸恢復了平靜,只剩下一絲白色的熱氣往上冒。

  “又出什麼事了?”

  陳拙轉過身,面向楚戈,他順手把桌上的朗道合上,往旁邊推了推,騰出了一點交流的空間。

  楚戈指了指對門216的方向,眉頭擰成了一個死結。

  “死迴圈了,徹底卡死了。”

  楚戈嘆了口氣。

  “市裡那個搞醫藥批發的老闆,這陣子不是賺翻了嗎?各大醫院、鄉鎮衛生院還有連鎖藥房,天天找他要84消毒液,口罩和板藍根,他以前那個單機版的Access進銷存庫直接崩了,找咱們用SQL Server重新寫一套。”

  楚戈越說越煩躁,從口袋裡摸出一根菸,想點,看了看陳拙,又煩躁地塞了回去。

  “本來就是個簡單的進出庫,寫個前端連個庫就行,但是老闆非要加一個變態的調配邏輯。”

  楚戈比劃著手勢。

  “貨源緊缺,市級醫院的單子要絕對優先,然後是連鎖大藥房,最後才是下面縣城的小运也荒馨研≡所全斷了,得留個百分之十的底倉給他們按比例分。”

  陳拙安靜地聽完,沒有插話。

  “陸嘉寫統籌演算法的時候,用的是巢狀迴圈。”

  楚戈揉了揉太陽穴,有點頭疼。

  “如果來的是醫院訂單,走路線A,查庫存,扣減,如果是藥房,走路線B,查庫存,按比例扣減,邏輯上沒毛病。”

  楚戈頓了頓,臉色變得很難看。

  “但是今天晚上交工,我跟陸嘉倒了三萬條模擬資料進去做壓力測試,三萬個訂單帶著不同的優先順序標籤同時擠進來,那些If和Else的條件判斷套了五六層。伺服器要在後臺把這幾萬個訂單反覆遍歷,比對,排序。”

  “然後呢?”陳拙問。

  “然後CPU佔用率直接飆到百分之百,記憶體吃滿,機箱風扇轉得快冒煙了,系統宕機。”

  楚戈靠在椅背上。

  “這演算法的時間複雜度太高了,我和陸嘉在對面調了一下午的引數,怎麼改最後都是死迴圈,老闆說今晚必須看到跑通,要是扛不住這三萬條併發,萬把塊錢的尾款就沒了。”

  楚戈說完,眼巴巴地看著陳拙。

  “拙哥,你腦子好使,數學底子厚,你幫著捋捋,這底層邏輯到底是哪出毛病了?”

  陳拙坐在椅子上,目光落在桌面的那本《朗道》上,靜靜地思考了幾秒鐘。

  他聽懂了。

  楚戈和陸嘉遇到的問題,在於他們試圖用最直接,最笨重的窮舉法去走迷宮。

  在資料量小的時候,挨個判斷身份,排隊,分配,計算機算得過來。

  但資料量一旦呈指數級爆發,巢狀迴圈就會變成一個計算黑洞。

  這和他之前看普林斯頓團隊那篇論文時遇到的死結,在純邏輯上是同構的。

  德里安的團隊試圖用連續的時空微積分去跨越奇點,結果遇到了發散,楚戈他們試圖用線性的條件判斷去處理龐大的交叉訂單,結果遇到了記憶體溢位。

  陳拙點了點頭。

  “思路從一開始就偏了。”

  陳拙語氣平穩。

  楚戈愣住了,半張著嘴。

  “偏了?按條件判斷分配,這不是程式設計書上教的最穩妥的統籌方法嗎?”

  陳拙沒急著解釋。

  他伸手把剛才那張寫滿了物理推導公式的草稿紙拿了過來。

  他看了一眼紙面上密密麻麻的算式,那是剛剛補全的朗道理論,陳拙很自然地把紙翻了個面,露出印著廢棄C語言程式碼的那一面。

  這上面的程式碼行距很寬,中間有很多留白的區域。

  在空白處,用鋼筆輕輕點了一個黑色的墨點。

  “你們把這些訂單當成了排隊買票的人。”

  陳拙一邊畫,一邊說。

  “隊伍太長,你們就在檢票口設了三個不同的通道,每過來一個人,你們都要問一遍:你是哪裡的?然後再決定讓他走哪個通道,人一多,檢票口就徹底堵死了。”

  楚戈湊近了點,盯著陳拙筆尖下那個黑點。

  “那不排隊怎麼分?”楚戈問。

  陳拙在那個黑點旁邊,又畫了幾個相隔很遠的黑點,然後用直線把它們連線起來。

  “當成一個個獨立的狀態節點。”

  陳拙手腕微轉,在紙上畫出了一個二分圖的結構,而不是楚戈說的樹狀分支。

  “放棄線性遍歷的思維,把醫院、藥房、运苯映橄蟪蓭в胁煌瑱嘀氐拇鷶迭c,把現有的庫存物資,也抽象成一個集合。”

  陳拙在紙上的空白處,快速寫下幾個離散數學裡的基礎變數,然後套用了一個極簡的矩陣對映公式。

  “在這個離散矩陣裡,不需要去問如果,訂單進來,自帶權重值,醫院是3,藥房是2,运�1,直接讓訂單矩陣和庫存矩陣做乘法對映,權重高的,自然優先匹配到庫存節點。”

  陳拙在公式末尾補了一筆。

  “如果庫存節點歸零,它在矩陣裡就失效了,後續的對映自動跳過,所有的判斷都在一步矩陣咚阊e完成,而不是去跑幾萬次的巢狀迴圈。”

  寫完最後一行,陳拙把草稿紙推到楚戈面前。

  楚戈低頭盯著紙上那個清晰的矩陣結構,他的大腦在迅速把這些數學符號翻譯成自己熟悉的資料庫語言。

  楚戈雖然數學底子沒有陳拙他們那麼好,但畢竟還是能混進科大少年班這種地方待著,邏輯理解能力還勉強算是一流的。

  看了大概半分鐘。

  “我靠......”

  楚戈猛地抬起頭,眼睛裡剛才那種頹廢感一掃而空,取而代之的是一種豁然開朗的亮光。

  “雜湊表對映加權重排序......”楚戈看著陳拙。

  “把所有的條件判斷提前轉化為鍵值權重,然後直接做集合對映,這樣一來,伺服器根本不需要去逐條比對,它只做一次整體的代數咚悖 �

  “嗯。”

  陳拙把鋼筆放下。

  “咚懔科鸫a能降幾個數量級,再多的模擬資料衝進來,也就是矩陣的維度變大了一點,CPU不會滿載。”

  楚戈一把抓起桌上那張草稿紙,就像抓著一張救命的支票。

  他連看都沒看紙的背面寫著什麼,直接站起身。

  “大勇,水溫著,別倒!”楚戈衝著角落喊了一嗓子,聲音都劈叉了,“咱們今晚有救了!”

  說完,楚戈拿著那張雙面草稿紙,頭也不回地衝出了215宿舍。

  風風火火地跑向對面,緊接著是216的門被一腳踢開的聲音。

  “陸嘉!別死磕你那個巢狀迴圈了!快來看看拙哥畫的這個離散矩陣!把邏輯重構一下!”

  楚戈的大嗓門在對面宿舍裡迴盪。

  215宿舍裡重新安靜了下來。

  王大勇麻溜地把電熱杯的插頭重新插上牆上的插座,剛才還沒涼透的水,沒過一會兒又開始冒出細密的氣泡,蓋子再次發出叮噹的響聲。

  陳拙坐在椅子上,伸手輕輕揉了揉自己的後脖頸。

  剛才看書看久了,一直低著頭,肩膀確實有些發酸。

  “拙哥。”

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

  “還是你厲害,楚老闆剛才進來的時候,臉都是灰的,出去的時候臉都紅了。”

  陳拙笑了笑,沒有接話。

  他轉過身,把那本厚重的俄文《朗道》重新翻開,視線平穩地落回到剛才夾著書籤的那一頁上。

  走廊對面的216宿舍裡,傳來陸嘉有些壓抑但語速極快的聲音。

  隨後,就是一陣比之前更加猛烈,更加密集的敲擊鍵盤聲。

  劈里啪啦,像是急促的雨點砸在鍵盤上,沒有了之前的停頓和煩躁,只有順暢到底的執行。

  陳拙沒有去管對面的動靜,連頭都沒有回一下。

  他知道只要底層邏輯的死結解開了,剩下的程式碼實現工作對於楚戈來說,就只是純粹的體力活,完全不需要他操心。

  他低下頭,繼續看著俄文書上關於熱力學的一大段理論闡述。

  遇到稍微有些拗口的句子,便再次翻開手邊的《俄漢詞典》,按著字母順序快速查閱,沉浸在朗道的思維世界裡。

  窗外的天色漸漸暗了下來。