計算複雜性理論(computational complexity theory)是理論電腦科學和數學的乙個分支,它致力於將可計算問題根據它們本身的複雜性分類,以及將這些類別聯絡起來。乙個可計算問題被認為是乙個原則上可以用計算機解決的問題,亦即這個問題可以用一系列機械的數學步驟解決,例如演算法。
如果乙個問題的求解需要相當多的資源(無論用什麼演算法),則被認為是難解的。計算複雜性理論通過引入數學計算模型來研究這些問題以及定量計算解決問題所需的資源(時間和空間),從而將資源的確定方法正式化了。其他複雜性測度同樣被運用,比如通訊量(應用於通訊複雜性),電路中門的數量(應用於電路複雜性)以及**處理器的數量(應用於平行計算)。計算複雜性理論的乙個作用就是確定乙個能或不能被計算機求解的問題的所具有的實際限制。
在理論電腦科學領域,與此相關的概念有演算法分析和可計算性理論。兩者之間乙個關鍵的區別是前者致力於分析用乙個確定的演算法來求解乙個問題所需的資源量,而後者則是在更廣泛意義上研究用所有可能的演算法來解決相同問題。更精確地說,它嘗試將問題分成能或不能在現有的適當受限的資源條件下解決這兩類。相應地,在現有資源條件下的限制正是區分計算複雜性理論和可計算性理論的乙個重要指標:後者關心的是何種問題原則上可以用演算法解決。
計算複雜性理論
計算複雜性理論所研究的資源中最常見的是時間 要通過多少步演算才能解決問題 和空間 在解決問題時需要多少記憶體 其他資源亦可考慮,例如在平行計算中,需要多少並行處理器才能解決問題。時間複雜度是指在電腦科學與工程領域完成乙個演算法所需要的時間,是衡量乙個演算法優劣的重要引數。時間複雜度越小,說明該演算法...
演算法設計和複雜性理論學習筆記 2 數學基礎
函式的漸進界 函式的漸進界反映了函式收斂的速度 可以是無窮 在演算法分析中,我們研究乙個演算法的複雜度在輸入例項規模n增長的情況下的變化趨勢,是演算法好壞的乙個重要指標。定義 遞推方程的求解方法 求解遞推方程,有熟知的換元法,錯位相減法,特徵方程法等常用方法之外,課堂上還介紹了原來沒有接觸過的二叉樹...
計算機理論
作業系統跟計算機硬體是很大的關聯性,所以了解計算機理論對於學習 linux是有好處的。以下內容均摘自鳥哥的私房菜一書 計算機其實是 輸入指令與資料,經過 處理器和邏輯單元運算處理 後,產生或儲存成有用的資訊。簡單來說只要你有輸出裝置和輸入裝置,並且輸入資料讓機器產生資訊,這就可以叫做計算機了。計算機...