上一篇:http://www.shnenglu.com/tanky-woo/archive/2011/04/09/143794.html
前三章基本沒什么內容,所以合在一起總結。
第一章:
講了算法(algorithm)的基本概念,以及算法的作用。(這些可以看書)
用個人的話來講,你可以把算法當做一個解決問題的方法,就像數學里的各種公式一樣,你也可以把他們認為是一種算法。算法無處不在,而且算法必須存在,否則我們的生活都將變得緩慢,遲鈍。
舉個例子:我們平時出去游玩時,要事先查好路線,這時就可以用百度地圖搜索從A地到B地的路線,地圖上會給出最快的乘車路線,這些路線是怎么給出來的,就是用了最短路的算法,關于最短路的算法有很多,比如Dijkstra, Bellman, Floyd, SPFA等等,當然還有好多我不知道,但是通過這可以看出,算法可以讓我們的生活變得更有效率。
當然,第一章也可以認為是給大家鼓氣的一章,讓大家發現算法的魅力,算法的強悍。大家都來愛上算法吧!
第二章:
本書的算法都是用偽代碼寫的,偽代碼讀起來很簡單,它省去了無關的細節,著重考慮算法的整體。
2.1節講的是插入排序(Insertion Sort),這個很簡單,也可以認為是最基本的排序算法。
(P11)需要好好的記住,一般一本書中都會寫一些事先的約定,以方便大家閱讀。本書也不例外,這些約定都是關于偽代碼的,為了更好的閱讀并理解偽代碼,所以這些約定要記住了!
2.2節講的是算法的分析。算法分析是指對一個算法所需要的資源進行預測。在(P13)講到了"運行時間"和"輸入規模"的概念。一個程序的運行時間可以表示為一個輸入規模的函數。一般算法所需的時間與輸入規模是同步增長的,而且對于不同的輸入序列,其運行時間也可能不同。(P14~15的算法運行時間分析要好好看看)。
2.3節講的是分治法。
分治策略:將原問題劃分成n個規模較小而結構與原問題相似的子問題;遞歸的解決這些子問題,然后再合并其結果,就得到原問題的解。
分治策略的三步驟(P17):分解(Divide),解決(Conquer),合并(Combine)。
合并排序算法就是利用了分治策略,將n個元素分成各含n/2個元素的子序列。
這個是分治法的精髓:
其實理解起來很簡單,有沒有發現和二叉樹的后序遍歷類似。
第三章:
一般而言,我們研究的是算法的漸進意義。我在這里把漸進確界,漸進上界,漸進下界的三個符號的定義放在了一起:
這一章全部很重要。可以先記住,然后在后面的章節通過實踐來掌握