演算法復雜性分析
㈠ 計算復雜性包括什麼
計算復雜性理論(Computational complexity theory)是理論計算機科學和數學的一個分支,它致力於將可計算問題根據它們本身的復雜性分類,以及將這些類別聯系起來。一個可計算問題被認為是一個原則上可以用計算機解決的問題,亦即這個問題可以用一系列機械的數學步驟解決,例如演算法。 如果一個問題的求解需要相當多的資源(無論用什麼演算法),則被認為是難解的。計算復雜性理論通過引入數學計算模型來研究這些問題以及定量計算解決問題所需的資源(時間和空間),從而將資源的確定方法正式化了。其他復雜性測度同樣被運用,比如通信量(應用於通信復雜性),電路中門的數量(應用於電路復雜性)以及中央處理器的數量(應用於並行計算)。計算復雜性理論的一個作用就是確定一個能或不能被計算機求解的問題的所具有的實際限制。 在理論計算機科學領域,與此相關的概念有演算法分析和可計算性理論。兩者之間一個關鍵的區別是前者致力於分析用一個確定的演算法來求解一個問題所需的資源量,而後者則是在更廣泛意義上研究用所有可能的演算法來解決相同問題。更精確地說,它嘗試將問題分成能或不能在現有的適當受限的資源條件下解決這兩類。相應地,在現有資源條件下的限制正是區分計算復雜性理論和可計算性理論的一個重要指標:後者關心的是何種問題原則上可以用演算法解決。
簡介
計算復雜性理論所研究的資源中最常見的是時間(要通過多少步演算才能解決問題)和空間(在解決問題時需要多少內存)。其他資源亦可考慮,例如在並行計算中,需要多少並行處理器才能解決問題。
時間復雜度是指在計算機科學與工程領域完成一個演算法所需要的時間,是衡量一個演算法優劣的重要參數。時間復雜度越小,說明該演算法效率越高,則該演算法越有價值。
空間復雜度是指計算機科學領域完成一個演算法所需要佔用的存儲空間,一般是輸入參數的函數。它是演算法優劣的重要度量指標,一般來說,空間復雜度越小,演算法越好。我們假設有一個圖靈機來解決某一類語言的某一問題,設有個字(word)屬於這個問題,把放入這個圖靈機的輸入端,這個圖靈機為解決此問題所需要的工作帶格子數總和稱為空間。
復雜度理論和可計算性理論不同,可計算性理論的重心在於問題能否解決,不管需要多少資源。而復雜性理論作為計算理論的分支,某種程度上被認為和演算法理論是一種「矛」與「盾」的關系,即演算法理論專注於設計有效的演算法,而復雜性理論專注於理解為什麼對於某類問題,不存在有效的演算法
㈡ 名詞解釋——演算法的復雜性
演算法的復雜性是演算法效率的度量,是評價演算法優劣的重要依據。一個演算法的復雜性的高低體現在運行該演算法所需要的計算機資源的多少上面,所需的資源越多,我們就說該演算法的復雜性越高;反之,所需的資源越低,則該演算法的復雜性越低。
㈢ 演算法的復雜性分析包括哪些內容
在演算法的復雜性表示中,O記號表示復雜度的上限。
即:O(g(n)) =
單向鏈表沒有指向前節點的指針,必須從頭指針開始遍歷到p的前節點,最壞的情況為p指向的是鏈表的尾節點,應此為O(n)。
㈣ 如何分析演算法的復雜度
演算法的復雜性
演算法的復雜性是演算法效率度量,是評價演算法優劣的重要依據。一個演算法的復雜性的高低體現在運行該演算法所需要的計算機資源的多少上面,所需的資源越多,我們就說該演算法的復雜性越高;反之,所需的資源越低,則該演算法的復雜性越低。
計算機的資源,最重要的是時間和空間(即存儲器)資源。因而,演算法的復雜性有時間復雜性和空間復雜性之分。
不言而喻,對於任意給定的問題,設計出復雜性盡可能低的演算法是我們在設計演算法時追求的一個重要目標;另一方面,當給定的問題已有多種演算法時,選擇其中復雜性最低者,是我們在選用演算法適應遵循的一個重要准則。因此,演算法的復雜性分析對演算法的設計或選用有著重要的指導意義和實用價值。
簡言之,在演算法學習過程中,我們必須首先學會對演算法的分析,以確定或判斷演算法的優劣。
1.時間復雜性:
例1:設一程序段如下(為討論方便,每行前加一行號)
(1) for i:=1 to n do
(2) for j:=1 to n do
(3) x:=x+1
......
試問在程序運行中各步執行的次數各為多少?
解答:
行號 次數(頻度)
(1) n+1
(2) n*(n+1)
(3) n*n
可見,這段程序總的執行次數是:f(n)=2n2+2n+1。在這里,n可以表示問題的規模,當n趨向無窮大時,如果 f(n)的值很小,則演算法優。作為初學者,我們可以用f(n)的數量級O來粗略地判斷演算法的時間復雜性,如上例中的時間復雜性可粗略地表示為T(n)=O(n2)。
㈤ 演算法在最壞情況,最好情況和平均情況下的計算復雜性概念及對三者時間復雜性的分析
計算復雜性目前主要用計算所消耗的資源數量來量度。由於演算法在計算時所消耗的資源與問題規模有關,所以通常用遞增函數來估計。另外,對具體問題實例,演算法的資源消耗量是不同的,通常可以估計出最壞、最好和平均三種情形下對資源消耗的數量。對上述三者作時間復雜性分析的具體做法如下:以順序查找為例,最壞情況是指需要搜索完所有的數據;最好情況是指搜索的第一個數據就是所要的數據;平均情況是指所獲得的數據按其實際分布而言,平均需要查找比較的次數。
㈥ 演算法復雜度分析
時間復雜度:O(n*2^k)
空間復雜度不多說了
循環體執行次數:
㈦ 計算機最重要的資源是什麼演算法的復雜性主要分析什麼的耗費
最重要的資源當然是內存空間了,演算法的復雜性分為時間復雜性和空間復雜性,時間復雜性分析演算法的完成需要什麼多少時間,和問題的規模有關系;空間復雜性分析的是對計算機存儲資源的耗費,當然也就是前面說的內存了