26 启发式搜索(第2/2页)

但是,在目前的情况下,Frank甚至连模糊的线索也没有了。他已经用尽大部分可靠线索,早就开始凭猜测和怀疑办案了。如果想要取得任何进展,就还需要更多信息。他转向自己第二种最可信赖的搜索法:当走进死胡同时,收集更多信息。他需要知道更多有关魔法面具的信息:如何使用面具,何种防御魔法能够挫败它。面对这种情况,他必须要找到一位专家才行。

警用算法导论:启发式搜索

节选自Drecker教授讲义

启发式搜索是依据经验来帮助算法快速达到目标。你可能亲耳听某些警察说启发式搜索法只不过是随意乱猜,但你也能看到这些警察同样是在依靠过去帮过他们的那些经验技巧和法则。当然,与你所能得到的信息一样,不同的启发式搜索算法质量不同,认清这一点是非常重要的。

启发式搜索算法的一个最显而易见的例子是在生活中导航。不管你要穿越蜿蜒的迷宫、寻找一个未知城市,还是要找到通往餐厅的路,你都会发现自己在使用启发式搜索作为指导。如果有两条道路,你要先走哪一条?一种通常可靠的常见搜索法是根据简单的距离测量来进行优先选择。我喜欢的方法是使用“和鸟类飞翔路径”一样的距离测量法:如果路上没有挡路的东西,目标有多远?在实践中,这种搜索法意味着我总是要选择看起来让我离目标更近的路径——至少这条路径的方向是正确的。在这条路上,我可能会走进几个死胡同,但就整体而言,我发现这是一种有效的搜索法。

当然,还有很多糟糕的启发式搜索法。警察们如果在使用新的搜索法时没有仔细检查的话,很容易让自己深陷麻烦中。几年前,一位年轻的警察创造了一种特别不好的搜索法。在捣毁一个走私集团取得前所未有的成功之后,他认为所有的调查必须从码头上开始。事实证明这种启发式搜索法是错误的,并没有帮助他朝正确的方向进行调查,而是经常让他很快就走进死胡同。在18次的调查失败后,他的警长就让他永远从事巡逻码头的工作了。

要注意启发式搜索并不是胡乱猜测,而是需要在包含一些有用信息的基础上根据具体问题情况正确使用。