1. 程式人生 > >軟考——演算法

軟考——演算法

演算法:對特定問題求解步驟的一種描述;它是指令的有限序列;在一定規範內輸入,在有限時間內獲得所要求的輸出;

特點

1)有窮性:一個演算法總是在執行有窮步之後結束,每一步都可以在有窮時間內完成; (有窮步,有窮時間); 2)確定性:演算法每條指令必須有確切的含義;且演算法只有唯一的一條執行路徑; 3)可行性:演算法中描述的操作都可以通過已經實現的基本運算的有限次執行有限次來實現; 4)輸入:一個演算法有零個或多個輸入,這些輸入取自某個特定的物件的集合; 5)輸出:一個演算法有一個或多個輸出,這些輸出同輸入有著某些特定關係的量;

一個好的演算法需要滿足以下條件: 1)時間複雜度最優化; 2)空間複雜度最優化; 3)正確性; 4)可讀性; 5)健壯性:指一個演算法對不合理資料輸入的反應能力和處理能力(容錯能力);

迭代法

不斷用變數的舊值遞推新值的過程;(分為近似迭代和精確迭代)(例如:二分法就是近似迭代法)

窮舉搜尋法

對於要解決的問題,列舉出所有可能情況,逐個判斷哪些是符合問題所要求的條件,從而得到問題的解; (適用於規模不大,沒有合適演算法的情況)

遞推法

通常通過計算機前面的一些項得出序列中指定項的值;通過前面的值推出後面的值;

遞迴法

方法調方法;程式呼叫自身;

分治法

把一個複雜的問題分成多個相似的子問題,再分解,直到子問題可以簡單直接求解; 分而治之;將問題分解、解決、合併;

動態規劃法

求解包含重疊子問題的最優化問題的方法;具有一個標準數學表示式和明確清晰的解題方法;

回溯法

這裡寫圖片描述 選擇好的條件向前搜尋,以達到目標,當搜尋到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇; (當前層找不到解決問題的辦法就返回上一層,繼續查詢)

貪婪法(貪心演算法)

逐步構造最優解的方法;

分支界限法

對有約束條件的最優化問題的所有可行解進行空間搜尋,在界定範圍內尋找可行解; (類似於高中尋找最優解的問題)

概率演算法

演算法在執行過程中隨機選擇下一個計算步驟;