算法是指解題方案的准確而完整的描述。即是一組嚴謹地定義運算順序的規則,並且每一個規則都是有效的,且是明確的,沒有二義性,同時該規則將在有限次運算后可終止。
1)算法的基本特征
(1)可行性:由於算法的設計是為了在某一個特定的計算工具上解決某一個實際的問題而設計的。
(2)確定性:算法的設計必須是每一個步驟都有明確的定義,不允許有模糊的解釋,也不能有多義性。
(3)有窮性:算法的有窮性,即在一定的時間是能夠完成的,即算法應該在計算有限個步驟后能夠正常結束。
(4)擁有足夠的情報:算法的執行與輸入的數據和提供的初始條件相關,不同的輸入或初始條件會有不同的輸出結果,提供准確的初始條件和數據,才能使算法正確執行。
2)算法的基本要素
一是數據對象的運算和操作,二是算法的控制結構。
(1)算法中對數據的運算和操作
算法實際上是按解題要求從環境能進行的所有操作中選擇合適的操作所組成的一組指令序列。即算法是計算機所能夠處理的操作所組成的指令序列。
(2)算法的控制結構
在算法中,操作的執行順序又稱算法的控制結構,一般的算法控制結構有三種:順序結構、選擇結構和循環結構。
3)算法設計的基本方法
(1)列舉法:基本思想是,根據提出的問題,列舉出所有可能的情況,並用問題中給定的條件檢驗哪些是滿足條件的,哪些是不滿足條件的。
(2)歸納法:基本思想是,通過列舉少量的特殊情況,經過分析,最后找出一般的關系。
(3)遞推:是從已知的初始條件出發,逐次推出所要求的各個中間環節和最后結果。本質也是一種歸納,遞推關系式通常是歸納的結果。
(4)遞歸:在解決一些復雜問題時,為了降低問題的復雜程序,通常是將問題逐層分解,最后歸結為一些最簡單的問題。分為直接遞歸和間接遞歸兩種方法。
(5)減半遞推技術:減半遞推即將問題的規模減半,然后,重復相同的遞推操作。
(6)回溯法:有些實際的問題很難歸納出一組簡單的遞推公式或直觀的求解步驟,也不能使用無限的列舉。