演算法分析的兩個主要方面是?不會游泳的驢2021-12-21 17:22:59

演算法分析的主要方面是空間複雜性和時間複雜性。在計算機科學中,演算法分析是分析執行一個給定演算法需要消耗的計算資源數量的過程。演算法的效率或複雜度在理論上表示為一個函式。其定義域是輸入資料的長度,值域通常是執行步驟數量或者儲存器位置數量。演算法分析是計算複雜度理論的重要組成部分。

判斷一個演算法所程式設計序執行時間的多少,並不是將程式編寫出來,透過在計算機上執行所消耗的時間來度量。原因很簡單,一方面,解決一個問題的演算法可能有很多種,實現的工作量無疑是巨大的,得不償失;另一方面,不同計算機的軟、硬體環境不同,即便使用同一臺計算機,不同時間段其系統環境也不相同,程式的執行時間很可能會受影響,嚴重時甚至會導致誤判。

實際場景中,我們更喜歡用一個估值來表示演算法所程式設計序的執行時間。所謂估值,即估計的、並不準確的值。注意,雖然估值無法準確的表示演算法所程式設計序的執行時間,但它的得來並非憑空揣測,需要經過縝密的計算後才能得出。程式自身所佔用的儲存空間取決於其包含的程式碼量,如果要壓縮這部分儲存空間,就要求我們在實現功能的同時,儘可能編寫足夠短的程式碼。程式執行過程中輸入輸出的資料,往往由要解決的問題而定,即便所用演算法不同,程式輸入輸出所佔用的儲存空間也是相近的。

事實上,對演算法的空間複雜度影響最大的,往往是程式執行過程中所申請的臨時儲存空間。不同的演算法所編寫出的程式,其執行時申請的臨時儲存空間通常會有較大不同。