千万别惹计算机教授。
12月中下旬的周末,圣母大学计算机系终身副教授史弋宇计划开车带一家人由芝加哥出发,经纽约前往百慕大度假旅行,在途中一座加油站停车检查车胎时,遇到了两名持枪劫匪。
接下来,劫匪们的灾难开始了。
一
2005年,我从清华大学电子工程系毕业后,赴美深造,现在在一所大学的计算机系任副教授。
寒假来临,女儿一直嚷着寒假要去个海岛度假,以满足她扮演《海洋奇缘》中莫阿娜公主的愿望,而太太怀孕了,无法前往有寨卡病毒(一种病毒,主要通过蚊子传播)的地区。我研究了好久,最终确定了由芝加哥经纽约前往百慕大的度假旅行。
按原计划,我们一家人开车从印第安纳的南本德市出发,大约中部时间12:00 到达芝加哥中国城。途中,我发现汽车提示胎压异常,决定午饭后开车前往中国城附近的一家加油站给轮胎充气。
当时加油站里的车并不少,也有些人在店里买东西,没有任何危险的征兆。
加油站的气泵非常简陋,需要投4个币才能使用,而且没有提供胎压读数,我决定换个加油站试试,上车后才想起似乎右前轮的气门帽并没有拧紧,打算下车拧紧。
作者图 | 加油站
刚下车,两个身材不高、大约20来岁的黑人从后面的一辆车上下来并靠近我,其中一个用一把枪指着我,低声说:“看到这把枪了吗?把你的钱包和钥匙交给我。”他重复说了几遍,神情紧张,另一个劫匪则钻进驾驶室让所有人下车。
我考虑到车里还有孕妇和小孩,为安全起见,我配合地把钱包递给他,他打开后从里面拿出所有现金,随后把钱包还给我,又催我赶紧交出车钥匙。与此同时,车里的另一个劫匪继续催促所有人下车。
劫匪并没有关上驾驶座的门,我趁此机会把手机扔到车门的夹袋里,希望对后续追踪有所帮助。
在大家都下车后,劫匪一溜烟地把车开跑了。而我一家所有的行李,包括护照、绿卡等等,都还在车尾箱里。
二
劫匪并没有抢走我太太的手机,她的手机就成了我们一家人唯一的通讯工具。
被抢之后我首先拨打911,第一次大约等了十几秒并没有被接通;第二次再打,还是没有成功,可见关键时候,911也不一定靠谱;第三次再打,终于通了。
我把情况告诉911接线员,却被告知:他们无法查询到我的车牌信息,让我去当地的警察局做笔录。
我被劫匪持枪抢了车,打911报警,居然还得自己去警察局做笔录,估计等我搞完,车都已经被赃车拆装店大卸八块了。
于是我继续拨打911。这一次接线员好了一些,在我又一次描述完案情后,接线员帮我转接到芝加哥中央警察局,对方的接线员又问了一遍情况说,这种情况你应该打给911啊。
我忍着气继续说:“我打了,是他们把我转过来的。”于是,接线员又帮我转回911。这次,911的接线员终于说派警察过来,此时离抢劫发生已经过去了大约十分钟。
又等了大约十分钟,和我想象中大量警车闪着警灯蜂拥而至的场景不同,只来了一辆警车。车上下来了两个警察,仔细地询问了案发的经过,包括有没有看清劫匪的长相、年龄等。
我对警察说,你们能不能先帮我去追一下车子,这些信息我慢慢给你提供。但警察回应:别担心,一旦获得了所需的所有信息,会将你的车牌信息输入系统并发布给执行的警察。
当警察处理完时,离我的车被劫走已经过了整整半个小时。
接着,警察发现加油站里布满了监控摄像头,一个警察进到店里要看监控。不一会儿,他就出来了,问另一个警察:我不知道怎么上传这些视频,你会吗?另一个警察回答:我也不会啊。最后,他们告诉我:没关系,会有侦探来料理这个视频, 我们的事情就办到这里啦!
他们打算开车离去,但刚上车又下来问我:
“你的马自达汽车是两门的对吧?”
这时我已经完全无语了:“长官,是个四门的SUV。”
“OMG. It’s an SUV? F*ck!”
警察立刻冲回车里拿起对讲机说:“这不是一辆小汽车,是一辆四门的SUV。”
这时候离我的车被抢已经过去了四十多分钟,我想起了一个关键问题:我把手机留在了车里!我告诉他们,希望对破案有所帮助。
警察也一脸兴奋:“是iPhone手机吗?有没有开追踪功能?”
“不,是台华为手机。”
“什么手机?”
“华为,H-U-A-W-E-I.”
“没听说过华为,它能追踪吗?”
“能,但是得花点时间。你们不能直接追踪手机信号吗?”
“不能,那都是电影里的情节,通过手机信号根本不能追踪手机。”
听到这里,我又想骂人了,如果不能追踪,手机上的Sprint’s Family Locator (家庭定位)和 AT&T’s Family Map(家庭地图) 都是骗人的吗?依照我的了解,三角追踪是很容易的。
我决定试试自己手机里安卓的追踪功能,之前怕找不到手机,这个功能我一直开着。
如果我要登入手机账户,需要使用任职学校的email。但学校的email系统开启了两步验证,我在新的手机上登录时,需要先通过自己的手机或者办公室电话验证。这两条途径我都没办法使用,我本想打电话给学校IT,想想周末也没有人,我放弃了(事后我发现,其实IT部门是24小时随时待命的,如果我当时打电话,应该也能够解决这个问题)。
最后,我们一家人只能打车回家。
三
回到家已经傍晚,来不及吃晚饭,我找朋友借了台电脑,立刻赶回学校,利用办公室的电话通过了验证,登录了寻找手机的网页。不出所料,虽然最后登录的日期是当天,但已经无法显示实时位置了。后来,我发现这几个劫匪对电子产品的追踪功能非常清楚。
折腾了一天,回到家里,疲惫的我很快就进入梦乡。故事本该到此结束,但是我做了个梦,凌晨五点醒来时,事情有了新的转机。
我家中还有一把车钥匙。我梦到那把车钥匙上有个远程遥控,摁一下,车子就自己开回来了,而且所有行李都还在车上。
醒来时,我想到了一件事:当时在买车的时候,讨价还价了很久,最后价格实在压不下来时,就让他们给免费装了一个MMS(手机发动应用程序),可以利用手机远程发动汽车引擎,给车辆上锁和开锁。
我判断,既然能用手机远程控制车子,那在安装MMS时,一定也启动了 GPS定位的功能。
我打开电脑搜了一下,果然MMS还有一个附带功能,能帮助你找到停车地点。我立刻在手机上登录这个app,输入密码后,始终提示密码不正确;重设密码后,依然提示密码错误。最后,我在网上找到MMS的说明,仔细阅读后发现了另一种可能性:我没有续租MMS服务,因此它被停用了。
我尝试着在网上续租了一年的服务,很顺利地登录进了app。我在心里吐槽了一下,从软件工程角度来说,没有续租导致的无法登录居然显示密码错误,简直是汽车界UI设计的反面典型了。
除此之外,当我在app里找到“寻找汽车”的界面,界面上只显示一个红点和一个大圈,红点代表车的位置,大圈代表车的范围,右上角有距离显示81.8英里和相对误差+/- 22 英尺。界面上没有地图,也没有提供GPS坐标。
所以,我除了能知道自己和车的直接距离和相对位置,别的什么都不知道(后来发现,其实只有距离车很近的时候,相对位置才比较准;距离远的时候,相对位置可能是错的)。我还顺便看了一下,车子的引擎状态是关掉的,说明劫匪把我的车停在了某个地方。
不管怎么样,总算有了车的线索。我立刻拨打911,接线员说,这事儿不紧急啊,你直接联系芝加哥中央警察局吧,我们不管。
我又打给芝加哥警局,接电话的警员说,太好啦,这件事你得告诉负责你案子的侦探啊。不过今天周末,他不在办公室里,我帮你转接到他的语音信箱吧,这样他上班第一时间就能知道。
我耐着性子说:这种事情不太好拖吧,是不是越早越好?对方说:那你把GPS坐标给我,我们派人去看看。
我告诉他,我看不到汽车的坐标,只能看到车子和用户的距离以及相对方向。听到这话,对方说警力有限,不能帮我满大街找车。
最后,他给了一个非常有建设性的意见:不如你自己去找找?找到了以后可以给我们打电话,我们一定来解决剩下的事情。
警察靠不住就只能靠自己了。
四
那天是早上六点,我满怀歉疚地给一个平时还挺机灵的学生小王打了个电话,请他陪同我一起去芝加哥找车。小王二话不说就赶了过来,我们在全家人充满忧虑的目送中开车驶入了黎明前的黑暗里。
我把驾驶任务交给了小王,自己开始在车上进行一些信息搜集和准备工作。
首先,我得确定车的位置。按照MMS提示的直线距离,车的位置大概在芝加哥的南郊,一个以暴乱和枪击闻名的地区。
其次我需要估计安全距离。劫匪手里有枪,按照我的目测,枪的口径应该不超过9mm,一般有效射程是100米左右。如果保持车辆始终在移动的状态下,没有经过专业射击训练的枪手很难击中车里的人。我们只要始终警惕100米范围内,是否有人靠近就可以了。(注:此案为个例,请勿效仿)
查完这些,我心里稍微安定了一些。
不过,我发现MMS相对位置提示有问题。因为我们出发时,MMS提示车子位于正北方,而芝加哥位于正西方,但我判断劫匪肯定还把车留在芝加哥,我决定忽略方位提示,直接前往芝加哥。车子开上高速,很明显看到直线距离在快速减小,说明方向是正确的。
于是我们最终把车辆位置确定在了图中红色的区域里。
作者图 | 地图
在快到芝加哥南郊I-94 130th st出口时,MMS提示距离减小到2英里,我们从该出口下去转了一圈,发现周围都是公园,而且距离也没有继续减小,于是又开回I-94,继续前行。距离又开始减小,到了Roseland区域时,降到了1英里以下,但偏偏I-94在这里分叉了另一支高速 I-57 West, 我们又只好转到了I-57并在下一个出口 Halsted St下了高速。此时距离提示又增加到了2英里。
最终,我把车辆位置确定在了图中红色的区域里:
以下是该区域的放大地图:
下了高速以后,我们很快就进入了这片小区,我一度发现有一辆白色的小车一直跟在我后面。过了好几个街区以后,那辆车才消失不见。
我再次和小王约定:不管发生什么情况,尽量不要停车,如果一定要停车,一定要让车辆保持在D档(前进档)随时准备开动。
接着,整个事件中最有技术含量的部分来了:
因为相对方位并不靠谱,我选择了计算机算法中最直接的greedy approach(贪心算法),也就是沿着一个方向开,直到距离不再明显变小(这是说明我们前进的方向已经几乎垂直于我们和目标之间连线),再转到垂直方向的街道再继续搜寻。
“贪心算法”是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。简而言之,就是每一步都减少距离,所以是贪心算法。
作者图 | 地图显示离目标200英尺
就这样,我们在一片破败的小区中兜了一段时间以后,终于在S Eberhart Ave和101st St以及102nd St之间某个位置直接距离显示为200英尺,说明离目标已经很近了。此时小王发现路边有一辆非常新的豪车,和周围破败的建筑和其他车辆非常不协调,他怀疑那辆车是不是也是被偷来或者抢来的。
作者图 | 地图
但奇怪的是,我们并没有在路边看到我被劫的汽车,在周围其他街道上时,提示距离也大于200英尺,我完全没有办法进一步缩小距离。
转来转去,最后发现,其实在S Vernon大道和S Eberhart大道之间还有一条小路,这条路并没有名字,在谷歌地图上甚至没有显示,但在上面这张卫星图里面可以看到这条路的存在(红色标记左侧的第一条路)。于是我们从101st St上转入了这条小路,入口如下图:
当时时间大概是早上八点多一点,周围一个人都没有,我们保持缓慢的速度进入了小路。
一进入就发现MMS里提示的距离又开始明显下降,直到开过倒数第三间车库的时候,距离显示小于5英尺,MMS发出提示音:车子就在里面!
五
我们二人不敢多停留,在转到102街上后,我立刻拨打911,告诉接线员自己找到了被劫车辆。接线员问清了位置和所在的车辆信息后,让我们在原地等待,警察很快会到。
就在我们紧张地在路边等待的时候,小王提醒说,看看现在我们和被劫车辆的距离。我看了一下,大吃一惊:此时距离已经变成了1.5英里,而且引擎已经启动,说明车辆正在行驶中!
看来是打草惊蛇了。
我一边懊悔应该把车停到一个能看得到那个车库的位置,一边立刻决定要跟上马自达。不幸的是,MMS并不是设计用来追踪行驶状态下的车辆的,因此车的位置和距离更新不实时。
我们二人漫无目的地在路上行驶,希望有机会能看到这辆马自达。找了十多分钟后,两个警察来了,我向他们简单描述了如何寻找到被劫车辆的位置,告诉他们劫匪又跑了。
警察从我手里借走手机,让我们在路边等待,警察会去追踪。这时我告诉了警察如何使用MMS定位,并再三强调只能相信距离,不要去看相对位置。
警察拿走手机后,很快就开走了。但我决定继续在附近寻找,而不是在路边等待,一方面是碰碰运气,另一方面则是出于安全考虑,不想要停留在一个地方。
在接下来的一个多小时里,我和警察一共通了三次电话:第一次,警察问我那个追踪软件在哪里,是不是谷歌地图? 第二次,警察说距离很近了,0.4英里, 但没有看到车。我告诉他MMS还有个“panic”(警报)功能,手机上点击后可以让车发出很大的警报声;第三次,也就是最后一次,警察说没找到车,决定回来把手机还给我。
警察回来见到我后,和我抱怨了一通MMS是多么的垃圾和难用,问我是否还打算继续找?我说当然,警察说,那你找到后再打电话给我们吧,然后就开车走了。
我拿回手机,更新一下状态,发现引擎已经处于停止状态,说明车子又被停在了某个地方,距离显示是4.3英里。
我和小王又开始重复早上那套简单但行之有效的“贪心算法”方案。很快,我们就在位于2801 W 87th St的加油站里看到了被劫车辆。车子就停在图中那辆白色汽车左边的位置,打着双闪,无法看清车内是否有人。
作者图 | 汽车就停在加油站前
吸取之前的教训,这次我们把车也开进了加油站,停到图里黑色汽车所在的位置,确保能看到被劫车辆,随后再次拨打了911。
这次我直接告诉接线员:我看到了被劫车辆,就在我不远处,车里好像有人,他们还有枪。
我知道不把情况说得严重一些,他们是不会认真对待的。
果然,不到五分钟,第一辆警车就开来现场。随后的几分钟里,呼啦啦来了七八辆警车把加油站围了个水泄不通,下来的警察都穿着防弹背心,手放在腰间的枪上。一群警察小心翼翼地靠近那辆马自达,很快就确定了车里并没有人。
于是我也走过去,打开后尾箱,发现里面有自己的书包,装着单反和几个镜头的相机包,我太太的包,以及不知道是谁的一双崭新的Nike鞋。
一些证件丢了,好在重要证件和大部分财物都在,甚至还追回了一部分并不是我的“赃物”。车里弥漫着一股大麻的味道,后座上留下劫匪吃剩下的一些食物的袋子和可乐罐。他们完全没有来得及清理车里的大量证物,这让警方可以提取DNA和指纹。
在警察的告诫下,我没有再去碰其他任何东西。他们需要等到刑侦部门的人前来拍照取证。
几乎所有的警察都好奇我是如何在被抢不到24小时内,找到这辆车的。当大家听说我是一家大学的计算机系教授后,惊叹道:“他们不应该惹到计算机科学教授的头上!”
*本文首发于公众号:美国华人【ID:chineseamericans】