小評《算法導論》(轉載)

原帖地址:http://blog.sina.com.cn/s/blog_5a3929df0100eoje.html

 

走進算法——小評《算法導論》

   “程序=算法+數據結構”這式子我們都知道,可是卻又不是很“知道”。越來越高級的程序設計語言和集成開發環境幫助我們進行快速的軟件開發,代碼自動生成機制和封裝良好的組件技術使得我們可以像搭積木一樣構造系統。於是我們開始對數據結構和算法生疏了,轉而跟風去學習這樣那樣的編程語言。很多本科生正是因爲這樣的原因錯過了打好堅實基礎的大好時間,在技術的海洋中迷失了方向。於是,多了很多有趣的問題,譬如語言之爭、平臺之爭……甚至還沒有開始系統掌握一門語言之前就開始考慮是學習Java還是C++,PHP還是CGI……當然現在又多了c#、Ruby、Python等等等等。捨本逐末的做法明顯愚蠢,可我們恰恰是樂此不疲。


直到真正開發項目或者做科研的時候,才意識到自以爲了不起的編程技術並不足以應付真正的研發需要。其實很多很多的軟件開發恰恰需要紮實的理論基礎知識,如何高效地處理併發任務,如何應對高負載和阻塞,如何解決系統瓶頸等等。很多的系統其實需要我們絞盡腦汁,找到一套切實可行的數據結構和運行算法。而IT技術職位之所以還處於高薪之列,正是因爲需要更多的基礎知識紮實、擁有創造性能力的開發人員。君不見,現有的IT技術職位的筆試和麪試涉及越來越多的算法和數據結構方面的知識。我身邊也有衆多同仁開始意識到自己上學時候的欠缺,紛紛惡補數據結構和算法分析。



如果有人要我推薦一本系統研習算法的圖書,那我會不加思索地選這本《算法導論》。有人說這麼多的算法書籍,爲何要推薦這本。其實,和介紹各種開發平臺和程序設計語言的那些抄來抄去的書相比,算法類的書實在是少的可憐。在如此有限的書籍之中找到一本最好的還是相對比較容易的。我鍾情這本書的原因如下:



1.這是一本科班教材。數不清的名牌大學採用了這本書作爲計算機專業的算法教材,其中包括卡內基•梅隆、麻省理工、斯坦福三所公認擁有全世界最頂尖的計算機科學專業的學校。所以這本書是可信的、嚴謹的、科學的、經過檢驗的。同時,課後習題的存在,可以幫助我們檢驗自己的學習情況。



2.這本書的涵蓋範圍相當的廣。由易到難,幾乎囊括絕大部分主要的算法分支。如果想通過一本書就係統地學習算法分析與設計課程,那麼本書顯然是最佳選擇之一。當然也有《算法導論》一書沒有涵蓋的方面,但是,確實已經相當廣博了。



3.這本書具有一定的深度。不同專題的討論具有相當的深度,基本上從分析和設計思想方面來傳遞知識體系和方法論,引導我們建立自己的思考方式。單靠學習到的書本知識肯定是不夠的,但是通過有一定深度的訓練,我們可以學會如何進行算法的分析與設計,不至於浮在面上。



4.綜合以上:既有深度又有廣度,同時保持科學的嚴謹性的一本書,以我目前的閱讀經歷來看,只此一本。當然,有更好的書,即高德納(Knuth)的《計算機程序設計藝術》。但那是大部頭,至今還沒有寫完,全書七卷纔剛剛進行到第四卷。而且就已經出版的四卷書來看,想要讀通這部書,沒有兩、三年功夫還做不到。我表弟是專搞OI和ACM的,以他的投入程度,一樣是讀了一半《計算機程序設計藝術》就投入了《算法導論》的懷抱。所以我會推薦《算法導論》。至於《計算機程序設計藝術》這套書,等學會了這一本書後再去研究,也還是很大的工程。



5.適用性好。《算法導論》除了具有教材的系統性外,同時在安排結構的時候也充分把各個章節獨立起來,使得讀者能夠有選擇地閱讀自己需要的內容。在附錄中還提供了必備的數學基礎知識介紹。初學者作爲教材,程序員作爲參考書,應試者用來突擊複習,都是不錯的選擇。同時,全書使用僞代碼進行描述,沒有語言上的差別,也擴大了本書的適用範圍。



6.選擇一本書當然是爲了更好地學習,《算法導論》的另一個優勢就是,MIT的開放課程計劃爲廣大求知若渴的青年們提供了與本書配套的視頻教程、課堂講稿、課後作業、測驗和教師參考。讓我們有機會獲得更好的學習效果。(該課程在MIT的中文網址:
http://www.myoops.org/cocw/mit/E ... ourseHome/index.htm。該課程在MIT的英文網址:http://ocw.mit.edu/OcwWeb/Electr ... ourseHome/index.htm。VeryCD提供的Emule課程下載網址:http://lib.verycd.com/2006/03/02/0000092463.html。)



當然本書也有一點不足。其一是書後習題沒有答案,這其實在算法學習中很惱人,同樣的問題會有很多不同的解決算法,初學者無法知道自己是否已經掌握瞭解決問題的較好辦法,好在MIT開放課程中會提供部分答案;其二因爲教材的本質,使得閱讀的趣味性相對降低,至少不具備暢銷書(例如headfirst系列)的幽默感,同時在舉例方面也有所欠缺,有時理解起來不是特別順暢。但是算法研究就是如此,需要專注和投入,同時在目前的圖書市場上,這本書已經是不二之選了。我第一次拜讀的時候還沒有中文版可以閱讀,啃英文版的過程對我來說也是充滿了樂趣。現在有了中文版,實在是件值得慶祝的事情,應該可以幫助我解決當時對一些句子的困惑。中文版的譯者們,其實很早以前就翻譯過本書第一版的內容,大家可以查閱《現代計算機常用數據結構和算法》一書。因此我對這次第二版的翻譯質量是很信任的,並在第一時間購買了中文版收藏在自己的書櫃之中。



如果想用2~3個月的時間系統地學習算法分析與設計,如果想要短時間地複習一下算法知識,再次的,鄭重向大家推介這本《算法導論》。不僅僅是因爲個人的喜愛,同時這本書確確實實是一本不可多得的計算機算法方面的經典教材。最後,要感謝機械工業出版社華章公司和幾位譯者,感謝他們在計算機技術略顯浮躁的今天能夠帶來這樣一本理論鉅著的中譯本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章