演算法和演算法分析

2021-09-25 00:19:09 字數 1746 閱讀 6541

演算法是為了解決某類問題而規定的乙個有限長的操作序列。

五個特性:1.有窮性2.確定性3.可行性4.輸入5.輸出

1.正確性2.可讀性3.健壯性4.高效性

1.問題規模和語句頻度

不考慮計算機的軟硬體等環境因素,影響演算法時間代價的最主要因素是問題規模。問題規模是演算法求解問題輸入量的多少,是問題大小的本質表示,一般用整數n表示。

一條語句的重複執行次數稱作語句頻度

2.演算法的時間複雜度定義

演算法中基本語句重複執行的次數是問題規模n的某個函式f(n),演算法的時間量度記作t(n)=o(f(n))。它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸近時間複雜度,簡稱時間複雜度

3.演算法的時間複雜度分析

分析演算法的時間複雜度的基本方法為:找出所有語句中語句頻度最大的那條語句作為基本語句,計算基本語句的頻度得到問題規模n的某個函式f(n),取其數量級用符號「o」表示即可。具體計算數量級時,可以遵循以下定理。若

則上面定理說明,在計算演算法時間複雜度時,可以忽略所有低次冪項和最高次冪的係數,這樣可以簡化演算法分析,也體現了增長率的含義。在多數情況下, 當有若干個迴圈語句時,演算法的時間複雜度是由最深層迴圈內的基本語句的頻度f(n)決定的,這也是計算時間複雜度的一種方法。

4.最好、最壞和平均時間複雜度

演算法的時間複雜度不僅與問題的規模有關,還與問題的其他因素有關。再如某些排序的演算法,其執行時間與待排序記錄的初始狀態有關。因此,有時會對演算法有最好、最壞以及平均時間複雜度的評價。

稱演算法在最好情況下的時間複雜度為最好時間複雜度,指的是演算法計算量可能達到的最小值;稱演算法在最壞情況下的時間複雜度為最壞時間複雜度,指的是演算法計算量可能達到的最大值;演算法的平均時間複雜度是指演算法在所有可能情況下,按照輸入例項以等概率出現時,演算法計算量的加權平均值。

關於演算法的儲存空間需求,類似於演算法的時間複雜度,我們採用漸近空間複雜度作為演算法所需儲存空間的量度,簡稱空間複雜度,它也是問題規模 n 的函式,記作:

s(n)=o(f(n))

一般情況下,乙個程式在機器上執行時,除了需要寄存本身所用的指令、常數、變數和輸入資料外,還需要一些對資料進行操作的輔助儲存空間。其中,對於輸入資料所佔的具體儲存量取決於問題本身,與演算法無關,這樣只需分析該演算法在實現時所需要的輔助空間就可以了。若演算法執行時所需要的輔助空間相對於輸入資料量而言是個常數,則稱這個演算法為原地工作,輔助空間為o(1)。另外有的演算法需要占用臨時的工作單元數與問題規模 n 有關。

對於乙個演算法,其時間複雜度和空間複雜度往往是相互影響的,當追求乙個較好的時間複雜度時,可能會導致占用較多的儲存空間,即可能會使空間複雜度的效能變差,反之亦然。

演算法和演算法分析

一 演算法的基本概述 演算法是為了解決某類問題而規定的乙個有限長的操作序列。乙個演算法必須滿足以下五個重要特性 1 有窮性2 確定性3 可行性 4 有輸入5 有輸出 二 設計演算法的原則 1.正確性 2.可讀性 3 健壯性 4.高效率與低儲存量需求 三 演算法的時間複雜度簡介 語句頻度 語句重複執行...

演算法和演算法分析

1.定義 是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作。2.特徵 1 有窮性 乙個演算法必須在執行有窮步之後結束,即演算法中的每個步驟在有限的時間內完成。2 確定性 每條指令必須有確定的含義,無二義性,在任何條件下,演算法都只有一條執行路徑。3 可行性 乙個演...

演算法和演算法分析基礎

演算法 對求解步驟的描述,是一組指令的有序序列,演算法必須是有窮的,可行的,並且要有輸入輸出 通常我們對演算法設計的要求有 正確性 應該滿足具體問題的需求。健壯性 經得起測試 效率與低儲存量 演算法執行的時間要越短越好,占用的儲存空間應該越少越好 演算法效率的度量 一般分為事後統計和事前分析估算 因...