搜读云

繁体版 简体版
搜读云 > 穿针:一部挂谷猜想的64重奏 > 第21章 第21章 噬嗑•咬合 数学与代码的啮合

第21章 第21章 噬嗑•咬合 数学与代码的啮合

章节错误,点此举报(免注册),举报后维护人员会在两分钟内校正章节内容,请耐心等待,并刷新页面。

悦儿看了他一眼。"你不需要我解释那个引理的内容?"

"我需要。但解释可以放在弹出窗口里,用户点击的时候才显示。不要一开始就把所有信息堆在屏幕上。"

接下来的几周里,悦儿和墨子每周碰三次面。每次三到四个小时。悦儿负责把证明中的每一个引理用最简短的文字概括成一个标签——一个标签的长度不超过一句话。墨子负责把那些标签嵌入到可视化结构的对应节点上。他们之间的对话变成了一种持续不断地翻译和回溯的过程——悦儿说"这一段证明本质上是在证明管道束的直径不会随尺度缩减而无限分裂",墨子说"那我把它翻译成一个宽度约束,用户拖动尺度滑动条的时候管道的直径被这个约束夹住"。悦儿看他的实现,有时候说"你的约束在极小尺度上放宽了百分之十",墨子就回去改参数,调完再给她看。

第三个星期他们遇到了第一个真正的障碍。悦儿发现可视化中的管道重叠指数跟数学定义中的重叠指数之间有一个精度误差——在最小尺度上,可视化渲染出来的重叠指数比理论值低了大约百分之八。那个误差肉眼几乎看不出,但在她检查数据输出的时候发现了。

"这是渲染的近似导致的,"墨子说,"离散化采样的时候,最小尺度的管道数量过多,计算机的浮点数精度不够。"

"但百分之八的误差会让用户在最细尺度上看到一种'虚假的空隙'。那个空隙在数学上不存在。"

墨子调出代码的核心渲染函数,把浮点数精度从单精度切换成了双精度。重新运行后误差从百分之八降到了百分之零点三。悦儿说"还是有一点",墨子又把采样密度提高了三倍,渲染速度下降了一半,但误差降到了百分之零点零三。悦儿看着屏幕上新渲染出来的管道网络,最小尺度的颜色从浅蓝色变成了近乎饱和的深蓝色——"这就对了。这个颜色对应了理论值的最优估计。"

墨子保存了那一版。然后在代码的顶部加了一行注释:"精度修正。双精度+三倍采样。原因:数学不容忍百分之零点三的误差。"

悦儿看到那行注释的时候,在注释的下面用键盘打了一行字:"数学也不容忍百分之零点零三。但视觉可以。视觉有容忍度。数学没有。"

墨子看了那行字,在下面又加了一行:"那就在视觉中保留百分之零点零三的误差但标出来。用一条警告线标示近似区域的边界。"

悦儿看着屏幕上那条新增的金色虚线——它在最小尺度的管道网络外围画了一个极细的圈,圈内的颜色是深蓝色的理论最优估计,圈外的颜色是稍淡一些的近似值。"这条线我可以接受。"她说。

那是他们第一次在"精度"和"可读性"之间找到一个平衡点。那根金色的虚线像一道缝合线,把数学的严格和代码的近似缝在了一起。两边都有让步——数学让出了一小片可以被标注为"近似区域"的边界,代码让出了双倍的计算资源去逼近那个不可达的精确值。

五月末的时候,他们做出了第一个可用的原型版本。用户打开程序后进入一个三维空间,空间中悬浮着挂谷猜想的完整管道网络。屏幕左侧是一列滑动条,控制着尺度、视角旋转角度、管道的透明度。右侧是一个信息面板,实时显示当前视角下的重叠指数、管道束数量、尺度层级编号。用户可以从任何一个尺度进入,用滚轮放大到管道内部的细节,也可以用鼠标拖动旋转从外部观察整体结构。

悦儿坐在电脑前面操作了大约四十分钟。她从一个最小的尺度开始,慢慢把滑动条推上去,看着管道网络在她的操控下从稠密的核心区域逐渐疏散、膨胀、重新排列。每推到一个节点,信息面板就会显示对应的引理编号和简要解释。她滑到坏管分类的位置,信息面板弹出了一行字——"坏管无穷逃逸路径"后面跟着一个链接,点开之后是一段她自己写的文字解释,不到两百字,写着坏管为什么最终会被粘性结构覆盖。

她看完那段文字,把滑动条推到了最顶部。整个管道网络缩成了一个极小的、完整的三维球体。球体表面光滑,颜色均匀,所有的方向都被压缩在了里面。她看着那个球体转了几圈,然后关掉了程序。

"做得很好。"她说。

墨子坐在她旁边。"什么叫'做得很好'?你之前从来不说'很好'。"

"就是做得很好。你让我看到了我写了五年但从来没看见过的东西。在证明里,管道是抽象的符号和不等式。在这个模型里,管道是真的管子,三维的,我可以转着看它。"

"那你看到什么了?"

悦儿想了想。"我看到那个证明是一棵树。根在粘性情形,树干是多尺度归纳,树枝是坏管分类和逃逸路径,叶子是最终结论。我在写证明的时候只能在一条枝上走,走完了换另一条。但在这个模型里,我同时看到了所有的枝。"

墨子把程序界面最小化,把代码编辑器重新拉了出来。他在代码文件的末尾加了一个新的注释行——"版本1.0。数学:悦儿。代码:墨衍。结构:同一棵树。"

悦儿看到那行注释,没有说话。她把那份注释截了图,存在了自己的文件夹里。文件夹的名称是"Viz",放在她所有的论文草稿文件夹旁边,像一个刚刚被开辟出来的、相邻的新地块。

噬嗑。亨,利用狱。咬合的过程需要咀嚼和克服。数学和代码之间的障碍不是在第一次尝试中就被碾碎了的,它们是被一口一口咬碎的。每一次精度误差的发现都是一次"咬",每一次参数调整都是一次"嚼"。咬合不是融合,是两种不同的硬度在接触面上彼此磨掉一些边角,然后严丝合缝地嵌在一起。悦儿和墨子的工作方式也是这样——她的数学要求极致的精确,他的代码需要可计算的逼近。两种要求在同一个问题上的相遇产生了摩擦,摩擦产生了磨损,磨损产生了新的形状。

那天墨子离开之后,悦儿重新打开了那个可视化程序。她这次没有操作滑动条,只是让它停留在初始状态——一个完整的、缓慢自转的三维管道网络。她看着那些管道在屏幕上转过一圈又一圈,颜色随着旋转角度的变化而微微改变。她看了很久,久到窗外的天色从傍晚变成了深蓝。

然后她关了程序,翻开第五十九页。她在页面底端写了一行新的笔记:"可视为树状结构。根在粘性。枝在多尺度。叶在结论。可视化证明可用。"

她合上草稿本,靠在椅背上。窗台上绿萝的藤蔓又长了一截,在夜风里轻轻晃动着。她看着它,在想明天她要把第五十九页的内容继续往前推一页。明天墨子会带着代码的新版本来,他们要在管道网络的旋转控制上再加一个惯性阻尼层。他们的合作还在继续,像一台被同时驱动的机器,两个齿轮咬在一起,转速一致,方向一致,摩擦的声音逐渐变成了一种均匀的低频嗡鸣。

噬嗑。咬合之后,障碍变成了动力。

『加入书签,方便阅读』