1. 程式人生 > >算法 準備

算法 準備

導致 屬於 下界 bubuko 就是 集合 .com 問題 com

一.算法

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.< 和 >

技術分享圖片

技術分享圖片

算法 準備