算法 準備
一.算法
1.算法:算法面向一個問題,體現解決問題的流程,問題定義輸入和輸出的關系,
2.特點:有窮性、確定性、能行性、輸入、輸出
二.算法設計和分析
1.算法一般用偽代碼描述,重點體現流程
2.算法的運行時間:
(1)考慮輸入的情況,相同規模不同的輸入可能導致算法的運行時間不同,比如順序和逆序的排序
(2)考慮輸入的規模,一般來說,輸入規模越大,算法運行時間越長,比如排序6個元素和6萬個元素
(3)考慮到算法運行時間的上界,一般來說,對別人說某個算法的運行時間,只會給出最多運行多少時間,不會給出最少運行時間,因為算法註重的是效率
(4)考慮到算法在不同機器上的運行速度不同,一般假設算法在相同機器上的運行,也就是不考慮機器對算法的影響,也被稱為相對運行速度
3.分析算法:一般考慮規模為n的算法的最壞運行時間的相對運行時間
(1)算法的最壞運行時間(通常考慮):最長運行時間,也就是任何輸入的運行時間的一個上界
(2)算法的平均運行時間(偶爾考慮):所有可能輸入的加權平均期望時間,必須先知道輸入的統計分布
(3)算法的最好運行時間(一般不考慮):是虛假的,具有欺騙性的數據,因為不會每次都能達到最好的輸入,
4.分析算法的一般方法是漸近分析:(1)忽略低階項和常系數(2)對於輸入規模n的算法只考慮算法的運行時間的增長率或增長量級
三.漸近分析
1.典型的增長階:
2.增長的記號:
3.
=(漸近緊界)
,f(n)等於theta(g(n))(f(n)屬於theta(g(n))函數集的集合)
例:θ(n2)<θ(n3)表示當n>某個n0時,前者的性能好於後者
4.
<=(最壞運行時間)(漸近上界)
例1:2n2=O(n3)等價於2n2屬於O(n3)的集合
例2:f(n)=n3+O(n2)表示存在h(n)屬於O(n2),使得f(n)=n3+h(n)
例3:n2+O(n)=O(n2)表示對於任意f(n)屬於O(n),存在h(n)屬於O(n2),使得n2+f(n)=h(n)
5.
>=(漸近下界)
6.< 和 >
算法 準備