第4章 文氏图
那对夫妻来的时候,天气很好。社区儿童中心的窗户开着,风把窗帘吹得轻轻晃动。孩子们坐在地垫上拼积木,声音不大,却显得格外集中,像是在用力证明自己还在这个世界上。
女人先开口,说话时一直攥着男人的手。
“我们想领养一个孩子。”她说,“如果可以的话,今天就带走。”
手续并不复杂。灾难之后,程序被压缩到只剩下必要的部分。真正漫长的,是等待他们说完理由。
他们坐在林芮芮对面,哭得很克制。他们的父母、兄弟姐妹,全都在那一天消失了。以前没有孩子,也不觉得家里空。两个人就够了,甚至觉得清静。
“可现在不一样了。”女人说,“现在回家,连一个声音都没有。”
他们尝试过用最古老的方式给自己“造一个家人”。几个月,什么都没有发生。他们去医院做过检查,报告一切正常。医生也找不到原因,只能反复说“再等等”。
“我们突然意识到,”男人低声说,“也许不是我们的问题。”
他们听到社区在呼吁家庭接纳失去父母的孩子。最开始只是想帮忙,后来却发现,那可能是他们唯一还能做出的选择。
“对孩子来说,是被带走。”女人说,“对我们来说,是被救回来。”
他们签字的时候,手一直在抖。孩子被抱起来的那一刻,哭得很轻,只是下意识地抓住了女人的衣领,像抓住一件不会消失的东西。
那对夫妻一直道谢,说了很多次。林芮芮送他们到门口,看着他们的背影消失在街角。街道很空,空得不像是一个还有未来的地方。
当天晚上,她把这件事告诉了卢卡。卢卡正在整理新一批来自废墟邮局的资料,听完之后,没有立刻说话。
“我有个朋友,”他说,“以前是做试管婴儿的医生。”
林芮芮抬头。
“灾难之后,他的客户突然多了很多。”卢卡继续说,“几乎所有人都说同一件事——自然生殖不行了。”
“他们想做试管。”他说,“不是为了优生,就是想要一个孩子。”
卢卡停顿了一下。“政府已经禁止了。”
“理由是资源有限。”他说,“优先级不允许。”
房间里安静下来。林芮芮把当天的记录翻到最后一页,用笔画了一条横线。
“灾后只有一件事在发生。”她说。
“人口在下降。”她合上本子,语气依旧平稳:“而且,没有新生儿。”
卢卡是在整理第三轮回信时,意识到问题不对劲的。起初只是一个名字。他在不同来信中反复看到同一个失踪者的提问,却得到完全相反的答案——
有的回信说:“我们这里从来没有这个人。”
有的却说:“他在,我们一起参加过社区会议。”
不是记忆模糊,也不像误会。那些回信附带的细节过于具体,具体到时间、地点、旁人反应,无法简单归类为错误。
卢卡把所有涉及“是否存在某人”的回信单独拉出来,贴满了一整面墙。
很快,他发现了更可怕的规律。
有些名字,只存在于这个世界,在回信的世界中完全缺席。
有些名字,只存在于回信的世界,在这里从未出现。
而还有极少数名字同时出现在两个世界中。
他把这些名字用不同颜色标注。
红色:只在本世界
蓝色:只在回信世界
黑色:两个世界都存在
黑色,少得惊人。
卢卡盯着那一小撮名字,看了很久,忽然站起身,从柜子里翻出一支很久没用过的马克笔。
他在白板上画了两个圆。
“这是我们。”他说。“这是他们。”
两个圆分开时,解释不了现象;完全重合,又明显不对。于是他慢慢把它们推近。两个圆相交,重叠出一小块区域。
“并集,是所有存在过的人。”他说,像是在给一个并不存在的听众讲课。
“交集,是两个世界都承认存在的人。”
他把那一小块区域涂黑。
“问题是,”卢卡低声说,“为什么是他们?”
他把黑色名字写进交集区,很快发现了第二层规律——这些人,几乎全都是社会精英。学者、组织者、技术骨干、公共人物。不是数量最多的那类人,却是结构最关键的那类。
那天夜里,他冒险在回信中加了一句新的问题:“你们的世界,一共有多少人?”
这个问题很危险,也很基础。几天后,回信来了。字迹很稳,没有情绪:“十亿人。”
卢卡盯着那行字,手指慢慢收紧。十亿。不是大概,不是估计,是一个过于整齐的数字。
他开始回溯。
这个世界的人口统计——也是十亿。
最初消失的比例——七分之六。
宠物消失的比例——同样是七分之六。
他在白板上画下第三个圆、第四个、第五个。
七个圆。
大小完全一致。它们彼此分离,却在某些位置轻微重叠。重叠区域很小,却在每一个圆之间都存在。
“不是一个平行世界。”卢卡轻声说。“是七个。”
七个容量固定的子集合。每一个,都是十亿人。而那极少数重叠的人——不是随机出现的错误,而是被允许同时存在。
卢卡靠在椅背上,第一次感到一种接近真相的寒意。如果这是设计,那就意味着——世界不是自然分裂的。而是被切割、分配、管理过的。
他看着白板中央那一小块被反复涂黑的交集区域,终于说出了那个结论:“他们不是幸存者。他们是管理员。”
卢卡来得很突然。不是预约,也没有寒暄。他站在社区中心外面,像是已经在那里等了一会儿,手里什么都没拿,只是反复确认周围有没有人。
“我需要问你一件事。”他说。
林芮芮点头,把他带进一间空着的教室。桌椅被推到一边,墙上还贴着孩子们画的画,颜色鲜艳,却和谈话的内容毫无关系。
卢卡没有绕弯子。“元礼,有什么特别的地方?”
这个问题太直接了。林芮芮的第一反应是沉默。她不是不知道答案,而是不确定自己是否应该说出口。那已经不只是她的私人感受,而是一个可能改变所有人认知的切口。
“你为什么这么问?”她反问。
卢卡看着她,语气很平稳:“因为在所有交集里,他出现得太频繁。”
她低下头,看了一会儿桌面。
“他……”她开口,又停住,“他经常在不该知道的时候,知道一些事。”
她抬起头,像是在确认卢卡是否真的准备好听。
“他会临时离开。”她说,“理由都很合理,但时间总是对得太准。”
“有些地方,他不可能出现过,可是有人在回信里见过他。”话说到这里,已经足够了。
卢卡没有露出惊讶的表情,只是轻轻点了点头。
“那就对了。”他说。他拉过一把椅子,坐下,语速不快,却异常清晰。
“如果这是一个系统,”他说,“那它不可能把所有数据放在一个地方。”
“数据库会分散存储。”他在桌上用手指比划,“最常见的是按行分散——每一行是一个完整个体,被分到不同节点。”
“这样读写效率最高,也最符合‘人被完整放进一个世界’的逻辑。”
林芮芮听得很专注。
“但有另一种方式。”卢卡继续说,“按列分散。”
“比如身份、记忆、权限,被拆开,分布在不同节点。”
“这在平时不常用,但在需要跨系统访问的时候,非常有效。”
他抬眼看她。
“如果一个人,既在这个世界,又在别的世界,那他很可能不是被完整复制,而是拥有多线程访问权限。”
林芮芮皱眉:“不会冲突吗?”
“会。”卢卡说,“所以必须有刷新机制。”
“数据库刷新,不能同时写同一条记录。要么加锁,要么排队。”
“多线程如果不处理好,会出现状态不一致、记忆重叠、时间错位。”
他说到这里,语气第一次变得低了一点。
“这也是为什么,那些人看起来总是提前一步。”
林芮芮沉默了很久。
“所以你觉得,”她慢慢说,“元礼不是异常。”
“他是设计的一部分。”卢卡回答。
窗外有孩子跑过,脚步声很轻。林芮芮站起身,像是做了一个决定。“下次他再被叫走,”她说,“我会跟着。”
卢卡看着她,没有劝阻。“你不用告诉我结果。”他说,“只要确认一件事就够了。”“他,是不是在刷新。”