1. 程式人生 > >資料結構的時間複雜度與空間複雜度、及相關證明

資料結構的時間複雜度與空間複雜度、及相關證明

0. 有向圖無向圖的時空複雜度

圖的時空複雜度與其具體的表示形式有關,對於圖的鄰接表的表示形式,記 Adj[v] 為頂點 v 的出邊構成的列表。為了考量其空間複雜度,首先需要記錄全部的頂點,也即即使全部的頂點的出度均為0(頂點間相互孤立),仍然需要 O(V) 的時間複雜度。

  • 圖是一種連線圖,每條邊在 list 中僅出現一次,
  • 圖是無連通圖,每條邊在 list 中卻出現兩次;

也即以上兩種情況下,全部 list 中的元素之和,不超過邊數目的2倍,又由 2E ⇒ O(E),因此為了記錄頂點以及記錄邊,空間複雜度為 O(V+E),當然也等於 O(max(V,E)),不妨設 c=2,則 O(max

(V,E))=2max(V,E)V+E

1. T(n)=T(n)+1

本質上是看將一個數開多少次平方根,其值才會接近於 1.

n12k=a,1<a<2k=loglogn

顯然,loglogn 的時間複雜度要小於 logn,因為 logn<n,而 logx 又是一個單調遞減函式。

再來看一道稍微複雜點的情況,T(n)=nT(n)+n,等式兩邊同時除以 n,則可化為:

T(n)n=T(n)n+1f(n)=f(n)+1

由上面的情況可知,f(n)O(loglogn),因此原始問題的時間複雜度為 O(nloglogn)