基礎(chǔ)算法學(xué)習(xí)路線及隨想
學(xué)習(xí)計劃(總感覺會被自己打臉)
辭去煙臺的工作來到北京,由于算法太弱,總是不敢投有難度的工作(算法一直是我的弱項,基本每次的算法學(xué)習(xí)計劃都是半途而廢/(ㄒoㄒ)/~~。)。其實我的工作/學(xué)習(xí)目標(biāo)一直時圍繞著數(shù)據(jù)轉(zhuǎn)的,無論是數(shù)據(jù)的抓取及數(shù)據(jù)的處理、分析等等。可總是有兩把利劍懸在我的頭上——一是薄弱的數(shù)學(xué)基礎(chǔ);二是慘不忍睹的算法技能。剛面試一家做數(shù)據(jù)方面工作的公司,應(yīng)聘的是基礎(chǔ)的數(shù)據(jù)崗位,已經(jīng)過了兩輪技術(shù)面試,在等第三輪的經(jīng)理面試(希望能過吧)。根據(jù)兩輪技術(shù)面試,這個工作應(yīng)該暫時用不上過難的技術(shù),無非是一些linux系統(tǒng)基礎(chǔ)操作及其它雜七雜八看文檔就能開始的工作。但內(nèi)功還是得修煉啊,要不基本就沒上升空間,也沒有機會更進一步參與自己比較感興趣的機器學(xué)習(xí)和數(shù)據(jù)挖掘等方面的工作了。
針對當(dāng)前的內(nèi)功難題:數(shù)學(xué)和算法。我想著還是先從算法開始吧,畢竟數(shù)學(xué)距離實際工作的距離更遠(yuǎn)一些,算法的學(xué)習(xí)可以在工作中做一個過渡,數(shù)學(xué)只能先放下了(真TM后悔考研沒好好學(xué)數(shù)學(xué))。
針對基礎(chǔ)算法,找了一些參考書,今天整理做一下計劃:
- 算法(Robert著 第四版)
- 算法導(dǎo)論
- 算法技術(shù)手冊
- 算法設(shè)計與分析基礎(chǔ) (Ananny Levitin著)
- 算法設(shè)計(王紅梅編著 一本學(xué)校教材)
- 零散網(wǎng)絡(luò)流傳的文檔
其中的《算法導(dǎo)論》比較抽象,且有很多數(shù)學(xué)推理,暫時先不看?!端惴ā泛汀端惴夹g(shù)手冊》這兩本書都比較偏工程方面一些,有一定深度且比較實用,其中主要以《算法》為主要學(xué)習(xí)參照。另外兩本《算法設(shè)計與分析基礎(chǔ)》和《算法設(shè)計與分析》是算法分析方面的,其中對算法思想的分析相當(dāng)精彩,在完成《算法》的學(xué)習(xí)之后進行學(xué)習(xí)。其他的零散的文檔多事一些ACM或者OJ方面的,作最后的練習(xí)用吧。
所以基本路線就是:
- 《算法》學(xué)習(xí),可臨時參考《算法技術(shù)手冊》完成基礎(chǔ)算法的學(xué)習(xí)
- 《算法設(shè)計與分析》、《算法設(shè)計與分析基礎(chǔ)》相互參照完成算法思想的分類
- OJ、工程實踐練習(xí)算法
時刻記住:
!!!數(shù)學(xué)真的很重要;算法真的很重要,!!!
高數(shù)買菜用不上,但會決定你在哪里買菜;算法在一般項目中用不到,但用到算法的工作總能支付你更多的薪水
基礎(chǔ)算法隨想(也是《算法》的框架介紹)
1、基礎(chǔ)(代碼工具、算法基礎(chǔ)工具)
掌握實現(xiàn)、分析和比較算法的基本原則和方法:
- Java變成模型
- 數(shù)據(jù)抽象
- 基本數(shù)據(jù)結(jié)構(gòu)
- 集合類的抽象數(shù)據(jù)類型
- 算法性能分析的方法
- 案例分析
2、排序(很多算法的基礎(chǔ))
有序的重新排列一個序列中的元素是非常重要的基礎(chǔ)算法,排序算法也是很多其他算法的基石
- 插入排序
- 選擇排序
- 希爾排序
- 快速排序
- 歸并排序
- 堆排序
- 與排序相關(guān)的問題(優(yōu)先隊列、選舉、歸并)
3、查找(Find it or Index it!!!)
從BIG數(shù)據(jù)集中找到指定的條目是非常重要的。
二叉查找樹
平衡查找樹
散列表
方法之間的關(guān)系和性能對比
4、圖(圖,算法王者)
圖的主要內(nèi)容是對象和它們之間的連接,連接可能有權(quán)重和方向。利用圖可以為大量重要而困難的問題建模。圖算法的設(shè)計非常重要。
- 深度優(yōu)先搜索
- 廣度優(yōu)先搜索
- 連通性問題
- Kruskal和Prim最小生成樹
- Dijkstra和Bellman-Ford最短路徑算法
5、字符串(不得不喝人打交道并進行數(shù)值化處理)
- 字符串是現(xiàn)代應(yīng)用程序中的重要數(shù)據(jù)類型。
- 字符串鍵的排序和查找的快速算法
- 子字符串查找
- 正則表達(dá)式模式匹配算法
- 數(shù)據(jù)壓縮算法
6、背景 (Biger逼格)
- 科學(xué)計算簡介
- 運籌學(xué)簡介
- 計算理論簡介
- 基于實踐的模擬
- B樹
- 后綴數(shù)組
- 最大流量問題
- 搜索問題、問題轉(zhuǎn)化、NP完全性
目標(biāo):理解精巧、復(fù)雜和高難度算法,熟悉優(yōu)雅、樸素和簡單的算法。進行算法式思考。