計算複雜性理論(Computational complexity theory)是
计算理论的一部分,研究計算問題時所需的資源。最常見的資源是時間(要通過多少步才能解決問題)和空間(在解決問題時需要多少記憶體)。其他資源亦可考慮,例如在
并行计算中,需要多少并行處理器才能解決問題。
時間複雜度是指在
電腦科學與工程領域完成一個
演算法所需要的時間,是衡量一個演算法優劣的重要參數。時間複雜度越小,說明該演算法效率越高,則該演算法越有價值。
空間複雜度是指電腦科學領域完成一個演算法所需要占用的存儲空間,一般是輸入參數的函數。它是演算法優劣的重要度量指標,一般來說,空間複雜度越小,演算法越好。我們假設有一個
圖靈機來解決某一類語言的某一問題,設有X個字(word)屬於這個問題,把X放入這個圖靈機的輸入端,這個圖靈機為解決此問題所需要的工作帶格子數總和稱為
空間。