关灯
护眼
字体:大 中 小
上一页
目录
下一页
果他直接拿出这个解法,会引起什么反应?
不过这个念头只停留了一瞬。
他是来比赛的。
至于之后的事情,之后再说。
陆沉坐到终端前,开始敲击键盘。
中国队的分工是:陆沉负责内核算法设计,林枫负责输入输出和测试用例,另外两名队员负责文档和辅助验证。
但开赛十五分钟后,林枫就发现了一个问题。
“陆沉。”他压低声音,“你写的这个预条件子————是什么方法?”
“不完整的Cholesky分解。”
林枫翻了翻参考手册:“手册上没有。”
“恩。
”
“那你怎么————”
“推导出来的。”陆沉没有停下手上的动作,“共轭梯度法的收敛速度取决于系数矩阵的条件数。如果能找到一个近似分解,使得预条件后的矩阵特征值聚集,就能加速收敛。不完整分解的内核思想是,只保留原始矩阵稀疏结构内的元素,其他位置直接置零。”
林枫沉默了。
这些话他每一个字都听得懂,但连在一起就变成了一堵墙。
他决定不再问,专心做自己能做的事。
一个小时后,陆沉完成了内核代码。
他靠在椅背上,闭上眼睛,让代码在脑中的BESM—6仿真器上跑了一遍。
正确。
够用了。
他重新睁开眼睛,准备继续完善文档。
就在这时,他注意到赛场前方出现了一阵轻微的骚动。
苏联队的局域里,几个队员正在低声争论什么。
主考官走过去,听了一会儿,然后点了点头,对全场说:“苏联队请求更换终端。原终端出现故障。”
工作人员开始检查设备,陆沉的目光落在苏联队队长的脸上——那是一个十七八岁的金发少年,眉头紧锁,神情有些焦躁。
不是因为设备故障。
设备故障是借口。
真正的原因是:他们被题目卡住了。
预条件共轭梯度法这道题,如果没有不完整分解的思路,就只能用最简单的对角预条件雅可比预条件。
但雅可比预条件对这道题的病态矩阵效果很差,收敛极慢,甚至可能不收敛。
苏联队大概试了雅可比,发现跑不通,以为是机器出了问题。
陆沉收回目光,继续写文档。
这是比赛。
赛场上,没有义务提醒对手。
十一点四十分,距离比赛结束还有五十分钟。
陆沉完成了全部代码和文档。林枫的测试用例也准备好了。
“提交吗?”林枫问。
“等一下。”陆沉说,“我再优化一个地方。”
他重新打开代码文档,定位到预条件子的构造部分。
其实现在提交,成绩已经足够好了。
不完整的Cholesky分解比雅可比预条件快至少一个数量级,中国队在这个模块上的优势是碾压级的。
但陆沉忽然想试试另一个思路。
如果不完整的Cholesky分解是1980年的解法,那么—
他能不能把时间线再往前推一点?
比如,1990年代才成熟的多重网格预条件?
不。时间不够。四十分钟写不完一个完整的多重网格框架。
但有一个折中的思路。
他可以在不完整分解的基础上,添加一个简单的块对角预处理,针对这道题矩阵的特殊分块结构。
而且,可以在现有代码的基础上用十分钟改完。
他动手了。
十一点五十五分。
陆沉按下保存键。
“提交。”
林枫长长地呼出一口气,象是终于卸下了什么重担。
评测过程是公开的。
各队的程序被依次送入BESM—6主机,在统一的测试集上运行,运行时间和结果实时显示在赛场前方的大屏幕上。
第一队,保加利亚。运行结果:部分正确。。
第二队,捷克斯洛伐克。运行结果:正确。。
第三队,东德。运行结果:正确。。
随着结果一个个公布,赛场里的气氛渐渐紧张起来。正确完成这道题的队伍并不多,大多数要么结果错误,要么运行超时。
第六队,匈牙利。运行结果:正确。。
匈牙利队的局域里发出一阵压低声音的欢呼。戴眼镜的男生朝陆沉这边看了一眼,比了个大拇指。
第七队,苏联
本章未完,请点击下一页继续阅读>>『加入书签,方便阅读』
上一页
目录
下一页