第166章 第193步的崩塌(3/11)
但它过去留下的那些旧痕迹,那些被遗忘在左侧遥远坐标上的零星符号,真的永远不会像幽灵一样,在某次未知的回溯中重新挡住它前进的去路吗?
作者提供的专用decider非常谨慎。
它不会在纸带上随便挑选两个看起来相似的局部图案就草率判定。
只在读写头抵达此前从没到过的新位置时留下记录,等机器再次向同一方向开出新格子,再把两次记录中的读写头位置对齐。
两次记录之间,读写头向后退得最远有多少格,需要比较的窗口就至少覆盖多少格。
只有机器状态相同、窗口内的图案能够平移重合,而且窗口外的旧痕迹不会重新挡住去路,才能把它列为translated cycler候选。
前二十七个基础样例全部顺利通过。
但江临没有继续编写脚本扩大测试数量。
二十七个绿色的通过记录,只能证明本地复现环境与原作者的开发环境在依赖和编译器行为上达成了一致,却无法证明清华团队试图草拟的那套通用证书规则在数学逻辑上是可靠的。
他把目光投向了那些棘手的边缘数据。
不过他没有先处理那些被统一草案拒绝的样例,而是从已经被专用核验器和统一核验器同时接受的样例里,抽出了一台处在纸带边界附近的机器。
这台编号为 tc-EdGE-09 的机器,在第912步和第1074步,出现了两段形状完全相同的局部纸带图案。
内部状态一致,读写头的相对偏移量一致,第二段图案整体向右平移了十一格。
translated cycler原始判定程序将它判定为非停机。
清华团队为这类证书编写的专用核验器接受了它。
试图统合所有规则的统一核验器也返回了通过。
一切看起来都很顺利。
江临敲击键盘,调用可视化工具,把两次机器配置从局部窗口,直接展开到了整条纸带的全局视野。
第912步,在被标记为有效的窗口左侧,距离三十七格的地方,安静地躺着一个孤立的数字1。
那是机器在极早期的运行阶段,向左侧无序游荡时留下的废弃物。
在此后的七百多步里,读写头一路向右狂奔,再也没有回头访问过这个坐标。
到了第1074步,那个孤立的1依然停留在原先的绝对坐标上。
主体图案向右平移了十一格,窗口内部的0和1完全一致,整条纸带却没有发生严格的整体平移。
这台机器仍然可以被正确判定为translated cycler。
原始专用decider并不需要预测机器的无限未来。
它只在读写头抵达此前从未访问过的最右位置时留下记录,然后等待机器再次向右开出新格子。
两次记录之间,读写头向左退得最远有多少格,专用decider就把比较窗口至少向左扩展多少格。
随后,它将两次记录中的读写头位置对齐,检查机器状态是否相同、窗口内的图案能否在平移后完全重合。
如果这些条件全部成立,确定性的转移规则就会让下一段运行按照同样的方式整体向右平移。
不断重复这一结论,便能证明机器只会继续开辟新的格子,不会重新退回窗口之外的孤立符号。
专用核验器之所以接受这台机器,是因为它会独立重放两次记录之间的运行段,重新计算最大回退距离,并检查比较窗口是否真正覆盖了所有可能重新参与演化的内容。
但在试图追求通用性的统一核验器代码里,江临没有找到这段防御性的检查逻辑。
为了让普通的cycler和复杂的translated cycler能够共享同一套精简的数据结构,草案的设计者做了一个大胆的架构妥协。
他们把窗口之外的旧痕迹以后绝对不会重新参与演化这个极其复杂的动态验证过程,强行压缩成了一个由证书生成端自己填写的布尔类型字段。
【Isolated_window: tRUE】
对于眼前的这台 tc-EdGE-09 机器来说,这个布尔值在物理事实上恰好是真的。
本章未完,请翻下一页继续阅读.........