小夕的算法入门之路
小夕都快要成XX入門指導(dǎo)專業(yè)戶了QAQ,小夕是要寫人工智能和計算機(jī)干貨的啊喂~好吧,問小夕如何入門算法的小伙伴太多了,還是寫一篇文章吧。
小夕還收到了“如何準(zhǔn)備托福”和“如何準(zhǔn)備考研英語”的求助,然而小夕沒有考過,實在幫不上啦(′Д` )
前言
由于小夕不是專業(yè)打ACM的,算法功底在目前來看只能說勉強(qiáng)夠用,因此小夕只能提供最基本的入門指導(dǎo)啦。完成后,可以找算法大神來幫你提升或者像小夕一樣做其他方向的研究。
?
對于小夕的算法水平,真怕說出來后大把掉粉T_T。以前刷過leetcode,只刷了五六十道。總體來說,easy難度的沒什么問題,middle的大部分還是能磨出來的,hard難度的只能說偶爾解決幾道了。所以對于已經(jīng)可以無壓力middle的同學(xué),可以關(guān)掉本文了。。。
?
以小夕的研究領(lǐng)域來看,算法當(dāng)然是必不可缺的。雖然斐波那契堆、攤還分析這些比較高級的數(shù)據(jù)結(jié)構(gòu)或算法在小夕的領(lǐng)域還沒有遇到過,但是像分治、搜索、圖算法、動態(tài)規(guī)劃、貪心等算法或算法思想可以說無處不在(當(dāng)然,第一次在信息檢索領(lǐng)域遇到B樹時還是很惶恐的)。完成該計劃后應(yīng)該是本科生的算法水平的(當(dāng)然,肯定比國內(nèi)大部分高校對本科生的要求高,2333)
正式開始之前,小夕再聲明一下,算法入門之路有很多,小夕不能保證小夕的這條道路是最優(yōu)的,但是這條道路確實是小夕親身走過的,并且已經(jīng)把小夕在途中遇到的坑給跳過了(比如某些渣書)。
?
首先,在開始之前建議掌握J(rèn)ava的基礎(chǔ)語法,只需要面向過程的基礎(chǔ)語法就可以。
?
基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)
書籍
《數(shù)據(jù)結(jié)構(gòu)與算法分析-C語言描述》Mark Allen Weiss;
或者《數(shù)據(jù)結(jié)構(gòu)-C++語言版》鄧俊輝;
或者《數(shù)據(jù)結(jié)構(gòu)與算法-java語言版》Adam Drozdek。
?
書籍說明
????本科學(xué)校用的是第一本教材,感覺挺不錯的。有C語言基礎(chǔ)的同學(xué)極力建議第一本。
????第二本和第三本我沒有看過,但是身邊看過的同學(xué)反映還可以。所以如果實在不會C的話,可以看第二本或者第三本。
????C/C++/Java都不會?請回溯到編程語言的學(xué)習(xí)環(huán)節(jié)。
?
學(xué)習(xí)方法
????根據(jù)你所選用的書籍,理解并可以熟練復(fù)現(xiàn)下述數(shù)據(jù)結(jié)構(gòu)及基礎(chǔ)操作(如添加刪除元素、遍歷等),并掌握算法復(fù)雜度分析的基本方法。
順序表
鏈表
樹
散列(哈希)
圖
最多了解一下遍歷就好,復(fù)雜操作暫時不需要掌握。
?
基礎(chǔ)算法
書籍
《算法》(第四版)Robert Sedgewick
《算法導(dǎo)論》ThomasH. Cormen等
?
書籍說明
????小夕的體驗來看,《算法》比《算法導(dǎo)論》更適合初學(xué)者。可以說,掌握了Java和基本的數(shù)據(jù)結(jié)構(gòu),就能一路停不下來的將這本書啃完(嗯~小夕就是停不下來的那一只)。這本書的英文版炒雞可愛,是一個很標(biāo)準(zhǔn)的紅色方塊!所以大學(xué)里某段時間小夕完全淪陷在了這本小紅書中。對了,小紅書有電子版(官方的),炒雞精致,可以體驗一下。中文版是橙色的。
????而《算法》的缺點(diǎn)就是講的實在太良心了,所以厚厚的一本書并沒有像算法導(dǎo)論一樣覆蓋面那么廣。因此對于動態(tài)規(guī)劃、貪心算法等高級算法設(shè)計思想,還是要求助《算法導(dǎo)論》。
?
學(xué)習(xí)方法
if(像小夕一樣喜歡啃書){
? ? 首先將《算法》直接啃完(邊啃邊練)。如果時間不充裕,可以放棄最后一章(字符串)和第三章中的“平衡查找樹”。其他章節(jié)最好不要省了,都是基礎(chǔ)中的基礎(chǔ)了。
????然后將《算法導(dǎo)論》的第十五章“動態(tài)規(guī)劃”和第十六章“貪心算法”啃完,并代碼實現(xiàn)一些經(jīng)典問題如LCS(最長公共子序列)。
}
else { ?
???小夕推薦一下coursera平臺上斯坦福大學(xué)開設(shè)的《算法》課程,如下圖
(誒?小夕當(dāng)時學(xué)的時候是叫“算法設(shè)計與分析”,現(xiàn)在變成算法專項了。不過看了一下目錄,內(nèi)容應(yīng)該變化不大)
?
????可以跟著這門課的教學(xué)計劃來,手頭的《算法》和《算法導(dǎo)論》作為參考書足夠了。時間不夠的話可以只完成該課程的前三個階段。
????不過這門課的老師書寫很潦草(不知道現(xiàn)在有沒有長進(jìn)),語速也蠻快的,英語不好的同學(xué)還是要以書籍為主。但是這個課程的課后習(xí)題和編程題非常良心,認(rèn)真做出來后收獲會很大的。
}
/*
*/
總結(jié)
- 上一篇: Category 特性在 iOS 组件化
- 下一篇: 强化学习在美团“猜你喜欢”的实践