設置

三百二十六節 查錯的數學理論

  最新網址:www.mhtxs.la

  錢羽之的眼神最早開始恍惚,李加奈堅持到這里也開始走神了,只有馮珊還在聽。

  “二分查找從一個有序表里找特定值,本質是一種分治策略,也就是把一個大問題分割為若干相似的子問題,然后要么直接求解,要么繼續分割。它為什么要求有序表?是為了確保每次運算能夠同時求解全部子問題。舉個例子,如果升序表的中位值小于被查找值,我可以同時確保兩個結論,一,被查找值不在有序表的前一半中,二,被查找值在有序表的后一半中——那么接下來我在有序表的后一半中重復上述操作就行了。”

  “我們的問題是類似的,從概率上,首先我們可以合理地假設有且僅有1張卡是錯誤的。然后,我們每次統計已知的包含錯誤卡片的所有卡片中的一半,如果統計結果表明錯誤卡片不在這一半中,那么一定在另一半中,反之亦然。于是我就縮小了一半的錯誤卡片‘嫌疑范圍’。我反復進行折半操作縮小嫌疑范圍、縮小到一定程度時,問題也就不再是問題了。”

  “我以前和你說過,我們現在做的穿孔卡計算機,其實際能力并不限于眼前看到的這些。剛才我的折半操作很機械吧――總是分出一半、輸入,然后檢查結果,把包含錯卡的那疊拿來重復操作。”

  “那么如果有一天,我們設計一臺機器來代替我剛才的重復機械操作,與制表機聯合起來就能夠完成更多的事情,很多大問題將被分解為小問題,然后采用同一個操作流程解決。”

  “把看似復雜的問題層層分解為與原問題相似的規模較小的問題,反復用類似的一系列機械性操作求解,讓計算機也能夠完成,這樣的思想叫做‘遞歸’。這是我們利用計算機很本質的一種思路,你們要好好思考。特別是,在思考這類問題時,不要把現有機械計算機的運行速度考慮進去,覺得還不如人力快。關鍵要想一想,在人不加以干涉的情形下,計算機僅依照規則運行能夠求解什么問題。也就是,什么樣的問題是計算機可以解決的,我們叫‘可計算問題’。至于速度,那不是問題――面包會有的。”

  馮諾停了下來,讓馮珊仔細咀嚼這段話,對她來說,這樣的思維模式與數學類似,但又與以前學習的數學相當不同。而李加奈和錢羽之的數學也就是四則運算的水平,要他們理解實在是有點勉為其難。因為昨晚都沒睡好,這時已經十分迷糊了,這番話不啻于催眠曲――迷糊間錢羽之還在納悶這事和面包有什么關系。

  “好了,你倆睡覺去吧。我看看這張卡片究竟是怎么回事。”馮諾把還在呆呆思考的馮珊撇在一邊,對錢羽之和李加奈說道,他一指里間,“可以在那張床上睡。”說完,他拿起了桌上打錯了孔的卡片。

  李加奈從床上醒來,發現錢羽之還坐在椅子上,靠著墻邊睡得正香。她環顧了一下,馮珊在工作臺邊看書邊計算著什么,而馮元老不在房間里,估計又去哪兒開會了。

  她打著呵欠下了床,捅了捅錢羽之,說了聲:“上床去睡吧。”沒想到他只是哼了一聲又不動了。李加奈便用力把他拖到了床上——說是兩人輪班,其實昨天晚上錢羽之熬夜值班的時間比她長得多。

  大概是感覺到了床上殘留的體溫,錢羽之翻了一個身,似乎想蜷進李加奈剛剛睡出的凹陷里,繼續呼呼大睡起來。

  李加奈走到了工作臺邊倒了一杯水喝。這時她看到馮珊放下書揉了揉眼睛,似乎是打算休息一會,就和她閑聊了起來。不一會,她們就說定下星期一起去參加李加奈和文理學院同學的聚會――據說還有幾位前輩也會參加。

  攻關小組之后的幾天對復制機進行了反復改進與測試,應馮諾的要求,又在復制機的穿孔機構那一排增加了一套讀卡機構,這個改動不大,但卻可以使復制機兼有部分驗證機(Verifier)的功能。復制完成后,可以改接少量配線,使機器功能變為自動檢查兩疊卡片的穿孔是否一致,并在發現穿孔不一致時停機亮燈報警。

  二分查找再快,總也比不得直接過一遍機器更快。

  此外,改進后的版本還可以固定一張母卡在讀卡機構中,穿孔及驗證一疊卡片。在實際應用中,這項功能可以把一批卡片的共通孔位預先打好,減小人工打孔的工作量。

  不過,雖然復制機經過改進,也修復了打錯孔的問題,卻仍會偶爾出現漏打孔的現象。最后,攻關小組降低了卡片傳動和處理速度,發現問題消失了。

  “看來是繼電器反應速度的問題了。”孫立把手中的筆扔到了桌面上,“降速運行吧。”

  所有人都“唰”地看向馮諾,馮諾只好無言地點了點頭。但元老們現在都練得臉皮頗厚――大家水平半斤八兩,誰也別笑話誰。尷尬很快恢復了過來,他又提出了開發譯碼機的方案。

  按計劃,制表機本應集成打印和匯總穿孔的功能,出于簡化單臺機器復雜性的目的,現階段制表機沒有包含這些部分。因此馮諾打算先搞個最基本的數字譯碼機,由于不考慮拉丁字母的打印,甚至已經不能稱之為“譯碼”,單純只是打印,其機械結構與復制機類似,無非是檢孔后激活繼電器驅動弧形字排把09的數字打印在卡片頂端。現在復制機算是開發完成了,譯碼機不過是水到渠成的事。

  機械口的元老們覺得問題不大,答應盡快制造一臺樣機送過去。

  會到這里就散了,馮諾回到了辦公室:他想著今天還得再備備課――隨著機械計算機的進展,他覺得得深入的講授一些與軟件工程有關的數學問題了――第一代的程序員幾乎都是數學家。

  他在辦公室里處理了數據中心的日常公文,循例到機房走了一圈,做了日常的設備維護。又把“待修目錄”瀏覽了一遍,用紅鉛筆在幾個“火燒眉毛”級別的項目上打了鉤,這些只能等上完課之后犧牲睡眠時間來修理了――自從他弄了機械計算機的項目,原先的工作壓下來不少。現在徐老五已經幫他做了大多數的文書工作,本職再荒廢下去可就說不過去了。

  好不容易把手頭的事情逐一處理完,他才起身到了工作間。

  現在“工作間”里已經塞的滿登登的。從機械廠制造的各種“工程樣機”塞滿了這個車間,有的則根本不是“技術會議”上的產物,而是某些動手能力強的元老的腦洞的產物――要說完全是腦洞也不盡然,因為這些東西大致就是當年機械計算機發展過程中的不同技術思路。

  工程樣機自然是不太考究的,因為時間緊,又多是僅僅驗證設計思路是否具有工程可行性,所以在設計和制造上沒做什么優化,秉承機械廠產品一貫的傻大黑粗不說,許多設備的零件也是外露的,一來節約制造時間,二來便于隨時查障調試。

  車間里滿是鐵嘴鋼牙的機器,地上也有不少散落的物料零件。所以馮諾一直關照自己的這三個幫工,進工作間一定要做好防護。他自己以身作則,頭戴藤編安全帽,身穿粗布工作服,腳穿勞保皮鞋。

  穿過設備區,車間的另一頭是研究區,一張笨重的大號“圣船牌”12人會議桌矗立正中,桌面上堆滿了圖紙、文檔和草稿計算紙,周圍放著七八張折疊椅。墻角是碩大的黑板架,黑板上滿是粉筆書寫的公式和數字。靠墻是一排開放式的書架,層層疊疊的塞滿了各種技術資料和參考材料――不過幾個月的時間,就累積起了這么多的文書材料。這些材料按照企劃院的規定,都由馮珊和李加奈按類別整理裝訂起來――都是要存檔的,為將來的技術工作者提供參考。

  可是要是沒有一套高效的檢索設備的話,這些技術資料恐怕只會沉寂在大圖書館的某個角落最后被人慢慢的遺忘。想到這里,馮諾愈發感到自己的重任在肩。

  研究區的地上滿是散落的計算草稿,搞得如同老電影炮黨敗逃時候一樣。研究小組整天廢寢忘食,自然也顧不上打掃衛生。總算他們的便當盒還是每個人都洗干凈帶走的,不然就這邋遢程度非招來老鼠不可。

  馮諾一屁股在椅子上坐下,拿出一本關于離散數學的專業教材――這是臨高本地翻印的,經過真理辦公室的審核,所以無需保密措施,可以直接插在書架上。

  剛想打開,忽然看到桌子底下的字紙簍塞滿了碎紙片――不是一般的碎紙片,而是撕的粉碎的碎紙片,這不是他們常用的計算紙張,而是信紙。上面似乎還密密麻麻的寫滿了字跡。

大熊貓文學    臨高啟明