我對《算法導(dǎo)論 CLRS》的態(tài)度一直是有所保留的。雖然早在國內(nèi)的時(shí)候,這本書一直被推崇為經(jīng)典。但
我那時(shí)就覺得它對算法的描述不好。一段費(fèi)解的偽碼,加上一大段費(fèi)口舌的解釋。我覺得本可以做得更好。
后來知道,這是典型的美國本科生用書,美國的本科教材,大抵很羅嗦,都是厚重的大部頭書。教授們
生怕稍有簡略,學(xué)生們就不懂;而美國的小本們,也傻呵呵的認(rèn)為書頭越重,自己越了不起。
這書中的大段解釋,也確是一番好意,就怕哪個(gè)不懂。可要真是老老實(shí)實(shí)的讀下去,分散注意要超過傳
達(dá)信息。
這本書我讀的最快樂的部分,就是每章的chapter notes。也就是在一章的末尾,介紹這一章提到的各
種內(nèi)容是何時(shí)、被誰、怎樣引入計(jì)算機(jī)科學(xué)的。不看這部分,總覺得學(xué)的就是書上的死學(xué)問。而這些引用出
處卻為我們理清了算法研究的歷史脈絡(luò),各個(gè)經(jīng)典結(jié)果的師承關(guān)系。讀這些為我?guī)砹司薮蟮臉啡ぁR步ㄗh
讀此書的人千萬不要放過這一部分,這些引用的結(jié)果就是算法研究的里程碑。
對于算法的偽碼描述,倒不必太仔細(xì)了。不能指望在算法課上學(xué)習(xí)編程,算法本來就是很純粹的數(shù)學(xué)對
象,它的設(shè)計(jì)思想完全依托于背后的數(shù)學(xué)結(jié)構(gòu),它運(yùn)作的機(jī)制以及它的美,也都來自它的數(shù)學(xué),可是書上那
些模仿C和Pascal的語句,讓算法的數(shù)學(xué)之美淪為一段機(jī)械代碼。讀者辛苦的把自己的思維變成機(jī)器,讀懂
了這些代碼,但并不會(huì)直接帶來對算法本身的領(lǐng)悟。就像一個(gè)人懂得了打牌的游戲規(guī)則,但并不意味著他就
會(huì)打牌了,因?yàn)樗赡芤琅f不通曉牌理。對算法的學(xué)習(xí)也要從問題本身的數(shù)學(xué)結(jié)構(gòu)入手,理解解決此種結(jié)構(gòu)
問題的算法它的設(shè)計(jì)思想,掌握分析具有各種結(jié)構(gòu)特征的算法的數(shù)學(xué)工具,學(xué)習(xí)怎樣發(fā)現(xiàn)問題的結(jié)構(gòu)并從中
推出問題的下界(lower bound)。這些才是學(xué)習(xí)算法的根本。
(ps評(píng)點(diǎn):現(xiàn)在才深有感觸,以前總是糾結(jié)的看它那個(gè)偽代碼,后來才想到,只要理解了思想,自己能夠?qū)?br>
出來就NB了,何必管它如何實(shí)現(xiàn)的呢,因?yàn)楸緛硭惴ň褪且粋€(gè)思想,如何變通,并自己運(yùn)用才是最重要的
!所以,根本不能記憶這些代碼,而要自己理解思想,至于實(shí)現(xiàn),有N多種可能,也許今天自己寫了這樣的
,到明天就是那樣的了)
《算法導(dǎo)論》的最大成就,也就在于它的選材。它篩選出來的結(jié)果,每一個(gè)都當(dāng)之無愧的算是計(jì)算機(jī)科
學(xué)的根基或里程碑。在所有的算法教材中,這一點(diǎn)《算法導(dǎo)論》被公認(rèn)是作的最好的。結(jié)構(gòu)也組織的合理。
盡管它的講解,對這些經(jīng)典結(jié)果的呈現(xiàn),都不是我最滿意的方式。但明珠縱然暗投也終究是明珠,《算法導(dǎo)
論》覆蓋的內(nèi)容,可作為算法最好的教學(xué)大綱,是算法課的原型。這是它不容抹煞的歷史地位。
=================================================================================================================================
我讀算法導(dǎo)論的目標(biāo):
書上的內(nèi)容全部看懂(附錄除外,已經(jīng)為這些基礎(chǔ)知識(shí)專門看了一大厚本的《離
散數(shù)學(xué)》,所以只看了幾道從前沒思考過的題,),習(xí)題(excersice)和每章末的
思考題(problem)全部嘗試獨(dú)立完成,即使不能做出,也一定要從網(wǎng)上找到答案。
實(shí)際完成的內(nèi)容:
書上內(nèi)容全部看完且看懂(當(dāng)然看了很長時(shí)間,不免有些內(nèi)容忘記了)。習(xí)題和
思考題基本全部完成,所有沒有完成的題目(自己不會(huì)做,并且也沒找到答案)一
共35個(gè)。算來平均每章一個(gè)。看著寫滿兩大本的題解,心里還是很有成就感的
(盡管我女朋友說:“你寫這些,有什么用啊?!”)
這一年零8八個(gè)月的時(shí)間我都干了什么?
一口氣讀《算法導(dǎo)論》到第30章,前26章的題基本做了,覺得實(shí)在有點(diǎn)累,調(diào)劑
一下,轉(zhuǎn)而攻讀MIT的另一本名著《計(jì)算機(jī)程序的構(gòu)造和解釋——Structure and
Interpretation of Computer Programs》,幾個(gè)月后重披戰(zhàn)甲,從27章開始看
完了全部的《算法導(dǎo)論》,并將最后9章題目做完。由于看得細(xì),而且還有其他
事情要做,前后拖了20個(gè)月,總算看完了,真的很累。
我的書評(píng):
踏踏實(shí)實(shí)看完書,仔仔細(xì)細(xì)的思考每一道題,即使不會(huì)做,至少讀過,思考過,
可能未來的某一時(shí)刻你的腦海里突然就有了靈感。
為什么我的書評(píng)只有一句話(而且似乎也沒有評(píng)價(jià))?
說真的,我作為一個(gè)小小的學(xué)生,真的沒有資格評(píng)判人家大牛用十幾年漢水和智
慧來增刪,校對,實(shí)踐,研究得來的一本著作。如果有什么不好的印象,那只能
說是沒到那個(gè)境界,理解不了,不能吃不著葡萄說葡萄酸,反而批評(píng)人家。
有心人從我上面的一大段廢話和短短的一句似是非是的書評(píng),也絕對可以看出來
這本書的卓越之處:
(1)深入淺出:能耗費(fèi)一個(gè)人20個(gè)月的時(shí)間去看,可見這本書絕非一朝一夕的快
餐,要知道即使是世界上最一流的大學(xué),利用一年的課程去講算法課,也只能挑
本書的部分章節(jié)去講而不能完全覆蓋。既然題目能做出絕大多數(shù),證明只要你用
心,這本書的難度完全是可以承受的,決不會(huì)讓你有無從下手的感覺。
(2)情節(jié)生動(dòng)有趣:對,沒錯(cuò),我就是要像形容小說一樣形容這本書,不然我絕
不可能堅(jiān)持看這么久。但是比小說有趣的是,故事里人物的命運(yùn)是作者安排的,
你或喜或悲總是被人牽著走,而這本書卻是讓你作主角去打開一扇又一扇通往未
知的大門,解開一道又一道的難題。
(3)既連貫又獨(dú)立:不同章節(jié)既獨(dú)立完備又內(nèi)在高度相關(guān)。即使你專注于某一個(gè)領(lǐng)
域,我認(rèn)為這本書給你的介紹也是很充實(shí)的,而且可以直接看,這就是為什么我
中間放下一段時(shí)間后又可以從新拿起來讀而不用重新來過。當(dāng)然個(gè)章節(jié)間內(nèi)有一
個(gè)東西是一脈相承的,那就是:(程序運(yùn)行的理論)效率。從頭到尾看得到的絕
對比單獨(dú)對待每一章得到的價(jià)值的總和大得多。
(4, 5, 6, ...)余音繞梁:老子說:三生萬物。我只說三條,萬就留待你自己去
挖掘,也留待你從書中找到精彩的答案。
祝讀此文者也能享受一趟與《算法導(dǎo)論》的精彩的馬拉松之旅。
=============================================================================================================================
posted on 2010-05-29 01:23
deercoder 閱讀(1651)
評(píng)論(2) 編輯 收藏 引用 所屬分類:
讀書