啟發式方法(試探法)是一種幫你尋求答案的技術,但它給出的答案是具有偶然性的(subject to chance),因為啟發式方法僅僅告訴你該如何去找,而沒有告訴你要找什么。它並不告訴你該如何直接從A 點到達B 點,它甚至可能連A點和B點在哪里都不知道。實際上,啟發式方法是穿着小丑兒外套的算法:它的結果不太好預測,也更有趣,但不會給你什么30 天無效退款的保證。
駕駛汽車到達某人的家,寫成算法是這樣的:沿167 號高速公路往南行至Puyallup;從South Hill Mall 出口出來后往山上開4.5 英里;在一個雜物店旁邊的紅綠燈路口右轉,接着在第一個路口左轉;從左邊褐色大房子的車道進去,就是North Cedar 路714 號。
用啟發式方法來描述則可能是這樣:找出上一次我們寄給你的信,照着信上面的寄出地址開車到這個鎮;到了之后你問一下我們的房子在哪里。這里每個人都認識我們——肯定有人會很願意幫助你的;如果你找不到人,那就找個公共電話亭給我們打電話,我們會出來接你。
算法和啟發式方法之間的差別很微妙,兩個術語的意思也有一些重疊。就本書的目的而言,它們之間的差別就在於其距離最終解決辦法的間接程度:算法直接給你解決問題的指導,而啟發式方法則告訴你該如何發現這些指導信息,或者至少到哪里去尋找它們。
----------------------------------------------------------------------------------------------------------------------------
從上面的啟發式算法的解釋可以看出,啟發式算法的難點是建立符合實際問題的一系列啟發式規則。啟發式算法的優點在於它比盲目型的搜索法要高效,一個經過仔細設計的啟發函數,往往在很快的時間內就可得到一個搜索問題的最優解,對於NP問題,亦可在多項式時間內得到一個較優解。