钱羽之的眼神最早开始恍惚,李加奈坚持到这里也开始走神了,只有冯珊还在听。
“二分查找从一个有序表里找特定值,本质是一种分治策略,也就是把一个大问题分割为若干相似的子问题,然后要么直接求解,要么继续分割。它为什么要求有序表?是为了确保每次运算能够同时求解全部子问题。举个例子,如果升序表的中位值小于被查找值,我可以同时确保两个结论,一,被查找值不在有序表的前一半中,二,被查找值在有序表的后一半中——那么接下来我在有序表的后一半中重复上述操作就行了。”
“我们的问题是类似的,从概率上,首先我们可以合理地假设有且仅有1张卡是错误的。然后,我们每次统计已知的包含错误卡片的所有卡片中的一半,如果统计结果表明错误卡片不在这一半中,那么一定在另一半中,反之亦然。于是我就缩小了一半的错误卡片‘嫌疑范围’。我反复进行折半操作缩小嫌疑范围、缩小到一定程度时,问题也就不再是问题了。”
“我以前和你说过,我们现在做的穿孔卡计算机,其实际能力并不限于眼前看到的这些。刚才我的折半操作很机械吧――总是分出一半、输入,然后检查结果,把包含错卡的那叠拿来重复操作。”
“那么如果有一天,我们设计一台机器来代替我刚才的重复机械操作,与制表机联合起来就能够完成更多的事情,很多大问题将被分解为小问题,然后采用同一个操作流程解决。”
“把看似复杂的问题层层分解为与原问题相似的规模较小的问题,反复用类似的一系列机械性操作求解,让计算机也能够完成,这样的思想叫做‘递归’。这是我们利用计算机很本质的一种思路,你们要好好思考。特别是,在思考这类问题时,不要把现有机械计算机的运行速度考虑进去,觉得还不如人力快。关键要想一想,在人不加以干涉的情形下,计算机仅依照规则运行能够求解什么问题。也就是,什么样的问题是计算机可以解决的,我们叫‘可计算问题’。至于速度,那不是问题――面包会有的。”
冯诺停了下来,让冯珊仔细咀嚼这段话,对她来说,这样的思维模式与数学类似,但又与以前学习的数学相当不同。而李加奈和钱羽之的数学也就是四则运算的水平,要他们理解实在是有点勉为其难。因为昨晚都没睡好,这时已经十分迷糊了,这番话不啻于催眠曲――迷糊间钱羽之还在纳闷这事和面包有什么关系。
“好了,你俩睡觉去吧。我看看这张卡片究竟是怎么回事。”冯诺把还在呆呆思考的冯珊撇在一边,对钱羽之和李加奈说道,他一指里间,“可以在那张床上睡。”说完,他拿起了桌上打错了孔的卡片。
李加奈从床上醒来,发现钱羽之还坐在椅子上,靠着墙边睡得正香。她环顾了一下,冯珊在工作台边看书边计算着什么,而冯元老不在房间里,估计又去哪儿开会了。
她打着呵欠下了床,捅了捅钱羽之,说了声:“上床去睡吧。”没想到他只是哼了一声又不动了。李加奈便用力把他拖到了床上——说是两人轮班,其实昨天晚上钱羽之熬夜值班的时间比她长得多。
大概是感觉到了床上残留的体温,钱羽之翻了一个身,似乎想蜷进李加奈刚刚睡出的凹陷里,继续呼呼大睡起来。
李加奈走到了工作台边倒了一杯水喝。这时她看到冯珊放下书揉了揉眼睛,似乎是打算休息一会,就和她闲聊了起来。不一会,她们就说定下星期一起去参加李加奈和文理学院同学的聚会――据说还有几位前辈也会参加。
攻关小组之后的几天对复制机进行了反复改进与测试,应冯诺的要求,又在复制机的穿孔机构那一排增加了一套读卡机构,这个改动不大,但却可以使复制机兼有部分验证机(Verifier)的功能。复制完成后,可以改接少量配线,使机器功能变为自动检查两叠卡片的穿孔是否一致,并在发现穿孔不一致时停机亮灯报警。
二分查找再快,总也比不得直接过一遍机器更快。
此外,改进后的版本还可以固定一张母卡在读卡机构中,穿孔及验证一叠卡片。在实际应用中,这项功能可以把一批卡片的共通孔位预先打好,减小人工打孔的工作量。
不过,虽然复制机经过改进,也修复了打错孔的问题,却仍会偶尔出现漏打孔的现象。最后,攻关小组降低了卡片传动和处理速度,发现问题消失了。
“看来是继电器反应速度的问题了。”孙立把手中的笔扔到了桌面上,“降速运行吧。”所有人都“唰”地看向冯诺,冯诺只好无言地点了点头。但元老们现在都练得脸皮颇厚――大家水平半斤八两,谁也别笑话谁。尴尬很快恢复了过来,他又提出了开发译码机的方案。
按计划,制表机本应集成打印和汇总穿孔的功能,出于简化单台机器复杂性的目的,现阶段制表机没有包含这些部分。因此冯诺打算先搞个最基本的数字译码机,由于不考虑拉丁字母的打印,甚至已经不能称之为“译码”,单纯只是打印,其机械结构与复制机类似,无非是检孔后激活继电器驱动弧形字排把0-9的数字打印在卡片顶端。现在复制机算是开发完成了,译码机不过是水到渠成的事。
机械口的元老们觉得问题不大,答应尽快制造一台样机送过去。
会到这里就散了,冯诺回到了办公室:他想着今天还得再备备课――随着机械计算机的进展,他觉得得深入的讲授一些与软件工程有关的数学问题了――第一代的程序员几乎都是数学家。
他在办公室里处理了数据中心的日常公文,循例到机房走了一圈,做了日常的设备维护。又把“待修目录”浏览了一遍,用红铅笔在几个“火烧眉毛”级别的项目上打了钩,这些只能等上完课之后牺牲睡眠时间来修理了――自从他弄了机械计算机的项目,原先的工作压下来不少。现在徐老五已经帮他做了大多数的文书工作,本职再荒废下去可就说不过去了。
好不容易把手头的事情逐一处理完,他才起身到了工作间。
现在“工作间”里已经塞的满登登的。从机械厂制造的各种“工程样机”塞满了这个车间,有的则根本不是“技术会议”上的产物,而是某些动手能力强的元老的脑洞的产物――要说完全是脑洞也不尽然,因为这些东西大致就是当年机械计算机发展过程中的不同技术思路。
工程样机自然是不太考究的,因为时间紧,又多是仅仅验证设计思路是否具有工程可行性,所以在设计和制造上没做什么优化,秉承机械厂产品一贯的傻大黑粗不说,许多设备的零件也是外露的,一来节约制造时间,二来便于随时查障调试。
车间里满是铁嘴钢牙的机器,地上也有不少散落的物料零件。所以冯诺一直关照自己的这三个帮工,进工作间一定要做好防护。他自己以身作则,头戴藤编安全帽,身穿粗布工作服,脚穿劳保皮鞋。
穿过设备区,车间的另一头是研究区,一张笨重的大号“圣船牌”12人会议桌矗立正中,桌面上堆满了图纸、文档和草稿计算纸,周围放着七八张折叠椅。墙角是硕大的黑板架,黑板上满是粉笔书写的公式和数字。靠墙是一排开放式的书架,层层叠叠的塞满了各种技术资料和参考材料――不过几个月的时间,就累积起了这么多的文书材料。这些材料按照企划院的规定,都由冯珊和李加奈按类别整理装订起来――都是要存档的,为将来的技术工作者提供参考。
可是要是没有一套高效的检索设备的话,这些技术资料恐怕只会沉寂在大图书馆的某个角落最后被人慢慢的遗忘。想到这里,冯诺愈发感到自己的重任在肩。
研究区的地上满是散落的计算草稿,搞得如同老电影炮党败逃时候一样。研究小组整天废寝忘食,自然也顾不上打扫卫生。总算他们的便当盒还是每个人都洗干净带走的,不然就这邋遢程度非招来老鼠不可。
冯诺一屁股在椅子上坐下,拿出一本关于离散数学的专业教材――这是临高本地翻印的,经过真理办公室的审核,所以无需保密措施,可以直接插在书架上。
刚想打开,忽然看到桌子底下的字纸篓塞满了碎纸片――不是一般的碎纸片,而是撕的粉碎的碎纸片,这不是他们常用的计算纸张,而是信纸。上面似乎还密密麻麻的写满了字迹。——下次更新第七卷两广攻略篇53节
(本章完)