严朔把自己锁在机房里三十六小时没出来。莫晓给他送了三次饭,第一次的盒饭他吃了两口,第二次的面包他咬了一口,第三次的泡面他根本没动,等莫晓再去收的时候,面条已经涨成了一坨,汤全被面吸干了,像一块灰色的海绵。白玲从心理学会请了假,搬了一把椅子坐在严朔旁边,两个人一个看算法逻辑,一个看心理模型,偶尔说一两句话,说的都是林子川听不懂的东西。
林子川没有催。他知道催没用。这种事只能等。
第三十七个小时,严朔从显示器后面探出头来,眼镜下面的黑眼圈像被人用墨笔画了两道。他看着林子川,嘴唇动了一下,发出了一个很轻的声音:“找到了。”
林子川从沙发上站起来,走到屏幕前面。严朔把屏幕转了半个圈,让林子川能看到上面的东西——一张彩色的拓扑图,节点密密麻麻,连线错综复杂,看起来像一团被猫玩过的毛线。
“这套算法很精密,精密到几乎完美。”严朔的声音沙哑,嗓子像被砂纸打过,“它从海量数据里筛选‘高危人群’的准确率,根据我的模拟测算,至少在百分之九十以上。匹配诱导方案的精准度更高,百分之九十五。也就是说,一百个被它盯上的人里,有九十五个会被它成功地推向自杀。”
白玲在旁边补充了一句:“剩下的那五个,不是因为算法不准,是因为目标在算法运行期间,遇到了算法无法预测的变量。”
林子川的眼睛眯了一下:“什么变量?”
“完全随机的善举。”白玲的手指在屏幕上点了一下,那个节点放大了,显示出一行数据,“算法的一切判断,都基于历史数据——你的社交记录、浏览历史、消费习惯、位置轨迹。它认为你是什么样的人,是根据你过去的行为推断的。但如果有一天,你遇到了一件完全没有预兆的好事——一个陌生人突然送你一束花,一个路人帮你捡起了掉在地上的钱包,一个邻居敲你的门给你送了一碗汤——这些事不在任何数据库里,算法无法预测,也无法纳入它的‘画像模型’。”
白玲转过身,看着林子川。
“算法是冷的,但人的善意是随机。算法算得了一切概率,算不了人心。”
房间里的空调嗡嗡响。王磊靠在墙上,抱着胳膊,没有说话。莫晓从桌上抬起头来,头发贴在脸上,眼睛里有血丝,但亮得像两盏灯。
“也就是说,如果我们能制造足够多的‘随机善举’,就能干扰算法,救下那些被它盯上的人?”林子川问。
严朔和白玲对视了一眼。白玲点了点头:“理论上可行。但有两个问题。第一,这种干扰不是永久的,只能打断算法当前阶段的诱导。只要目标还在‘蜂巢’的数据监控下,算法就会重新计算,调整策略,继续诱导。我们需要持续地、不间断地投放‘随机变量’,才能保持干扰效果。第二——”
她顿了一下,推了推眼镜。
“第二,这样做需要大量的人力。每一个被算法盯上的人,都需要至少一个志愿者,在他最孤独、最脆弱的时候,给他一个随机的、善意的接触。八十多个高危目标,就需要八十多个志愿者。而且不能是固定的、计划好的——算法会识别出模式,一旦‘随机’变成了‘规律’,它就会把它们纳入模型。”
林子川站在窗前,看着外面的天空。天灰蒙蒙的,云层很低,像一块巨大的、脏兮兮的抹布盖在城市上空。他转过身,看着严朔。
“你的模拟模型,需要多长时间能验证这个方法的有效性?”
严朔的手指已经在键盘上了。他敲了十几下,屏幕上弹出了一个进度条,蓝色的,走得很快。
“两个小时。”
“我等。”
那两个小时里,林子川没有离开机房。他坐在沙发上,看着那个进度条一点一点地往前移动,像一只很慢很慢的蜗牛在爬一面看不到顶的墙。陈雨婷给他发了消息,问他吃没吃饭,他回了两个字“吃了”,其实没吃,不饿。赵晚秋也发了消息,是一张照片,拍的是安全屋窗外的一棵树,树上有一只鸟,拍糊了,看不清是什么鸟。
进度条走完了。
严朔把模拟结果投在屏幕上,三个人头挤在一起看。林子川看了,没看懂,但看懂了严朔的表情。那个表情不是“有用”,是“有用得超出预期”。
“在模拟环境里,每个高危目标每三天至少接触一次‘随机善意’,连续干预三周,目标的脆弱指数平均下降了百分之四十一。其中百分之三十七的目标完全退出了高危区间。”严朔的声音还是那种没有起伏的语调,但说这些话的时候,他的语速比平时快了一点,快得不仔细听根本听不出来。
白玲在旁边补了一句:“如果干预停止,大部分目标的脆弱指数会在两周内反弹。这不是治疗,是维持。”
“够了。”林子川站起来,“能救一个是一个。”
赵厅长的电话是在晚上打的。林子川把方案简要汇报了,说了原理,说了方法,说了需要的人力。电话那头沉默了很久,久到林子川以为赵厅长已经挂了。然后那个苍老的、疲惫的声音传了过来。
“你要多少?”
“全市的社工和志愿者,先调一百人。不够再加。”
“怎么培训?”
“白玲负责。她是心理统计学的专家,她知道哪些行为能最有效地打破孤独状态。不需要那些人懂算法,只需要他们在对的时间、对的地点,做一件对的小事。”
赵厅长又沉默了几秒。电话那头传来打火机的声音,赵厅长在抽烟。他戒烟很多年了,但每次遇到特别难的决定,他就会重新点上。
“我给你批。”赵厅长的声音从烟雾里透出来,闷闷的,“但你要答应我一件事。”
“您说。”
“找到Q。不管他在哪,不管他用什么身份,找到他。这个算法一天不关,就会有新的人被盯上。八十个只是开始,不是结束。”
林子川握着手机,看着窗外那片被路灯照亮的街道。“我答应。”
挂了电话,林子川转身看着白玲。白玲已经从包里掏出了笔记本,开始写培训方案了。她的字很小,很密,每一页都写得满满当当的,像蚂蚁搬家。
“白老师,什么时候能开始?”
白玲头也没抬:“明天。志愿者名单王磊给我,我分批次培训。第一批今天下午就能上岗。”
林子川看了看墙上的钟。凌晨一点。今天,就是今天。
他走出技术科的时候,走廊里的灯还是声控的。他的脚步声把灯激活了,惨白的光从头顶倾泻下来,把他的影子投在地上。他没有走电梯,从楼梯走下去。楼道里的灯比走廊的暗,黄黄的,像老式灯泡的光。他的皮鞋踩在台阶上,声音在空荡荡的楼梯间里回荡,一下一下的,像有人在很远很远的地方走楼梯。
出了省厅大门,夜风吹过来,凉飕飕的。他站在台阶上,看着停车场里那几辆孤零零的车。他的那辆白色轿车停在角落里,车顶上落了一层灰,在路灯下灰蒙蒙的。
他没有上车。他站在台阶上,掏出手机,翻到陈雨婷的对话框,打了一行字:“妈睡了吗?”
回复来得很快:“睡了。你也早点睡。”
林子川看着那行字,看了几秒,打了两个字:“晚安。”
他把手机收进口袋,站在台阶上,看着远处的天际线。城市的灯火在夜色中明明灭灭,像一场永不落幕的烟火。那些亮着的窗户后面,有八十多个正在被算法推着走向深渊的人。他们不知道有人在地图上标出了他们的名字,不知道有一群志愿者正在接受培训,准备在他们的生活里制造一场精心设计的“意外”——一个善意的微笑,一句温暖的问候,一碗不请自来的汤。
林子川走下台阶,走向他的车。
明天,这场与算法的赛跑就正式开始了。他不知道能不能赢,但他知道不能停。跑不过算法,就跑过时间。跑不过时间,就跑过那些藏在数据后面的眼睛、那只看不到的手、那个躲在字母后面的魔鬼。
他拉开车门,坐进去,发动引擎。车灯亮了,照亮了前面那排冬青树。他挂挡,松刹车,车子驶出了停车场。后视镜里,省厅的大楼在夜色中越来越小,那面挂在楼顶的警徽在灯光的照射下发着光,像一只永远睁着的眼睛。
林子川开上了高架桥,桥上没有车,只有他一个。城市的灯火在他的两侧铺展开来,像两条平行线,永远不相交,永远不停止。
他踩了一脚油门,车速提了起来。窗外的风灌进来,吹在脸上,冷得他眯了一下眼。他把空调的温度调高了一档,暖风从出风口涌出来,车里的温度慢慢升了上去。
前方的路很长,夜也很长。
但他不急。路再长,也是一步一步走的。夜再长,也是一秒一秒过的。
