軟考15——演算法

新晋软工小白發表於2024-10-16

演算法的特性
文老師軟考教育
◆演算法(Algorithm)是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。此外,一個演算法還具有下列5個重要特性。(1)有窮性。一個演算法必須總是(對任何合法的輸入值)在執行有窮步之後結束,且每一步都可在有窮時間內完成。
(2)確定性。演算法中的每一條指令必須有確切的含義,理解時不會產生二義性。並且在任何條件下,演算法只有唯一的一條執行路徑,即對於相同的輸入只能得出相同的輸出。
(3)可行性。一個演算法是可行的,即演算法中描述的操作都可以透過已經實現的基
本運算執行有限次來實現。
(4)輸入。一個演算法有零個或多個輸入,這些輸入取自於某個特定的物件的集合。
(5)輸出。一個演算法有一個或多個輸出,這些輸出是同輸入有著某些特定關係的
2
演算法的複雜度
文老師軟考教育
◆演算法的時間複雜度分析:主要是分析演算法的執行時間,即演算法執行所需要的基本運算元。不同規模的輸入所需要的基本運算元是不相同。在演算法分析中.可以建立以輸入規模n為自變數的函式T(n)來表示演算法的時間複雜度。
◆即使對於相同的輸入規模,資料分佈不相同也影響了演算法執行路徑的不同,因此所需要的執行時間也不同。根據不同的輸入,將演算法的時間複雜度分析分為3 種情況:最佳情況、最壞情況、平均情況。
◆漸進符號:以輸入規模n為自變數建立的時間複雜度實際上還是較複雜的,例如an2+bn+c,不僅與輸入規模有關,還與係數a、b和c有關。此時可以對該函式做進一步的抽象,僅考慮執行時間的增長率或稱為增長的量級,如忽略上式中的低階項和高階項的係數,僅考慮n^2。當輸入規模大到只有與執行時間的增長量級有關時,就是在研究演算法的漸進效率。也就是說,從極限角度看,只關心演算法執行時間如何隨著輸入規模的無限增長而增長。下面簡單介紹3種常用的標準方法來簡化演算法的漸進分析。

演算法的複雜度
文老師軟考教育
◆演算法的時間複雜度分析:主要是分析演算法的執行時間,即演算法執行所需要的基本運算元。不同規模的輸入所需要的基本運算元是不相同。在演算法分析中,可以建立以輸入規模n為自變數的函式T(n)來表示演算法的時間複雜度。
◆即使對於相同的輸入規模,資料分佈不相同也影響了演算法執行路徑的不同,因此所需要的執行時間也不同。根據不同的輸入,將演算法的時間複雜度分析分為3種情況:最佳情況、最壞情況、平均情況。
◆漸進符號:以輸入規模n為自變數建立的時間複雜度實際上還是較複雜的,例如an2+bn+c,不僅與輸入規模有關,還與係數a、b和c有關。此時可以對該函式做進一步的抽象,僅考慮執行時間的增長率或稱為增長的量級,如忽略上式中的低階項和高階項的係數,僅考慮n^2。當輸入規模大到只有與執行時間的增長量級有關時,就是在研究演算法的漸進效率。也就是說,從極限角度看,只關心演算法執行時間如何隨著輸入規模的無限增長而增長。下面簡單介紹3種常用的標準方法來簡化演算法的漸進分析。
2
文老師軟考教育
演算法的複雜度
(1)0記號。定義為:給定一個函式g(n),O(g(n))={f(n):存在正常數c和nO,使得對所有的n≥no,有0≤f(n)≤g(n)},如圖(a)所示。0(g(n))表示一個函式集合,往往用該記號給出一個演算法執行時間的漸進上界。考試中一般只涉及到0符號。(2)Q記號。定義為:給定一個函式g(n),Q(g(n))={f(n):存在正常數c和nO,使得對所有的n≥no,有0≤g(n)sf(n)],如圖(b)所示。Q(g(n))表示一個函式集合,往往用該記號給出一個演算法執行時間的漸進下界。
(3)日記號。定義為:給定一個函式g(n),O(g(n))=[f(n):存在正常數c1,、c2和no,使得對所有的n≥n0。,有0≤c1g(n)≤f(n)≤c2g(nJ]},如圖(c)所示。θ(g(n))表示一個函式集合,往往用該記號給出一個演算法執行時間的漸進上思和漸進下史即漸進緊緻界。

相關文章