如何正確地擼《演算法導論》?

時間 2021-05-08 09:25:29

1樓:華天清

《演算法導論》這本書很有特點,一定要抓住它的特點。為了指導學生讀好這本書,我在翻來覆去地看其中的內容,並對比類似的教材。資料結構和演算法入門、演算法設計、演算法分析會有兩三門課,歷時兩三個學期,比較紮實地掌握基本要領是很必要的。

《演算法導論》第三版的preface已經講了它的特點,它把problem domain和technique穿插在一起講了,有可能會學的比較暈。

而以problem domain為主線的代表教材是Rebert Sedgewick的Algorithms。一本大紅書。把幾十種演算法分成5大章,分別解決什麼問題,說的清清楚楚,這些都是程式設計師該掌握的基本演算法。

也適合程式設計師讀,幾乎沒有數學證明,大部分只是結論,知道結論就好了。

而以technique為主線的代表教材是Jon Kleinberg的Algorithm design。一系列演算法設計技術,一章章平鋪開來講,只要耐下心來,讀下來很順暢。

相比之下,《演算法導論》把兩者一穿插,讀起來可能就有些頭暈了。但是,仔細琢磨這本書的內容組織方式,似乎想給讀者展示乙個全面的「演算法世界」,而這個演算法世界的最基礎的東西是「分治」,將大問題分解成小問題,分而治之,幾乎是所有演算法的核心,而貪婪演算法、動態規劃、概率分析等等都是在這個基礎上的增強和發展。

所以,才64頁就迫不及待的到了divide-and-conquer,到這裡很多人就打退堂鼓了。這是乙個門檻,這個門檻跨過去了,就知道未來深造的話應該打好什麼基礎。recursion-tree是一種直觀的方式幫助理解,substitution method是獲得closed form解的一種方法。

這個時候觀察一些問題求解過程,發現是在跟級數、排列和組合打交到,現在很清楚了,未來要深造,要把組合數學學好。而當前這個門檻感覺要邁不過去,去看Jon Kleinberg的Algorithm Design的chapter 5,一定會很有幫助

2樓:rockkid

建議直接看stanford的ppt,每一章看完之後細節部分再去看書。

在理解概念之前多看插圖,我覺得先理解演算法流程圖,再去看文字解釋,比較容易明白。

Index of /class/archive/cs/cs161/cs161.1176/Slides

3樓:

確實,書上的知識點一般比網上的公開課總結的更全面、更系統。不過,有個致命的問題是,大多數人其實看不下去那些厚厚的書籍,也沒有很多時間來反覆品味書裡面的知識點,特別是《演算法導論》這種數學推演很多的。

如果是為了實踐應用,我覺得在實踐中遇到的時候缺啥補啥,是最省時間也是最高效的。你可以把《演算法導論》當成一本新華字典,在遇到不懂的知識點的時候,去查閱它。比如,你可以在LintCode練習演算法面試題,當遇到不懂的,如鍊表,去查一下書裡面是怎麼講解的。

另外,現在網路公開課實在是很多。個人覺得有的時候免費的東西往往是最貴的。有一些網路公開課,質量很差,你卻花了很多時間去學習,浪費的那些時間,你早就可以早點學好演算法找到工作了。

而你的工作月薪可能是1萬,可能是3萬,每多浪費一點時間,就少了乙個可能的工資收入。推薦一下《九章演算法班》這個課程,由ACM金牌選手令狐沖主講,是九章演算法神級的導師。課程除了精闢總結工作中、面試中最有用的演算法知識點,還提供了演算法解題模板,大大幫你節省了時間。

課程時長僅僅18個小時,完全不會遇到學不完、學不下去的情況。幾乎想找頂級IT企業工作的程式設計師都上過這個課,在這裡,你可以找到刷題大部隊,一起為夢想而奮鬥。

4樓:小雲朵想養鯨魚

(個人看法)

算導,首先我覺得是根據需要有選擇的看這本書。雖然像輪子哥說的呢樣跳過數學的東西去看會簡單很多,但是如果想走演算法這條路的話還是建議理解一下演算法及其證明的精髓。我第一遍看完的時候也只是過了一下證明,看不懂就往後跳一下。。。

其次,我覺得這本書讀一遍是不夠的,所以第一遍大致理解一波,知道每個演算法是幹什麼的,第二遍開始做課後題(課後題非常重要!)並複習。第三遍開始根據自己的專案或者需求挑重點學習。

最後,學習包括演算法學習都是一生的事呀。。。。

5樓:

別盲目崇拜算導,覺得想找工作就靠刷它。- 刷它還不如刷leetcode. 其實你看任何一本演算法,比如演算法之美什麼的,都比算導更省力氣。

而且演算法其實你要明白的是原理,弄明白原理然後自己換幾種語言實現一下,而算導講原理卻恰恰一點也不生動有趣,非常令人捉雞。

所以更懶的辦法是隨便去跟個名校演算法公開課,都學過一遍以後來算導看看有什麼缺漏卻有意思的演算法,抽籤實現幾個自己不熟練的,做幾道自己覺得難的思考題。

學習嘛,貓有貓路,狗有狗道。

6樓:PENG

