試讀《算法之美——隱匿在數據結構背後的原理(C++版)》

 

引言

 

    這本書的作者對於我們來說也是很熟悉了,在他的CSDN博客上有一句古語:

“無冥冥之志者,無昭昭之明;無惛惛之事者,無赫赫之功。”

    這句話雖是老生常談,細細品來很是發人深思。

    也是由此,纔有了這本書《算法之美——隱匿在數據結構背後的原理(C++版)》的順利出版吧,另外作者還寫有其他的幾本書包括出版的和未出版的。我是看了作者在CSDN上的博客,入手了一本關於圖像處理的書籍。  

 

學習算法

  

    算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表着用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個算法有缺陷,或不適合於某個問題,執行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。每個算法都有其存在的意義,深入研究下去,就會發現算法的樂趣無窮。

         許多算法是有難度的,理論很複雜,不容易理解和掌握,這是客觀存在的現實。但是我們可以通過提高自身分析問題和解決問題的能力來相對地降低學習難度。從基礎來講,要深入理解數據結構,至少要非常熟練地掌握一種排序算法,各種線性表的插入、刪除算法,樹的遍歷和插入、刪除算法,圖的遍歷算法等等。

 

    然後要多學習、掌握一些常見問題的解決模式,比如窮舉算法如何應用,動態規劃算法如何應用等等。最後要勤思考,對應已經掌握並解決的算法,要想想爲什麼用這種方法解決?有沒有其他方法?類似的問題怎麼辦?提高舉一反三的能力。

 

算法的樂趣:

    如果你覺得算法比較有意思,比起做那些無聊的項目有意思多了,那你就已經邁出了一大步。讀算法書時,要經常手工模擬算法的執行過程,不要怕麻煩,模擬的過程可以對算法的細節有深入的理解,解決問題後,經常心中會油然產生一種難以描述的快感、成就感。

 

    當然,算法也是非常嚴謹的,記得讀大學時算法課第一節課上,老師就給我們畫了一個大圖,告訴我們遇到一個問題,應該沿着什麼樣的思路走。遇到一個實際的問題,首先應該把它形式化(Formulation),即用數學的方式將它描述出來。其次,需要觀察問題(Observation),即觀察問題的結構和性質。這樣解決了問題之後,下次再遇到相類似的問題,就會自然而然的站在一個更高的角度來看了,這會讓自己心裏更有底,更自信!

 

試讀:遞歸—老和尚講故事

     這本書的試讀章節是:遞歸—老和尚講故事,首先介紹了遞歸的概念,然後用漢諾塔問題,傳染病問題和八皇后問題分別闡述並實踐了遞歸的兩種主要方法:分治法和回溯法。細讀下來,作者敘述引經據典,實例淺顯易懂,確實是費了心思的。

 

總結

     計算機技術的發展日新月異,最後沉澱下來的就有算法的一席,理想情況下,一本嚴肅的算法書應該在穩定、寬鬆的環境下精雕細琢。可是在社會劇烈發展的今天,在日新月異的中國,在人們習慣快餐而不再享受大餐的 快節奏生活中,在微博、微信取代文章、書信的手機網絡大潮下,這樣的理想環境根本不存在。這本《算法之美——隱匿在數據結構背後的原理(C++版)》可以研讀之,將裏邊的算法精粹讀通、讀透,變成自己的東西,那對於我們來說也是在算法之路上一個很大的進步。

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