演算法分析即指對乙個演算法所需要的資源進行**,記憶體,通訊頻寬或計算機硬體等資源偶爾是我們主要關心的,乙個演算法所需要的資源越多,該演算法的複雜性越高,反之,所需要的資源越少,該演算法的複雜性越低,在計算機的資源中,最重要的是時間和空間(即儲存器)資源,因此演算法複雜性有時間複雜性和空間複雜性之分,不言而喻,在對給定問題設計演算法時,設計出複雜性盡可能低的演算法是設計演算法時追求的目標,如果給的問題已有多種演算法時,選擇複雜性最低者,是在選用演算法時遵循的重要準則,更確切的說,演算法的複雜性是演算法執行時所需要的計算機資源的量,需要時間資源稱為時間複雜性,需要的空間資源稱為空間複雜性,如果分別用n,i,a,表示演算法要解問題的規模,演算法的輸入和演算法本身的函式,而且用c表示複雜性,那麼應該有c=f(n,i,a)。其中f(n,i,a)是n,i,a的確定的三元函式,如果把時間複雜性和空間複雜性分開,並分別用t和s來表示,那麼應該有t=t(n,i,a),s=s(n,i,a)。通常讓a隱含在複雜性函式名當中,因而將t和s分別簡寫為t=t(n,i),s=s(n,i)。
由於時間複雜性與空間複雜性概念相同,計量方法相似,且空間複雜性的分析相對簡單,所以現在主要討論時間複雜性。
複雜性分析的常用符號:若存在兩個正常數c,n0,對於任意n>n0,都有|t(n)|<=c|f(n)|,則稱,t(n)集合在集合o(f(n))中。記作t(n)=o(f(n)),o讀作「大歐」。他的直觀含義是:t(n)的增長速度不會比f(n)差,大o表示法(big-oh notation)表示的是時間執行的上限,同理可以定義下限ω,如果上下限相等,還可以用θ表示。
最壞情況和平均情況:1乙個演算法的最壞情況執行時間是在任何輸入下執行時間的乙個上界。知道了這一點,就能確保演算法的執行時間不會比這一時間長。2對於某些演算法,最壞情況還是出現的相當頻繁的。3大致上看來,「平均情況」和最壞情況一樣差。
增長的量級:執行時間的增長率,或稱增長的量級,這樣,我們就只考慮公式中的最高項,因為當n很大時,低階項相當來說不太重要,,另外,還忽略最高次項的常數係數,,因為在考慮較大規模上的輸入下,對於增長率來說,係數是次要的。
按照符號o的定義,容易證明它有如下運算規則:
(1) o(f)+o(g)=o(max(f,g));
(2) o(f)+o(g)=o(f+g);
(3) o(f)o(g)=o(fg);
(4) 如果 g(n)=o(f(n)),則o(f)+o(g)=o(f);
(5) o(cf(n))=o(f(n)),其中c是乙個正的常數;
(6) f=o(f);
需求分析簡介
需求分析是需求分析人員通過細緻的調查分析,準確理解客戶系統建設的目的和要求,將使用者期待發掘的資訊,或者使用者期待系統實現的功能,通過與使用者溝通交流等多種方式,將其轉化為完整的 能夠快速為客戶和設計人員所理解的需求描述,並最終形成相應形式的功能規約 需求說明 的過程。從整體上來說,需求分析包括需求...
cpu分析簡介
程序占用cpu過高,一般有以下兩種原因 1 業務量過大導致程序處理負荷高,占用cpu資源 2 程式bug導致,比如死迴圈 初步檢視cpu占用情況 top進一步分析 對於程式陷入死迴圈導致cpu占用過高類問題,最好的辦法是把程序當前的堆疊資訊列印出來,根據堆疊找到 快速定位出問題。step1 檢視執行...
演算法複雜度分析中的符號( )簡介
讀音 theta 西塔 既是上界也是下界 tight 等於的意思。讀音 big oh 歐公尺可榮 大寫 表示上界 tightness unknown 小於等於的意思。讀音 small oh 歐公尺可榮 小寫 表示上界 not tight 小於的意思。讀音 big omega 歐公尺伽 大寫 表示下界...