搜索 —— 深搜的剪枝技巧
【概述】
搜索算法的時間復(fù)雜度大多是指數(shù)級的,難以滿足對程序運行時間的限制要求,為使降低時間復(fù)雜度,對深度優(yōu)先搜索可以進行一種優(yōu)化的基本方法——剪枝。
搜索的進程可以看做是從樹根出發(fā),遍歷一顆倒置樹(搜索樹)的過程,所謂剪枝,就是通過某些判斷,避免一些不必要的遍歷過程,形象的說,就是減去搜索樹中的某些枝條。
顯而易見,應(yīng)用剪枝優(yōu)化的核心問題是設(shè)計剪枝判斷方法,即確定哪些枝條舍棄哪些枝條保留,設(shè)計出好的剪枝判斷方法,可以使得程序運行時間大大縮短,否則會適得其反。
剪枝的原則:正確、準(zhǔn)確、高效
【優(yōu)化技巧】
1.優(yōu)化搜索順序
在不同的問題中,搜索樹的各個層次、各個分支之間的順序不是固定的,不同的搜索順序會產(chǎn)生不同的搜索樹形態(tài),其規(guī)模大小也相差甚遠。
2.排除等效冗余
在搜索過程中,若能判斷從搜索樹當(dāng)前節(jié)點上沿某幾條不同分支到達的子樹是相同的,那么只需對其中一條分支執(zhí)行搜索。
3.可行性剪枝
可行性剪枝也叫上下界剪枝,其是指在搜索過程中,及時對當(dāng)前狀態(tài)進行檢查,若發(fā)現(xiàn)分支已無法到達遞歸邊界,就執(zhí)行回溯。
4.最優(yōu)性剪枝
在最優(yōu)化問題的搜索過程中,若當(dāng)前花費的代價已超過當(dāng)前搜索到的最優(yōu)解,那么無論采取多么優(yōu)秀的策略到達遞歸邊界,都不可能更新答案,此時可以停止對當(dāng)前分支的搜索進行回溯。
【例題】
同題:Backward Digit Sums(POJ-3187):點擊這里
同題:靶形數(shù)獨(信息學(xué)奧賽一本通-T1447):點擊這里
同題:小木棍(洛谷-P1120 ):點擊這里
總結(jié)
以上是生活随笔為你收集整理的搜索 —— 深搜的剪枝技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图论 —— 生成树
- 下一篇: The Brand New Functi