##關於
introduction to algorithm這本書,第三版出來的時候,我在第一時間就入手了,也有34年了吧,反覆看過很多次,奈何每次都感覺不得其意。這是一部大部頭的書,將近有800頁,書中的**大部分都是用偽**寫的,很多地方晦澀難懂。而且在工作中除了極少的場合,很難用到一些高深的演算法(如動態規劃、攤還分析,b樹等),所以一直沒花時間去整理和消化。
早些年只研究過圖演算法,研究的時候,卻不得其法。工作中,由於效能各方面的要求,也需要慢慢接觸到一些比較「厲害」的演算法,有時候甚至需要自己去設計演算法,然後分析,測試,封裝(這事我上研究生的時候幹過。。,也吃過演算法的虧)。因此下定決心整理,一些演算法
全書共分為8個部分(7個部分的正文+1個部分的附錄),每個部分大約是3—5個章節。作者非常用心,在第八部分新增了常用的資料基礎只是,如果在書中看到某乙個不懂的術語,檢視第八部分的附錄,基本上都能查到。
基礎知識:主要通過兩種簡單的演算法,告訴你後續的章節要怎麼樣(如評價演算法的規則,標準的流程,符號等)去介紹演算法,分析演算法。
排序演算法:這下你知道為什麼校招和大公司的社招都看重排序了吧,「演算法導論」作為演算法屆聖經一樣的存在,都單獨列出一章詳細講解,說明對排序演算法的掌握是考驗乙個人演算法功底的重要指標。所以,不要抱怨,好好掌握吧。
當然,這一部分提到的排序演算法,只有6中左右,遠沒有我當年參加校招的時候的10多種。。。
資料結構:一些基本的資料結構,當然這個「基本」也只是相對的,這章提到了紅黑樹和資料結構的擴張,要掌握還是有一定的難度。
演算法設計規則:動態規劃,貪心演算法,攤還分析等,都是比較有名的演算法設計思路。如揹包問題,8皇后等,就是這些思路的經典運用。
高階資料結構:是對第三部分的乙個延伸,主要介紹的b樹,斐波那契堆,van emde boad樹等,很高階。
圖論:在計算機的課程中,圖論算是乙個非常大的分支,也應用的非常廣泛(如廣度優先,深度優先、拓撲排序等),如果沒有基礎,可以跳過部分內容,只看一些基本的圖演算法就好
經典演算法:前6個部分大致已經介紹完了演算法的理論基礎,這部分介紹的是將各個部分的理論結合起來,在人類現有的認知範圍內,選編的一些經典思路和演算法。
庸庸碌碌的過了這麼些年,研究生時代的演算法研究也是過的渾渾噩噩,也終於意識到要靜下心來認真分析總結了。計畫將在2023年一整年的時間,將演算法導論好好的重新整理一遍。
記於2017.1.3
演算法導論 隨機演算法
一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...
《演算法導論》 演算法導論2 2 1插入排序
2.1 插入排序。我們分析的第乙個演算法是插入排序演算法,輸入 n個數 a1,a2,a3,a4,a5,a6,a7 an 輸出 序列的乙個排列 即重新排序 a1 a2 a3 使a1 a2 a3 插入排序演算法的偽 是以乙個過程的形式給出的,稱為insertion sort,它的引數是乙個陣列。包括了n...
演算法導論目錄
出版者的話 專家指導委員會 譯者序前言 第一部分 基礎知識 引言 第1章 演算法在計算中的作用 1.1 演算法 1.2 作為一種技術的演算法 第2章 演算法入門 2.1 插入排序 2.2 演算法分析 2.3 演算法設計 2.3.1 分治法 2.3.2 分治法分析 第3章 函式的增長 3.1 漸近記號...