第1章是對演算法及其在現代計算系統中地位的乙個綜述。本章給出了演算法的定義和一些演算法的例子。此外,本章還說明了演算法是一項技術,就像快速的硬體、圖形使用者介面、物件導向系統和網路一樣。
在第2章中,我們給出了書中的第一批演算法,它們解決的是對n個數進行排序的問題。這些演算法是用一種偽**形式給出的,這種偽**儘管不能直接翻譯為任何常規的程式語言,但是足夠清晰地表達了演算法的結構,以便任何一位能力比較強的程式設計師都能用自己選擇的語言將演算法實現出來。我們分析的排序演算法是插入排序,它採用了一種增量式的做法;另外還分析了歸併排序,它採用了一種遞迴技術,稱為「分治法」。儘管這兩種演算法所需的執行時間都隨n的值而增長,但增長的速度是不同的。我們在第2章分析了這兩種演算法的執行時間,並給出了一種有用的表示方法來表達這些執行時間。
第3章給出了這種表示法的準確定義,稱為漸近表示。在第3章的一開始,首先定義幾種漸近符號,它們主要用於表示演算法執行時間的上界和下界。第3章餘下的部分主要給出了一些數學表示方法。這一部分的作用更多的是為了確保讀者所用的記號能與本書的記號體系相匹配,而不是教授新的數學概念。
3第4章更深入地討論了第2章引入的分治法,給出了更多分治法的例子,包括用於兩方陣相乘的strassen方法。第4章包含了求解遞迴式的方法。遞迴式用於描述遞迴演算法的執行時間。「主方法」是一種功能很強的技術,通常用於解決分治演算法**現的遞迴式。雖然第4章中的相當一部分內容都是在證明主方法的正確性,但是如果跳過這一部分證明內容,也沒有什麼太大的影響。
第5章介紹概率分析和隨機化演算法。概率分析一般用於確定一些演算法的執行時間,在這些演算法中,由於同一規模的不同輸入可能有著內在的概率分布,因而在這些不同輸入之下,演算法的執行時間可能有所不同。在有些情況下,我們假定演算法的輸入服從某種已知的概率分布,於是,演算法的執行時間就是在所有可能的輸入之下,執行時間的平均值。在其他情況下,概率分布不是來自於輸入,而是來自於演算法執行過程中所做出的隨機選擇。如果乙個演算法的行為不僅由其輸入決定,還要由乙個隨機數生成器生成的值來決定,那麼它就是乙個隨機化演算法。我們可以利用隨機化演算法強行使演算法的輸入服從某種概率分布,從而確保不會有某一輸入會始終導致演算法的效能變壞;或者,對於那些允許產生不正確結果的演算法,甚至能夠將其錯誤率限制在某個範圍之內。
附錄a~d包含了一些數學知識,它們對讀者閱讀本書可能會有所幫助。在閱讀本書之前,讀者很有可能已經知道了附錄中給出的大部分知識(我們採用的某些符號約定與讀者過去見過的可能會有所不同),因而可以將附錄視為參考材料。另外,你很可能從未見過第一部分中給出的內容。第一部分中的所有各章和附錄都是以一種入門指南的風格來編寫的。
演算法導論第一部分筆記
一 偽 規範總結 1 縮排表示塊的結構 實際上這個我們可以聯想python來理解 2 while 後面跟上end比較好,for to downto 後面則不需要 3 大部分都類似於c的 4 部分操作可以由英文來代替 5 一般不使用全域性變數,復合資料往往組織為物件來進行操作 二 演算法複雜度 跳過 ...
演算法第一部分(1)
1.學習演算法,最好先了解陣列,鍊錶,堆,棧等線性結構 2.對遞迴,遍歷,演算法複雜度有著常識性理解 3.主要包括三方面的知識 線性 主要是排序 樹形結構 圖形結構 定義 選擇排序每次都從剩下的n i 個元素找到最小的數,並與i位置的數交換位置。public void selectionsort t...
Axure RP 第一部分
axure rp是乙個專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責定義需求和規格...