算法工程師成長(zhǎng)計(jì)劃
近年來(lái),算法行業(yè)異程碚火爆湾戳,算法工程師年薪一般20萬(wàn)~100 萬(wàn)。越來(lái)越多的人學(xué)習(xí)算法广料,甚至很多非專業(yè)的人也參加培訓(xùn)或者自學(xué)砾脑,想轉(zhuǎn)到算法行業(yè)。盡管如此艾杏,算法工程師仍然面臨100萬(wàn)的人才缺口拦止。缺人、急需糜颠,算法工程師成為眾多企業(yè)獵頭爭(zhēng)搶的對(duì)象。
計(jì)算機(jī)的終極是人工智能萧求,而人工智能的核心是算法其兴,算法已經(jīng)滲透到了包括互聯(lián)網(wǎng)、商業(yè)夸政、金融業(yè)元旬、航空、軍事等各個(gè)社會(huì)領(lǐng)域守问≡裙椋可以說(shuō),算法正在改變著這個(gè)世界耗帕。
下面說(shuō)說(shuō)如何成為一個(gè)算法工程師穆端,萬(wàn)丈高樓平地起,盡管招聘啟事的算法工程師都要求會(huì)機(jī)器學(xué)習(xí)仿便,或數(shù)據(jù)挖掘体啰,推薦算法,圖像識(shí)別等嗽仪,但剛?cè)腴T者荒勇,還需要先從基礎(chǔ)學(xué)起,寬基礎(chǔ)闻坚,精技術(shù)沽翔。
大學(xué)期間必須要學(xué)好的課程:C/C++兩種語(yǔ)言(或JAVA)、高等數(shù)學(xué)窿凤、線性代數(shù)仅偎、數(shù)據(jù)結(jié)構(gòu)跨蟹、離散數(shù)學(xué)、數(shù)據(jù)庫(kù)原理哨颂、操作系統(tǒng)原理喷市、計(jì)算機(jī)組成原理、人工智能威恼、編譯原理品姓、算法設(shè)計(jì)與分析。
?大一上學(xué)期:
1.C語(yǔ)言基礎(chǔ)語(yǔ)法必須全部學(xué)會(huì)箫措,提前完成C語(yǔ)言課程設(shè)計(jì)腹备。
2.簡(jiǎn)單數(shù)學(xué)題:求最大公約數(shù)、篩法求素?cái)?shù)斤蔓、康托展開(kāi)植酥、同余定理、次方求模等弦牡。
3.計(jì)算機(jī)課初步:三角形面積友驮,三點(diǎn)順序等等。
4.學(xué)會(huì)計(jì)算簡(jiǎn)單程序的時(shí)間復(fù)雜度和空間復(fù)雜度驾锰。
5.二分查找卸留、貪心算法經(jīng)典算法。
6.簡(jiǎn)單的排序算法:冒泡排序法椭豫、插入排序法耻瑟。
7.高等數(shù)學(xué)。
8.操作系統(tǒng)應(yīng)用:DOS命令赏酥,學(xué)會(huì)Windows系統(tǒng)的一些小知識(shí)喳整,學(xué)會(huì)編輯注冊(cè)表,學(xué)會(huì)使用組策略管理器(gpedit.msc)管理組策略等裸扶。
?大一下學(xué)期:
1.掌握C++部分語(yǔ)法框都,如引用類型、函數(shù)重載等姓言,基本明白什么是類瞬项。
2.學(xué)會(huì)使用棧和隊(duì)列等線性結(jié)構(gòu)。
3.掌握BFS和DFS以及樹(shù)的前序何荚、中序囱淋、后序遍歷。
4.學(xué)會(huì)分治策略餐塘。
5.掌握排序算法:選擇排序妥衣、歸并排序、快速排序、計(jì)數(shù)税手、基數(shù)排序等等蜂筹。
6.動(dòng)態(tài)規(guī)劃:最大子串和、最長(zhǎng)公共子序列芦倒、最長(zhǎng)單調(diào)遞增子序列艺挪、01背包、完全背包等兵扬。
7.數(shù)論:擴(kuò)展歐幾里德算法麻裳、求逆元、同余方程器钟、中國(guó)剩余定理津坑。
8.博弈論:博弈問(wèn)題與SG函數(shù)的定義、多個(gè)博弈問(wèn)題SG值的合并傲霸。
9.圖論:圖的存儲(chǔ)疆瑰、歐拉回路的判定、單源最短路Bellman-Ford算法及Dijkstra算法昙啄、最小生成樹(shù)Kruskal算法及Prim算法穆役。
10.學(xué)會(huì)使用C語(yǔ)言進(jìn)行網(wǎng)絡(luò)編程與多線程編程。
11.高等數(shù)學(xué)梳凛、線性代數(shù):做幾道“矩陣運(yùn)算”分類下的題目孵睬。
12.學(xué)習(xí)matlab,如果想?yún)⒓訑?shù)學(xué)建模大賽伶跷,需要學(xué)這個(gè)軟件。
?大一假期:
1.掌握C++語(yǔ)法秘狞,并熟練使用STL(重要)叭莫。
2.試著實(shí)現(xiàn)STL的一些基本容器和函數(shù)、使自己基本能看懂STL源碼烁试。
3.數(shù)據(jù)結(jié)構(gòu):字典樹(shù)雇初、并查集、樹(shù)狀數(shù)組减响、簡(jiǎn)單線段樹(shù)靖诗。
4.圖論:使用優(yōu)先隊(duì)列優(yōu)化Dijkstra算法及Prim算法,單源最短路徑之SPFA支示,差分約束系統(tǒng)刊橘,多源多點(diǎn)最短路徑之FloydWarshall算法,求歐拉回路(圈套圈算法)颂鸿。
5.拓?fù)渑判颍簭?fù)雜BFS和DFS搜索促绵、復(fù)雜模擬題訓(xùn)練。
6.動(dòng)態(tài)規(guī)劃:多重背包、分組背包败晴、依賴背包等各種背包問(wèn)題(參見(jiàn)背包九講)浓冒。
7.計(jì)算幾何:判斷點(diǎn)是否在線段上、線段相交尖坤、圓與矩形的關(guān)系稳懒、點(diǎn)是否在多邊形內(nèi)、點(diǎn)到線段的最近點(diǎn)慢味、多邊形面積场梆、求多邊形重心、求凸包贮缕、點(diǎn)在任意多邊形內(nèi)外的判定辙谜。
8.學(xué)習(xí)使用C/C++連接數(shù)據(jù)庫(kù)、學(xué)習(xí)一種C++的開(kāi)發(fā)框架來(lái)編寫一些窗體程序(如MFC感昼、Qt)装哆。
?大二全年:
1.熟練掌握數(shù)據(jù)結(jié)構(gòu):?jiǎn)握{(diào)隊(duì)列、堆定嗓、并查集蜕琴、樹(shù)狀數(shù)組、哈希表宵溅、線段樹(shù)凌简、LCA與RMQ的轉(zhuǎn)化、后綴樹(shù)恃逻、字典樹(shù)雏搂、KMP算法、AC自動(dòng)機(jī)理論與實(shí)現(xiàn)等等寇损。
2.圖論一:強(qiáng)連通分量凸郑、雙連通分量、割點(diǎn)矛市、橋芙沥、強(qiáng)連通分量和雙連通分量縮點(diǎn)、二分圖匹配(二分圖最大匹配浊吏、最小點(diǎn)集覆蓋而昨、最小路徑覆蓋、二分圖最優(yōu)匹配找田、二分圖多重匹配)歌憨、網(wǎng)絡(luò)流(最大流的基本SAP、最大流的ISAP/Dinic等高效算法墩衙、最小費(fèi)用最大流躺孝、最大流最小割定理)等享扔。
3.動(dòng)態(tài)規(guī)劃:斜率優(yōu)化、四邊形優(yōu)化動(dòng)態(tài)規(guī)劃植袍、樹(shù)形動(dòng)態(tài)規(guī)劃惧眠、狀態(tài)壓縮動(dòng)態(tài)規(guī)劃,多做動(dòng)態(tài)規(guī)劃難題于个,訓(xùn)練思維氛魁,向動(dòng)態(tài)規(guī)劃更高級(jí)進(jìn)階。
4.數(shù)論和組合數(shù)學(xué):高斯消元法厅篓、積性函數(shù)的應(yīng)用秀存、歐拉定理、費(fèi)馬小定理羽氮、威爾遜定理或链、群論基礎(chǔ)、Polya定理與計(jì)數(shù)問(wèn)題档押、Catalan數(shù)澳盐。
5.計(jì)算幾何:多邊形間并蹱點(diǎn)對(duì)、凸多邊形間對(duì)蹱點(diǎn)對(duì)令宿、四邊形剖分叼耙、三角剖分、凸多邊形最小周長(zhǎng)外接矩形粒没、凸多邊形最小面積外接矩形筛婉、凸多邊形間最小距離、凸多邊形直徑癞松、凸多邊形的寬度等各種旋轉(zhuǎn)卡殼相關(guān)算法爽撒、最小覆蓋圓、定圓最大點(diǎn)集覆蓋响蓉、平面上最近點(diǎn)對(duì)匆浙、三維計(jì)算幾何算法。
6.圖論二:網(wǎng)路流的各種構(gòu)圖訓(xùn)練(重要)厕妖、最小割與最小點(diǎn)權(quán)覆蓋等的關(guān)系、次小生成樹(shù)挑庶、第k短路言秸、最小比率生成樹(shù)等。
7.學(xué)好專業(yè)課知識(shí):理解數(shù)據(jù)庫(kù)原理迎捺、學(xué)會(huì)SQL語(yǔ)句举畸、學(xué)會(huì)使用觸發(fā)器、學(xué)好計(jì)算機(jī)組成原理凳枝。
?大二假期:
1.自學(xué)完離散數(shù)學(xué)抄沮。
2.自學(xué)概率論部分章節(jié)跋核。
3.自學(xué)操作系統(tǒng)部分章節(jié)。
?大三以后:
選擇自己感興趣的方向進(jìn)行研究叛买,參加ACM-ICPC競(jìng)賽的隊(duì)員砂代,需要全面學(xué)習(xí)和集訓(xùn)。
?課程推薦:
必學(xué)課程:C/C++/JAVA率挣、數(shù)據(jù)結(jié)構(gòu)刻伊、算法設(shè)計(jì)與分析、離散數(shù)學(xué)椒功、線性代數(shù)捶箱、概率論、操作系統(tǒng)动漾、網(wǎng)絡(luò)原理丁屎、編譯原理。
?書(shū)籍推薦
1.《C++ Primer中文版》
2.《C++編程思想》
3.《算法競(jìng)賽入門經(jīng)典》
4.《算法競(jìng)賽入門經(jīng)典:訓(xùn)練指南》
5.《趣學(xué)算法》
6.《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:知識(shí)與入門》
7.《ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽:題目與解讀》
8.《算法藝術(shù)與信息學(xué)競(jìng)賽》
9.《組合數(shù)學(xué)》
10.《數(shù)論入門》
11.《算法導(dǎo)論》
12.《ACM-ICPC世界總決賽試題解析》
版權(quán)聲明:本文為博主原創(chuàng)文章旱眯,未經(jīng)博主允許不得轉(zhuǎn)載晨川。
本人博客原文:http://blog.csdn.net/rainchxy/article/details/78315698