这个学期一到校,就被人拉上贼船,95级的朋友参加数学建模的一个小组中, 由于一成员要考 GRE,无心参加,中途退出. 剩下两人硬是瞅准了我的编程能力, 想拉我下水. 无论我怎么强调本人的数学功底薄弱, 他们还是一无反顾, 声称所有的数学理论分析,都不需我过问,只需我在第一时间用程序实现他们的构想 就可以了. 并用一等奖就可以保送数学系的研究生利诱我. 这个数学系的研究生 倒没什么,本来就没打算读什么研了的. 只是朋友之义不可负. 只好硬着头皮抗下来.

培训的最后几周课听了一下,感觉不简单. 一道甲 A 预测的题做了一晚上, 还是大部分利用了计算机模拟. 而听听旁人的论文, 满屏的数学定理,公式, 真是不能比啊 ;-( 后来的什么水房改建等问题,简直一点头绪都没有, 有点怕了, 而正式的比赛也开始了...

上周一就住进了留学生招待所,条件还可以,只是听说搞这个竞赛很累的, 72 小时都要连续奋战, 是不是有点恐怖?当时不觉得,有点兴奋罢了. 以前都是一个人解题,限制几个小时,而且大多不能查资料, 这种数十小时, 三个人同时工作, 完全开卷, 尤其是可以随便使用计算机的解题方式真是没有尝试过 ;-)

题目下来后,是二选一的,由于第二题属于图论中的问题,运用计算机的地方会很多, 我便极力主张做这个, 虽然题目的复杂度很大, 我们学校的8 个队里已经有5个队选择了 第1题(关于投资风险的),但同组的另两个战友还是支持了我 ;-)

题目简单说是这样的:一个有 53 个节点的图,从一固定点出发,三个人走, 每个节点都必须去一次,最后要回到出发点,求最佳的走法.(然后还有几个引申出来的问题) 第一天我们就有了实质性的进展, 将 3 个人的问题化为一个人的问题:简单的在出发点处设置两个虚拟点就可以了. 剩下的问题就是解出一个 55 节点的货郎担问题.

早就知道货郎担问题是 NP 难度的,可开始我们没有估计到 55 个节点的复杂度, 第一天熬了一通宵把程序写了出来,没有优化就可以在几秒肿内求出 20 节点的解. 只是消耗了大量的内存而已,好在我使用的是 DJGPP,如果程序优化一下,内存应该不是问题, 便美美的睡了 3 个小时,好爽,当时以为可以提前完工了 ;-) 没想到这个意识上的错误是多么的严重, 接下来的分析发现,用同样的程序,即使机器的速度再提高 1000倍,内存给我 4G, 也没办法在限定的时间内解决问题了:-(

已经是第二天晚上了,这可真急了,游荡到同一战线上奋斗的友军处, 发现他们的战果并不比我们的丰厚,总算有了点安慰. 这个时候大家都已经开始使用我的程序 去验算他们的结果了,或是人工寻找路线再加以印证. 有那么一点点自豪 ;-) 如果没有我写的程序, 可以想象大家有多么惨, 手工演算路径是很恐怖的哟 ;-)

第三天上午,我们才有了突破,采用分块减少图的规模的方法,求近似最优解.而这个时候, 我们的进度已经是大大落后于友队了 ;-( 真正解出结果时,已经是第三天的晚上 10 点, 剩下的工作量简直是惊人的,我们需要写出论文,并排版校对,打印. 而这个时候, 3 个人 都已经是疲惫不堪,站着都能睡着. 而大家都不敢和眼,万一哪个倒下了,保证我们这就没有一个 清醒的人了.我的工作更是异常艰巨,作为本组唯一打字速度超过 20 字/分 的人, 成了打字员的当然人选,另外还有兼作美工 (制作插图). 该 S 的 word 以前从没有碰过. (一直用 DOS 的不良后果) word 里,自作聪明的设计,害苦了我, 自动加的些标号怎么也 去不掉, 写的些小写字母,莫名其妙的变成了大写,那个时候真想砸了窗户 @#$%&^!

等到第四天早上交卷的时候,知道我们想干的唯一件事是什么吗?

就是美美的睡一觉 Zzz....

云风 草书于1998.9.29