最近一直在刷CLRS,發現自己的演算法能力有了很大進步,相比之前主要是對演算法思想的理解更深入了一些。下面是自己的幾點看法

CLRS著重於設計思想,學它之前應該需要有一定的資料結構與演算法基礎,否則看起來應該會很吃力。

書的第一部分比較重要,後面的很多演算法證明推導,複雜度計算是基於前面介紹的一些定理,例如迴圈不變式證明,主方法等。

再往後看的時候,應該明確自己的目標。如果為了複習加深入理解一些演算法,那麼在讀的時候就可以選擇性跳過一些證明,側重於看演算法部分,反之亦然。

在刷的時候可以常備一本輔助用書結合來看,例如那本《演算法》。CLRS對於某些問題講解的很棒,例如動態規劃,貪心演算法等,但也有一些講的不那麼明白,例如紅黑樹就略顯複雜,這時可以參考輔助用書。

書的最後一部分其實可以當作工具書來用了,了解一下即可,需要的時候再深入學習。

課後習題應該還是蠻重要的,但如果全做完需要的時間太多,我也只是選擇著來做。解題答案可以參考https://

7樓:冒泡

算導的內容分為幾方面,而且有可能穿插在一起,所以個人認為比較的做法是每次讀的時候挑重點看,大概下面幾方面吧:

1 複雜度理論,主要集中在前面幾章,雖然很理論但是一定要看懂,因為很多定義和定理後面用得上

2 資料結構介紹,這個可以找本資料結構書輔助看,有些書的資料結構的內容比算導通俗點,但是算導更嚴謹,所以最後還是得過來看懂(但是有些內容當理論看看即可,比如雜湊表大小的一些設計只是理論研究,實際中的HashTable用的是更實用的辦法)

3 設計思想,比如貪心,DP之類,這個可以集中看

4 演算法的複雜度證明什麼的,一開始不懂就先不要深入細節,後面水平上來了再補

6 習題,有一些重要的結論在習題裡

7 思考題,裡面介紹了一些理論比較簡單(正文懶得寫)的東西,但是這些東西在實踐中反而可能很實用(跳表,Treap之類)

8樓:

關注了這個問題下一些大神的回答。

從計算機新人的角度來講,上了一門主要講這本書的課,跟了2/5,這本書的數學部分沒有想象中的那麼難,做為數學渣滓沒有明顯閱讀障礙,有些證明看的很有爽感,中文英文可以一塊兒看,平時看中文,遇到看不明白的地方看原版,配合習題效果更佳。

然而據說看了對找工作並沒有什麼卵用,而且巨花時間,於是決定退課擼題及看普林老爺爺的紅寶書。

9樓:垂耳兔

這書並不適合所有人。我看這書的時候,發現很多地方的證明過程並沒有用數學進行形式證明而是用文字講道理,導致會產生很多歧義。後來我換了普林斯頓老爺爺的紅書就好多了。

因為紅書壓根就不證明。

10樓:maple

《演算法導論》不適用於新手入門學演算法,講得太細節,很容易失去對整體的把握,而且也會對自己造成極大的挫敗感。我覺得一本好的教材最要的不是帶給你多少詳細的知識,而是能帶給你繼續探索的興趣和慾望。這種字典一樣的書我是看了就懵逼,如果是大神,當我沒說

11樓:

我校演算法入門課的教材就是演算法導論。感覺上課和作業都是大部分時間都花在了證明上。一些沒有基礎的轉專業同學也搞定了這門課。可能是有壓力才有動力。

以及感覺中文版有的地方翻譯得有點奇怪,建議看英文的。

12樓:Morris

看一本書之前,應該先看看前言之類的,一般都會說這本書適合什麼樣的人。個人覺得,演算法導論並不適合每乙個人。

不要因為別人說書好,就跟風去看。書確實是好書,但你要適合看才行。

如何正確地掃街?

我覺得問題不在鏡頭,主要是你拍的畫面內容,帶著目的去拍,比如這乙個場景能反應一種社會現狀 反應一種流行趨勢現象 或者是一種不常見的畫面場景 引人深思的場景,這樣的需要被掃街的你拍下來。拍的時候如果不好意思直接對著人拍,假裝拍天空或者別的東西,趁他不注意按快門。機器越小越好當然。 大成攝影 掃街有很大...

如何正確地挖鼻屎?

天堂灰燼 睡前掏乾淨,不然鼻子堵著睡不著,也算一種強迫症。本人有兩年挖鼻孔經驗,是個磚家,以下內容自己撿著點聽。鼻孔不是不能挖,只是人家比較脆弱,力度控制不好容易出問題,保險起見不推薦挖而已。後來我自己慢慢摸索 研究,用力過猛出血,馬上停止,不然越搞問題越大。我的流程是這樣的 操作前提 指甲要稍長 ...

如何正確地修剪腋毛?

修剪?這個問題哪能難倒Tony老師?還不是你想要什麼樣的,就能來什麼樣的?扯的有點遠 這種小事,還是別麻煩Tony老師了,腋毛嘛,用脫毛膏脫了就行了。多省事。我就是這麼幹的,說起來我用的最早的一瓶脫毛膏,還是乙個女學員送我的,說是她用了感覺不錯給我也試試,當時感覺好尷尬的說,我心想自己穿的長袖,應該...