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