1.2.1 理解問題
1.2.1 理解問題
從實踐角度看,在設(shè)計算法之前,我們首先需要對給定的問題有完全的理解。我們應(yīng)該仔細閱讀問題描述,有疑惑就提出來。試著手工處理一些小規(guī)模的例子,考慮一下特殊的情況,有必要時再繼續(xù)提出疑問。
有幾類問題會頻繁出現(xiàn)在計算機應(yīng)用中,我們會在下一節(jié)中進行討論。如果待解問題屬于其中的一類,就可以用一個已知的算法來求解。當(dāng)然,了解這些算法如何運作及其優(yōu)缺點,對解決問題是有幫助的,尤其是在我們不得不從幾個可用的算法中選擇一個時。但更常見的情況是我們無法找到一個完全可用的算法而不得不自己設(shè)計,這往往是一項有趣而又困難的工作。這時,本節(jié)所介紹的一系列步驟會有所幫助。
算法的輸入,確定了該算法所解問題的一個實例(instance)。嚴(yán)格確定算法需要處理的實例的范圍是非常重要的(例如,回憶一下前一節(jié)中討論的三種最大公約數(shù)算法,它們能處理的實例范圍是不同的)。如果不這樣做,算法也許能夠正確處理大多數(shù)輸入,但遇到某些“邊界值”時就會出錯。記住,正確的算法不僅應(yīng)該能處理大多數(shù)常見情況,而且應(yīng)該能正確處理所有合法的輸入。
因此,不要對算法解題的第一步敷衍了事。否則,就要冒不得不返工的風(fēng)險。