0.算法

什麼是算法

        在學習算法之前,先弄清楚算法是什麼,能做什麼。剛開始我也迷惑《算法導論》或者《數據結構與算法》中算法與圖像算法工程師、AI算法工程師中算法的關係。後來才能明白前者是通用類算法,或者基礎類算法,後者是專業類算法,需要有相關的專業知識,但是代碼實現或優化卻需要通用類算法作爲基礎。比如圖形算法中補洞算法,其中三角化就是利用動態規劃算法實現的。
        數據結構是算法設計的基礎。算法常用的設計方法有:貪婪法、分治法、動態規劃法、回溯法和枚舉法。就算法模式而言,處理各種求最優解問題時,人們常用貪婪法、動態規劃法等算法模式;處理迷宮類問題,窮盡式的枚舉和回溯是常用的模式;如何設計算法?設計算法解決問題的步驟:

  • 建立問題的數學模型
  • 考慮輸入輸出問題
  • 算法的設計
    所以:數學模型、輸入輸出方法和算法步驟是編寫計算機算法程序的三大關鍵因素。數學模型是使用數學概念和語言來對一個系統的描述。創建數學模型的過程叫做數學建模。數據結構在算法設計過程中扮演着非常重要的角色,輸入輸出方式和算法步驟設計都是基於響應的數據結構上的。

如何學習算法和數據結構

        首先入門的話,推薦《大話數據結構》和《算法圖解》。用圖來解釋數據結構和算法,幫助我們快速瞭解它們。認門之後,需要夯實基礎,推薦《數據結構和算法分析》。國內外很多大學都拿它當做教材。因爲這本書非常系統、全面、嚴謹,而且又不是特別難,適合對數據結構和算法有些基本瞭解,並且掌握了至少一門編程語言的同學。而且,這個作者也很用心,他用了三種語言,寫了三個版本,分別是:《數據結果與算法分析:C語言描述》、數據結果與算法分析:C++語言描述》、數據結果與算法分析:Java語言描述》。
        當然,《算法導論》和《算法》你肯定不會陌生。不過這兩本書雖然經典、出名,但是也特別厚,看起來費勁。《算法導論》章節安排的先後順序不是很循序漸進,裏面充斥這各種算法的正確性、複雜度的證明、推導,數學公式比較多。《算法》相對友好很多,更容易看懂,但是缺點也很明顯,就是內容不夠全面,比如動態規劃這麼重要的知識點這本書就沒有講。
        維基百科上有個算法列表:List of algorithms

發佈了262 篇原創文章 · 獲贊 168 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章