貪心演算法:單位權值價值大的優先。
演算法設計:①問題建模,②選擇什麼演算法?如何描述這個方法?,③這個方法是否對所有例項都得到最優解?如何證明?④如果不是,能否找到反例?
例2:投資問題
蠻力演算法(窮舉法),演算法效率c(m+n-1,m)= (m+n-1)!/m!(n-1)!
問題求解的關鍵
建模:對輸入引數和解給出形式化或半形式化的描述
設計演算法:採用什麼演算法設計技術 ,正確性—是否對所有例項都得到正確的解,分析演算法—效率
例3:排序演算法的效率
例4:貨郎問題
演算法的研究目標:
問題→建模並尋找演算法 演算法設計技術
演算法→演算法的評價 演算法分析方法
演算法類→問題複雜度估計 問題複雜度分析
問題類→能夠求解的邊界 計算複雜性理論
1.5 演算法及其時間複雜度
基本運算與輸入規模
演算法時間複雜度:針對指定基本運算,計算演算法所作運算次數。
最壞情況下的時間複雜度w(n)
平均情況下的時間複雜度a(n)
1.6演算法的偽碼表示
用偽碼表示演算法
偽碼不是程式**,只是給出演算法的主要步驟
**中有哪些關鍵字?
偽碼中允許過程呼叫
np-hard
1.7 函式漸進的界
大o符號:1.f(n) = o(g(n)),f(n)的階不高於g(n)的階。
2.可能存在多個正數c,只要指出乙個即可。
3.對前面有限個值可以不滿足不等式。
4.常函式可以寫作o(1)。
大ω符號:1.f(n) = ω(g(n)),f(n)的階不低於g(n)的階。
2.可能存在多個正數c,指出乙個即可。
3.對前面有限個n值可以不滿足上述不等式。
小o符號:1.f(n) =o(g(n)),f(n)的階低於g(n)的階
2.對不同正數c,n0不一樣,c越小n0越大。
3.對前面有限個n值可以不滿足上述不等式。
小w符號:1.f(n) = w(g(n)),f(n)的階高於於g(n)的階。
2.對不同正數c,n0不一樣,c越大n0越大。
3.對前面有限個n值可以不滿足上述不等式。
θ符號: f(n) = o(g(n))且f(n) = ω(g(n)),則滿足f(n) = θ(g(n))
1.f(n)的階與g(n)的階相等
2.對前面有限個n值可以不滿足上述不等式。
對數函式 ,指數函式,階乘函式,取整函式
2.2 序列求和的方法
二分檢索演算法
有2n+1個可能的輸入
二分檢索平均時間複雜度 :假設n=2^k-1 有2n+1種可能的輸入,k-1/2=[logn] +1/2.
2.3遞推方程與演算法分析
fibonacci數
hanoi塔問題 的遞迴演算法
插入排序 的迭代演算法
2.4 迭代法求解遞推方程
2.5 差消法化簡遞推方程
對於高階遞推方程先要用差消法化簡為一階方程
迭代求解
2.6 遞迴樹
遞迴樹是迭代的圖形表示
遞迴樹的生成規則
如何利用遞迴樹求解遞推方程?
2.7 主定理
3.分治策略
fibonacci 數列
3.7改進分治演算法
減少子問題個數:
矩陣乘法的研究及應用
矩陣乘法問題的難度:c-w演算法 :o(n^2.376)
目前為止最好的上界;目前為止最好的下界ω(n^2)
應用:科學計算,影象處理,資料探勘等,
回歸,聚類,主成分分析,決策樹
增加預處理:
卷積及應用
訊號的平滑處理
高斯濾波的權值函式
演算法設計與分析
輸入輸出 確定性有窮性 np類問題是非確定性計算模型下的易驗證問題類。所有可以在多項式時間內求解的判定問題構成p類問題 1 二分搜尋技術 二分搜尋演算法的基本思路是對給定已排好序的n個元素a 0 n 1 在這n個元素中找出乙個特定元素x。運用分治的思想,將n個元素以n 2為中心對半分。if x a ...
演算法分析與設計
分析,此題可以用動態規劃來做。子問題為 max i max i 1 0 max i 1 nums i nums i max i 表示以nums i 結尾的子串的最大和,最後返回最大的那個即為所求,複雜度為o n class solution return max 另一種實現方法,更加簡潔,即從前往後...
演算法設計與分析
ylbtech miscellaneos 演算法設計與分析 a,返回頂部1,演算法設計與分析 是2009年國防工業出版社出版的圖書,作者是張德富。書主要取材於演算法設計與分析領域的經典內容,並介紹了演算法設計的發展趨勢。內容主要包括非常經典的演算法設計技術,例如遞迴與分治 動態規劃 貪心 回溯 分支...