7 调整算法,大胆逃离

头顶的甲板传来了沉重的脚步声,Frank环顾四周思考着如何应对这一突发状况,但貌似并没有选择的余地,唯一的一道舱门通向的正是头顶的甲板和从那走来的不速之客们。而他们所在的储藏室现在几乎空无一物——早在抵达Usb港口的时候,船员已经将货物全都卸下了船。试图藏在这里简直就如同站在角落里说“你看不见我”一样荒谬。

Frank一个接一个地排除掉了他们可能选择的应对方案,包括那通常都不怎么奏效的躺下装死的伎俩。这时,他看见Notation拿出她的徽章,立正站定在原地。

“你在想什么啊?”Frank嘘声道。

“我是一个正在执行侦查任务的警官。”Notation解释道。

Frank难以置信地摇了摇头。“这套‘我是警察,停下别动’的伎俩在这种时候根本没用。事实上,绝大多数时候它都没用。我们正在一艘走私者的船上调查一起偷窃警局财产的案件。警局里根本没人知道你在这,不是吗?我敢打赌,待会儿走过那扇门的人也知道这一点。”

Notation张开嘴,试图去争辩,但她最终闭上了嘴,将她的徽章放回了外套口袋中。这时,一群身形巨大、穿着出奇讲究的恶棍从门外涌了进来。他们在储藏室内散开,将Frank和Notation围了起来。

“女士们先生们,”Frank说道,“我们已经完成了对这艘船的检查。看起来你们并没有携带任何腐坏的鳗鱼。我们的工作是试图保证这个王国食品供应的安全。谢谢你们的耐心和配合,我们这就离开。”

似乎是对Frank这番话的回应,两个身形巨大的恶棍抓住了Frank的手臂。他们将Frank拎了起来,准备将他带回甲板上面。多年来的经验让Frank对此已有准备:他发明了一种姿势,可以让自己在这种时刻尽可能舒适。但即便如此,他还是能感觉到自己的手臂在慢慢地青肿起来。

“喂!”Notation叫道。看来她也同样被带出了储藏室。

走上甲板,看到阳光的一刹那Frank不由地眨了一下眼睛。那群恶棍将他带到了甲板的中间,随即把他丢到了木地板上。砰的一声,Notation也被丢到了Frank的身边。紧接着,那群恶棍再一次把他们围了起来。

Frank一边打量着抓他们的这群人,一边慢慢将自己调整到了一个坐着的姿势。恶棍们一动不动,随着船身来回摇摆,他们似乎在等人,看来他们真正的领头人还没到。Frank抓住这个机会,转向离他最近的一个恶棍。

“接下来你们想把我们怎么样?”Frank问道,“关起来?丢到船下面?交给雇你们老大的人?”

那个恶棍耸了耸肩说:“别看我,我只在这里工作了15天。”

“新手啊!”Frank说道。

Vinettee集团对保密有着狂热般的信仰,他们只会把行事计划告诉队里资格最老的人。新来的人则需要一步步证明他们的忠诚,慢慢得到提拔。所以要想知道任何有用的信息,Frank首先得找出船上资格最老的人。

Frank慢慢开始有了主意。Vinettee集团的这群恶棍从来都是按照资历高低的顺序来站位的。这是因为在Vinettee集团的体制内,每个人都有一位资历刚好在自己之上的人作为自己的导师——比如刚刚加入的新人的导师便会是原本队内资历最浅的人。而在这种集体行动的时候,大家都会站在自己的导师旁边。

所以这一圈恶棍说到底只是一个被首尾相连的按资历排列的有序数组。二分搜索法似乎可以派上用场,不过得做一点调整去适应这个新的数据结构:这群恶棍们站成了一个圆,而不是一条直线。不幸的是,Frank并不知道这个数组的起点和终点。然而很快他就想到了一个能快速找到资历最深的恶棍的算法。有了这个算法,Frank便能减少所需要询问的恶棍的数量,从而能尽可能地在自己被再次带走之前得到想要的答案。

他转向那位新人恶棍右边的那位,问道:“你呢?你是这里的老手了吗?”

“19天。”她答道。

有了这个信息,Frank几乎可以确定这群人是按资历由浅到深沿着逆时针方向排列的了。但他并不能完全确定,因为或许“15天”和“19天”便是这群人中资历最浅和最深的人了,虽然这种情况的可能性很小。Frank曾经有过草草率率便开始搜索的经历,结果可想而知,并不理想。因此在他真正开始搜索之前,他需要再找一个数据点。他选了剩下的恶棍中正中间的那位。

“你呢?”他问了刚来15天的恶棍对面的那位女人。

“37天,”她回答道,“你关心这个干什么?”