1.2.4 算法的設(shè)計技術(shù)
現(xiàn)在,算法解題的必要條件都已具備了,如何設(shè)計一個算法來解決一個給定的問題呢?這正是本書希望解答的主要問題,我們會講一些一般性的設(shè)計方法。
那么,什么是算法設(shè)計技術(shù)呢?
算法設(shè)計技術(shù)(也稱為“策略”或者“范例”)是用算法解題的一般性方法,用于解決不同計算領(lǐng)域的多種問題。
查看本書的目錄,你會發(fā)現(xiàn)本書大多數(shù)章節(jié)都是專門介紹某一設(shè)計技術(shù)的。它們提取出一些已被證實(shí)對算法設(shè)計非常有用的關(guān)鍵思想。基于以下原因,我們認(rèn)為學(xué)習(xí)這些技術(shù)是非常重要的。
第一,在為新問題(沒有令人滿意的已知算法可以解決)設(shè)計算法時,它們能夠給予指導(dǎo)。所以,學(xué)習(xí)這樣的技術(shù)正如“授人以魚,不如授人以漁”。當(dāng)然,這并不是說,我們遇到的每個問題都必須應(yīng)用所有的設(shè)計技術(shù)。但是放在一起,它們便構(gòu)成一組強(qiáng)大的工具,為我們?nèi)蘸蟮膶W(xué)習(xí)和工作提供便利。
第二,算法是計算機(jī)科學(xué)的基礎(chǔ)。每一門學(xué)科都傾向于對其主要研究對象進(jìn)行分類,計算機(jī)科學(xué)也不例外。算法設(shè)計技術(shù)讓我們可以按照內(nèi)在設(shè)計理念對算法進(jìn)行分類,所以,設(shè)計技術(shù)使我們能夠以一種自然的方式對算法進(jìn)行分類和研究。