近年來,算法行業(yè)異常火爆,算法工程師年薪一般20萬~100 萬。越來越多的人學(xué)習(xí)算法,甚至很多非專業(yè)的人也參加培訓(xùn)或者自學(xué),想轉(zhuǎn)到算法行業(yè)。盡管如此,算法工程師仍然面臨100萬的人才缺口。缺人、急需,算法工程師成為眾多企業(yè)獵頭爭搶的對(duì)象。
計(jì)算機(jī)的終極是人工智能,而人工智能的核心是算法,算法已經(jīng)滲透到了包括互聯(lián)網(wǎng)、商業(yè)、金融業(yè)、航空、軍事等各個(gè)社會(huì)領(lǐng)域。可以說,算法正在改變著這個(gè)世界。
下面說說如何成為一個(gè)算法工程師,萬丈高樓平地起,盡管招聘啟事的算法工程師都要求會(huì)機(jī)器學(xué)習(xí),或數(shù)據(jù)挖掘,推薦算法,圖像識(shí)別等,但剛?cè)腴T者,還需要先從基礎(chǔ)學(xué)起,寬基礎(chǔ),精技術(shù)。
大學(xué)期間必須要學(xué)好的課程:C/C++兩種語言(或JAVA)、高等數(shù)學(xué)、線性代數(shù)、數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、數(shù)據(jù)庫原理、操作系統(tǒng)原理、計(jì)算機(jī)組成原理、人工智能、編譯原理、算法設(shè)計(jì)與分析。
?大一上學(xué)期:
1.C語言基礎(chǔ)語法必須全部學(xué)會(huì),提前完成C語言課程設(shè)計(jì)。
2.簡單數(shù)學(xué)題:求最大公約數(shù)、篩法求素?cái)?shù)、康托展開、同余定理、次方求模等。
3.計(jì)算機(jī)課初步:三角形面積,三點(diǎn)順序等等。
4.學(xué)會(huì)計(jì)算簡單程序的時(shí)間復(fù)雜度和空間復(fù)雜度。
5.二分查找、貪心算法經(jīng)典算法。
6.簡單的排序算法:冒泡排序法、插入排序法。
7.高等數(shù)學(xué)。
8.操作系統(tǒng)應(yīng)用:DOS命令,學(xué)會(huì)Windows系統(tǒng)的一些小知識(shí),學(xué)會(huì)編輯注冊表,學(xué)會(huì)使用組策略管理器(gpedit.msc)管理組策略等。
?大一下學(xué)期:
1.掌握C++部分語法,如引用類型、函數(shù)重載等,基本明白什么是類。
2.學(xué)會(huì)使用棧和隊(duì)列等線性結(jié)構(gòu)。
3.掌握BFS和DFS以及樹的前序、中序、后序遍歷。
4.學(xué)會(huì)分治策略。
5.掌握排序算法:選擇排序、歸并排序、快速排序、計(jì)數(shù)、基數(shù)排序等等。
6.動(dòng)態(tài)規(guī)劃:最大子串和、最長公共子序列、最長單調(diào)遞增子序列、01背包、完全背包等。
7.數(shù)論:擴(kuò)展歐幾里德算法、求逆元、同余方程、中國剩余定理。
8.博弈論:博弈問題與SG函數(shù)的定義、多個(gè)博弈問題SG值的合并。
9.圖論:圖的存儲(chǔ)、歐拉回路的判定、單源最短路Bellman-Ford算法及Dijkstra算法、最小生成樹Kruskal算法及Prim算法。
10.學(xué)會(huì)使用C語言進(jìn)行網(wǎng)絡(luò)編程與多線程編程。
11.高等數(shù)學(xué)、線性代數(shù):做幾道“矩陣運(yùn)算”分類下的題目。
12.學(xué)習(xí)matlab,如果想?yún)⒓訑?shù)學(xué)建模大賽,需要學(xué)這個(gè)軟件。
?大一假期:
1.掌握C++語法,并熟練使用STL(重要)。
2.試著實(shí)現(xiàn)STL的一些基本容器和函數(shù)、使自己基本能看懂STL源碼。
3.數(shù)據(jù)結(jié)構(gòu):字典樹、并查集、樹狀數(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ī)劃:多重背包、分組背包、依賴背包等各種背包問題(參見背包九講)。
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ù)庫、學(xué)習(xí)一種C++的開發(fā)框架來編寫一些窗體程序(如MFC、Qt)。
?大二全年:
1.熟練掌握數(shù)據(jù)結(jié)構(gòu):單調(diào)隊(duì)列、堆、并查集、樹狀數(shù)組、哈希表、線段樹、LCA與RMQ的轉(zhuǎn)化、后綴樹、字典樹、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ī)劃、樹形動(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ù)問題、Catalan數(shù)。
5.計(jì)算幾何:多邊形間并蹱點(diǎn)對(duì)、凸多邊形間對(duì)蹱點(diǎn)對(duì)、四邊形剖分、三角剖分、凸多邊形最小周長外接矩形、凸多邊形最小面積外接矩形、凸多邊形間最小距離、凸多邊形直徑、凸多邊形的寬度等各種旋轉(zhuǎn)卡殼相關(guān)算法、最小覆蓋圓、定圓最大點(diǎn)集覆蓋、平面上最近點(diǎn)對(duì)、三維計(jì)算幾何算法。
6.圖論二:網(wǎng)路流的各種構(gòu)圖訓(xùn)練(重要)、最小割與最小點(diǎn)權(quán)覆蓋等的關(guān)系、次小生成樹、第k短路、最小比率生成樹等。
7.學(xué)好專業(yè)課知識(shí):理解數(shù)據(jù)庫原理、學(xué)會(huì)SQL語句、學(xué)會(huì)使用觸發(fā)器、學(xué)好計(jì)算機(jī)組成原理。
?大二假期:
1.自學(xué)完離散數(shù)學(xué)。
2.自學(xué)概率論部分章節(jié)。
3.自學(xué)操作系統(tǒng)部分章節(jié)。
?大三以后:
選擇自己感興趣的方向進(jìn)行研究,參加ACM-ICPC競賽的隊(duì)員,需要全面學(xué)習(xí)和集訓(xùn)。
-
算法工程師
+關(guān)注
關(guān)注
2文章
30瀏覽量
6133
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論