人工智慧程式設計師入門應該學哪些演算法?

行者武松發表於2018-03-15

人工智慧這麼火,演算法是核心要義,應該從哪些開始學習入門呢?

人工智慧程式設計師入門應該學哪些演算法?

人工智慧程式設計師入門應該學哪些演算法?

初期

一.基本演算法:

列舉.

遞迴和分治法.

遞推.

二.圖演算法:

圖的深度優先遍歷和廣度優先遍歷.

最短路徑演算法

最小生成樹演算法

二分圖的最大匹配 (匈牙利演算法)

最大流的增廣路演算法(KM演算法).

三.資料結構.

排序(快排、歸併排(與逆序數有關)、堆排)

簡單並查集的應用.

雜湊表和二分查詢等高效查詢法(數的Hash,串的Hash)

哈夫曼樹

trie樹(靜態建樹、動態建樹)

四.簡單搜尋

深度優先搜尋

廣度優先搜尋

簡單搜尋技巧和剪枝

五.動態規劃

揹包問題.

簡單DP (最長公共子序列) (最優二分檢索樹問題)

六.數學

組合數學: 1.加法原理和乘法原理. 2.排列組合. 3.遞推關係.

數論. 1.素數與整除問題 2.進位制位. 3.同餘模運算.

計算方法. 1.二分法求解單調函式相關知識

七.計算幾何學.

幾何公式.

叉積和點積的運用(如線段相交的判定,點到線段的距離等).

多邊型的簡單演算法(求面積)和相關判定(點在多邊型內,多邊型是否相交)

凸包.

中級:

一.基本演算法:

C++的標準模版庫的應用.

二.圖演算法:

差分約束系統的建立和求解.

最小費用最大流

雙連通分量

強連通分支及其縮點.

圖的割邊和割點

最小割模型、網路流規約

三.資料結構.

線段樹.

靜態二叉檢索樹.

樹狀樹組

RMQ.

並查集的高階應用.

KMP演算法.

四.搜尋

最優化剪枝和可行性剪枝

搜尋的技巧和優化

記憶化搜尋

五.動態規劃

較為複雜的動態規劃(如動態規劃解特別的旅行商TSP問題等)

記錄狀態的動態規劃.

樹型動態規劃(

六.數學

組合數學: 1.容斥原理. 2.抽屜原理. 3.置換群與Polya定理4.遞推關係和母函式.

數學. 1.高斯消元法2.概率問題. 3.GCD、擴充套件的歐幾里德(中國剩餘定理)

隨機化演算法

七.計算幾何學.

座標離散化.

掃描線演算法(例如求矩形的面積和周長並,常和線段樹或堆一起使用)

幾何工具的綜合應用.

高階:

一.基本演算法要求:

程式碼快速寫成,精簡但不失風格

保證正確性和高效性.

二.圖演算法:

度限制最小生成樹和第K最短路.

最短路,最小生成樹,二分圖,最大流問題的相關理論(主要是模型建立和求解)

小生成樹.

無向圖、有向圖的最小環

三.資料結構.

trie圖的建立和應用.

LCA和RMQ問題(LCA(最近公共祖先問題) 有離線演算法(並查集+dfs) 和 線上演算法

雙端佇列和它的應用(維護一個單調的佇列,常常在動態規劃中起到優化狀態轉移的目的).

左偏樹(可合併堆).

四.搜尋

廣搜的狀態優化:利用M進位制數儲存狀態、轉化為串用hash表判重、按位壓縮儲存狀態、雙向廣搜、A*演算法.

深搜的優化:儘量用位運算、一定要加剪枝、函式引數儘可能少、層數不易過大、可以考慮雙向搜尋或者是輪換搜尋、IDA*演算法.

五.動態規劃

需要用資料結構優化的動態規劃.

四邊形不等式理論.

較難的狀態DP

六.數學

組合數學. 1.MoBius反演2.偏序關係理論.

博奕論. 1.極大極小過程2.Nim問題.

七.計算幾何學.

半平面求交

可檢視的建立

點集最小圓覆蓋.

原文釋出時間:2017-12-15 09:01
本文來自雲棲社群合作伙伴鎂客網,瞭解相關資訊可以關注鎂客網。


相關文章