1.1複雜度度量
1.漸進複雜度
1.大o
oo記號-漸進上界
當n足夠大之後
若存在正常數c和函式f(n),使得對任意任意 n >> 2(遠遠大於2),都有
t(n)<=c*f(n);
則可以認為n在足夠大之後,f(n)給出了t(n)增長速度的乙個漸進上界。此時,記之為t(n)=o(f(n))
由這一定義,可以匯出大o
oo記號的一下性質:
對於任意常數c>0 ,有o(f(n))=o(c*f(n))
對於任意常數a>b>0, 有o(n
an^a
na+n
bn^b
nb)=o(n
an^a
na)
例項,起泡排序的複雜度分析
bubblesort(起泡排序),t(n)=o(2(n−
1)
2(n-1)^2
(n−1)2
)=o(2n
2n^2
n2-4n+2)=o(2n
2n^2
n2)=o(n
2n^2
n2)2.大ω
\omega
ω記號-漸進下界
若存在正常數c和函式g(n),使得對任意任意 n >> 2(遠遠大於2),都有
t(n)>=c*g(n);
就可以認為,在n足夠大之後,g(n)給出了t(n) 的乙個漸進下界。此時,我們將其記為
t(n)=ω
\omega
ω(g(n));
3.大θ
\theta
θ記號-對演算法複雜度的準確估計
若存在正常數c1> 2(遠遠大於2),都有
c1*h(n)<=t(n)<=c2*h(n)
就可以認為,在n足夠大之後,h(n)給出了t(n) 的乙個確界。此時,我們將其記為
t(n)=θ
\theta
θ(h(n));
2.時間複雜度
一般使用漸進複雜度度量
3.空間複雜度
一般使用漸進複雜度度量
2 演算法複雜度度量
1.時間複雜度 特定演算法處理規模為n的問題所需要的時間可記作t n 嚴格來說這個定義並不明確。為此需要做進一步簡化,即從保守估計的角度出發,在規模為n的所有輸入中選擇執行時間最長者作為t n 並以t n 度量該演算法的時間複雜度。2.漸進複雜度 著重長遠 更為注重時間複雜度的總體變化趨勢和增長速度...
如何度量複雜度
我們以度量複雜度的3種方法作為本文的結束 用邏輯深度度量複雜性為了更加接近我們對複雜性的直覺,數學家班尼特在20世紀80年代初提出了邏輯深度 logical depth 的概念。乙個事物的邏輯深度是對構造這個事物的困難程度的度量。高度有序的a c g t序列顯然很容易構造。同樣,如果我要你給我乙個a...
軌跡相似度度量
有四種方法可以度量軌跡相似度 1 lcss,longest comon subsequence 2 frechet distance 3 dtw,dynamic time warping 4 edit distance 軌跡ta,包含若干個 t,a 點。其中,a為位置點,t為時間戳。有乙個簡單的理解...