软件上线的日子定在八月的第三个星期二。没有发布会,没有媒体通告,墨子只是在项目的GitHub页面上把仓库从"private"切换成了"public",然后把链接发到了几个数学和编程相关的论坛上。悦儿坐在他旁边,看着他在终端里敲了一行命令,屏幕上滚动了几行绿色的确认信息,然后网页刷新,原本显示"Private"的标签变成了"Public"。
"好了。"墨子说。
"好了。"悦儿重复了一遍。
他们等了大概二十分钟。最初的访问量很小——十几个程序员点进了链接,运行了程序,在论坛上留了几条短评。有人说"界面很干净",有人说"管道旋转的惯性阻尼做得好",有人说"我打开了最小尺度,电脑风扇开始转了"。悦儿看着那些评论,没有回复。她打开程序自己又运行了一遍,从最大尺度滑到最小尺度,再从最小尺度的深处一层一层向外退出来。那个过程她做了很多次了,但每一次都还是能看到一些新的细节——某个尺度上管道的交错方式跟前一天看的时候略有不同,某个视角下重叠指数在颜色映射中的呈现比上一版更平滑。墨子在她旁边的椅子上坐着,也在看自己的屏幕。两个屏幕的光在暗下来的房间里交叠成一个浅蓝色的区域。
第三天,访问量开始上升。一些数学教育类的账号转发了链接,配的标题是"三维挂谷猜想可视化——菲尔兹奖得主的数学在你的浏览器里运行"。第四天,访问量跳到了三万。第五天,十万。论坛上的评论从技术讨论延伸到了普通用户——有人说"我拉滑块的时候,那些管子变密变稀的样子像呼吸",有人说"最小尺度那个密集的区域让我想起了分形",有人问"为什么所有方向都被覆盖了但体积看起来还是很小的感觉我讲不清楚,但我能感觉到"。悦儿看到那条"能感觉到"的评论时,停了一下。
"能感觉到。"她念出了那三个字。
墨子从旁边的椅子上倾过身来看她的屏幕。"哪条?"
"这条。他说他能感觉到体积小但方向全的矛盾感。"
墨子看完了那条评论,靠回椅背。"这说明可视化起作用了。他看不懂公式,但他看到了那个矛盾被图像呈现出来了。"
悦儿关闭了评论页面,重新打开了程序。她把视角固定在一个特定的角度,让管道网络保持静止。在那个角度下,整个结构呈现出一种对称性——从中心向外辐射的管道束在每一层尺度上都以相似的角度分布在三维空间中,像一朵被冻住的蒲公英。体积是趋近于零的,但它占据了所有方向。她伸出手指在屏幕上沿着一条管道的路径走了一遍,那根管道从中心出发,穿过十几个尺度层级,最终抵达边缘,跨度从微观到宏观。它在每一个尺度上都存在,长度一样,方向一样。
"我想起一件事。"悦儿说。
墨子等着她说。
"在三维证明里,有一组管道被称为'逃逸路径'。它们在坏管分类中最难处理。但在视觉里,那组管道看起来比别的管道更亮——因为重叠指数低,颜色映射把它们标成了浅色。你看。"她把鼠标悬停在其中一根浅色的管道上,信息面板弹出了它的方向和尺度编号。"这根管道在数学上是最麻烦的。但在视觉上,它是最好认的。"
墨子凑近屏幕看了看那根管道。"它看起来像一根单独走的路。其他管道都挤在一起,只有它自己绕了个圈子。"
"对。它在逃逸。但它逃不出去。因为所有的逃逸路径最终都会在无穷小的尺度上重新聚拢。我只是在视觉里,这根管道看起来是亮的,但它绕的圈子是有边界的。"
"你能在视觉里也加上那个边界吗?"
悦儿想了想。"我要把那组逃逸路径的外包络画出来。一条半透明的边界线,套在所有浅色管道的外面,显示它们逃逸的空间范围有限。"
墨子打开代码,在管道渲染的顶层加了一个新的图层——一组极细的、半透明的金线,勾勒出了所有逃逸路径的最大可延伸边界。那些金线在三维空间中形成了一个不规则的球壳,把浅色的管道包在里面。重新渲染之后,悦儿看着那个被金线包裹的管道网络,看到了一条很清晰的故事线:中心深红,向外渐蓝,最外沿被一层金线锁定。整体结构稳定、完整、有限。
"这就是挂谷猜想想说的东西。"她说,"方向可以无限多,集合可以无限小,但那个集合的维数永远是三。金线画出了它的边界。它看起来可以无限延伸,但它出不去。"