14 分头行动并行搜索(第3/4页)

“我真的什么都不该说了。都只是猜测。”

“什么叫‘这种事’?”Frank低吼了一声。

“她认为这件事的幕后者准备在几天后攻击城堡。”

Frank跳了起来,叫道:“你怎么不早点说?”

“这只是猜测。”Socks重复道。

“那也不是瞎猜的。她一定有这样猜测的原因,”Frank说道,“不是吗?”

“嗯,不是完全瞎猜的,”Socks说道,“这是基于被偷的那个面具猜测的。这些魔法神器在满月的时候力量最强,而两天后就是满月了。”

“所以这个面具到底是干什么的?”Frank问道。他开始焦急地四处踱步了。

Socks犹豫了一下,说道:“这是一个力量非常强大的器物,”当他意识到Frank目光中的愤怒后,他加快了语速,“它的学名是外表组合面具。它在几百年前的Great SlugWar中丢失了。大家都以为它就这样遗失了,直到Ann公主在一次出征的途中找到了它。她是在……”

“所以它是干什么用的?”Frank不耐烦地问道。

“它可以让戴上它的人看起来像另外一个人。学者们认为它使用了一个巨大的并行搜索。它会对每一个面部特征都进行一次搜索。戴上它之后,你的鼻子会变成你想变成的人的鼻子那样,眼睛会……”

“一个完美的伪装?”Frank说道。

“对!”Socks赞同道。

Frank咒骂了一声,问道:“那城堡呢?为什么Gretchen认为他们会攻击城堡?”

“她没有说,”Socks承认道,“也许那部分的确是她猜的。”他补充道。不过显然他并不相信自己所说的。

Frank也并不相信。

“很抱歉之前没有提过这事,”Socks说道,“是因为没有任何证据……”他看起来痛苦极了。

“还有什么你没有告诉我的?”Frank盯着Socks问道。

Socks想了很久,回答道:“没有了。”

“全都告诉我了?”

“我知道的全都告诉你了。”Socks谨慎地说道。

Frank深吸了一口气,抬头看了看船帆。他多希望此时船能走得更快一些。过去一小时里,风几乎停了。现在的TCP Flyer号几乎是一步一步地爬向他们的目的地。

Frank在头脑中规划了一下他们接下来几天的时间安排。他不知道他们还有没有足够的时间。即使是三个人分头行动,也不一定能追查出足够多的东西。更糟的是,在TCP Flyer号靠岸以前,他们根本没有办法开始并行搜索。现在,他们能做的只是乖乖待在这艘船上而已。

警用算法导论:并行算法

节选自Drecker教授讲义

并行算法所做的,是将一个问题分成数个小块,并同时在这些小块上执行计算,最后再将结果组合起来。由于将这些计算任务分给了不同的人同时执行,所以相比只有一个人来执行,并行算法可以更快地完成计算。考虑一个例子:我们在一幢废弃建筑中寻找逃犯,这种情况下能调动的警官越多,能同时搜索的房间就越多,因而也就能更快地找到逃犯。如果有30间房和30个警官,他们便可以在同一时间搜索所有的房间。

想要设计一个高效的并行算法,有两点很重要:第一是如何高效地将计算任务分割成互相独立的单元,第二是如何在最后将结果组合起来。有些问题并行起来非常容易,比如,你想在一大堆书卷中找一个线索,就可以很容易地将这些书卷分成数小堆,并让每个人负责找其中的一小堆。

然而相比之下,有些算法就很难甚至无法来并行计算。例如,要审问一个犯罪嫌疑人,即使有100个警官,审问的速度也无法加快。这个问题从根本上讲就是需要一步一步来的:你的下一个问题取决于犯罪嫌疑人对上一个问题的答案。而且更重要的是,犯罪嫌疑人同时只能回答一个问题。我曾经见过八个警官同时对一个犯罪嫌疑人大喊大叫,然而这并没有让审问的进度有任何加快。