《計算複雜性與演算法分析》和《計算複雜性》學習

2021-09-06 15:37:49 字數 1529 閱讀 1100

今天偶然間碰到數學界著名的七大千禧難題,關注了p和np問題,但是裡面提到關於演算法的複雜性的描述已經超出了自己的知識範圍,我找到了一本書來彌補這個不足,即《計算複雜性與演算法分析》,希望自己在看完這本書之後能夠對計算複雜性有完整的概念

首先看看它的目錄

其實大部分的知識都有接觸過,但是沒有形成體系

接下來就慢慢學習吧,挖個坑一直學

以基本碼為單位對輸入進行計算得到輸出的過程

看了一會,發現第一章和第二章的內容與編譯原理的內容相似,介紹了語法分析樹,語言文法

圖靈機是比自動機應用更為廣泛的一種計算模型,非確定型圖靈機(ntm)的移動不能為轉移函式準確地決定,它的轉移函式是多值的。如果將這些函式值放在儀器形成乙個子集,那麼也可以把它看成乙個集值函式。除此之外,ntm和dtm沒有區別,就是在分析下一位的輸入的時候,它的輸出是不確定的

到了第5章正式介紹計算複雜性理論

如果乙個問題的大小是n,解決這一問題的某一演算法所學的時間為t(n),它是n的某一函式。t(n)稱為這一演算法的時間複雜性。當輸入量n逐漸加大時,時間複雜性的極限情形,稱為演算法的漸進時間複雜性。類似地,可以定義乙個演算法的空間複雜性和漸進空間複雜性。在演算法的複雜性討論中,人們主要是研究演算法的時間複雜性,尤感興趣的是演算法的漸進時間複雜性,而對演算法漸進複雜性的討論往往只給出它的關於問題大小n的數量級。

均勻耗費標準是指用每執行一條ram指令需要乙個單位時間,每個資料需要占有乙個單位空間的假設來分析乙個ram程式。這樣做是比較粗略的,實際計算機執行不同型別的指令所需的時間一般並不相等,同一條指令的執行時間因運算元的不同也會有不同

對數耗費標準是由於實際的計算機字長很有限和長度固定而產生的。在ram中,假定乙個內儲存單元可以存放乙個任意大小的整數且任何操作都可以用一條指令完成。有時這是與實際情況不相符的,因為乙個整數n在儲存器裡要占用log2(n)+1個單位,當這個位數超過機器字長時,不僅乙個儲存單元放不下它,而且有關它的運算也不可能用一條指令來完成

演算法複雜度分析中常用的一些數學基礎知識,包括集合論、邏輯學、概率論以及代數領域的知識

目前人們已經證明了一些問題,它的時間複雜性時多項式的,這只須涉及乙個實現它的時間複雜性時多項式階的演算法即可,例如分類問題(有成)排序問題。這樣一類問題本稱為p類問題

還有一類問題,人們已經設計出實現它的時間複雜性為指數階的演算法,並且已證明該問題不存在時間複雜性為多項式階的演算法(例如梵塔問題),這樣一類問題稱為頑型問題。

由這樣一類問題,人們目前已設計的實現它的演算法其時間複雜性為指數階的,但還不能肯定有沒有多項式階的演算法,例如m-可著色問題 。為了研究這類問題,人們又設計一種稱為非確定型圖靈機的計算模型,這些問題對應乙個非確定型圖靈機,而且可以在多項式時間內完成計算。人們稱這類問題為np問題,np是nondeterministic polynomial的縮寫。

作為一本書,還有很多內容,看完是不可能的,到此為止,有個比較清晰的概念了

計算複雜性理論

計算複雜性理論所研究的資源中最常見的是時間 要通過多少步演算才能解決問題 和空間 在解決問題時需要多少記憶體 其他資源亦可考慮,例如在平行計算中,需要多少並行處理器才能解決問題。時間複雜度是指在電腦科學與工程領域完成乙個演算法所需要的時間,是衡量乙個演算法優劣的重要引數。時間複雜度越小,說明該演算法...

決策樹 排序問題的計算複雜性

對排序演算法計算時間的分析可以遵循若干種不同的準則,通常以排序過程所需要的演算法步數作為度量,有時也以排序過程中所作的鍵比較次數作為度量。特別是當作一次鍵比較需要較長時間,例如,當鍵是較長的字串時,常以鍵比較次數作為排序演算法計算時間複雜性的度量。當排序時需要移動記錄,且記錄都很大時,還應該考慮記錄...

《計算複雜性 現代方法》 0 3 大O記號

演算法的計算效率一般通過將該演算法執行的基本操作的個數表達為演算法輸入的長度的函式來表示。這就是說,演算法的效率用從自然數集n到其自身的函式t來刻畫,t n 是演算法在所有長度為n的輸入上執行的基本操作的最大個數。然而,函式t的形式有時嚴重地依賴於基本操作的具體定義。例如,在整數的加法中,基本操作既...