幾個基本的演算法設計方法

2022-03-02 21:22:37 字數 741 閱讀 6257

1)、遞迴和遞推。遞迴和遞推是學習演算法設計的第一步。遞迴演算法是把大問題分解成相對較小的問題的過程,而遞推就是從小問題逐步推導出大問題的過程。無論遞迴還是遞推,都應該有初始狀態。

2)、搜尋、列舉及優化剪枝。搜尋在所有演算法中既是最簡單也是最複雜的演算法。說它簡單,是因為演算法本身並不複雜,實現容易;說它最複雜,是因為要對搜尋的範圍進行一定的控制,不然就會出現超時等問題。搜尋技術主要包括廣度優先搜尋和深度優先搜尋。當其餘演算法都無法對問題進行求解時,搜尋或許是唯一可用的方法。搜尋是對問題的解空間進行遍歷的過程。有時問題解空間相當龐大,完全遍歷解空間是不現實的,此時就必須充分發掘問題所包含的約束條件,在搜尋過程中應用這些條件進行剪枝,從而減少搜尋量。

3)、動態規劃(簡稱dp)。動態規劃的特點是能夠把很複雜的問題分解成乙個個階段來處理的遞推方法,動態規劃必須符合兩個特點:無後效性(乙個狀態的抉擇不會影響到更大問題的狀態的抉擇)及最優化原理(乙個大問題的最優性必須建立在其子問題的最優性之上)。動態規劃是競賽中經常出現的的型別,而且變化很大(有線性dp,環形dp,樹形dp等),難易跨度大,技巧性強,甚至還有dp的優化等問題。

4)、貪心。貪心演算法是所謂的「只顧眼前利益」的演算法。其具體策略是並不從整體最優上加以考慮,而是選取某種意義下的區域性最優解。當然使用貪心演算法時,要使得到的結果也是整體最優的。

5)、分治、構造等。分治就是把問題分成若干子問題,然後「分而治之」;構造是指按照一定的規則產生解決問題的方法。這兩種演算法都是在合理的分析題目後,通過一定的規律性推導,從而解決問題。快速排序可以認為是利用了分治法。

幾個基本的設計原則

物件導向的分析設計有很多原則,這些原則從思想層面上給我們指出分析設計的正確方向。而設計模式就是這些設計原則的一些具體體現,它是針對某個場景下某些問題的某個解決方案。乙個類應該僅有乙個引起它變化的原因 即它只有乙個職責 開閉原則 軟體實體應當對擴充套件開放,對修改關閉。黎克特制代換原則 任何基類可以出...

基本的幾個排序演算法

氣泡排序 第一次迴圈完畢,最小的在最上面。逐步處理 public sealed class bubble t where t icomparable if exchange 選擇排序 public sealed class select t where t icomparable 插入排序 演算法思...

語音增強的幾個基本演算法

前言 1 單通道語音增強 主要是 語音增強 書籍內容的梳理 內容會持續更新,內容為個人的理解,如果存在偏差或者錯誤的地方,還希望各位幫忙指出來。一 單通道語音增強 選讀 speech enhancement theory and practice 主要是自己的讀書筆記.第一章 第四章,主要介紹語音增...