人工智慧程式設計師入門應該學哪些演算法?
人工智慧這麼火,演算法是核心要義,應該從哪些開始學習入門呢?
初期
一.基本演算法:
列舉.
遞迴和分治法.
遞推.
二.圖演算法:
圖的深度優先遍歷和廣度優先遍歷.
最短路徑演算法
最小生成樹演算法
二分圖的最大匹配 (匈牙利演算法)
最大流的增廣路演算法(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問題.
七.計算幾何學.
半平面求交
可檢視的建立
點集最小圓覆蓋.
相關文章
- 程式設計師有哪些發展方向?linux運維入門學習程式設計師Linux運維
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- 程式設計師應該如何找工作呢?程式設計師
- 程式設計師你應該勇敢說不程式設計師
- 程式設計師應該少做些"工作" - johnwhiles程式設計師While
- 程式設計師永遠不應該相信"抽象“程式設計師抽象
- 入門UI設計需學習哪些技能?UI
- 程式設計入門學什麼?程式設計
- 網頁設計入門應該學什麼?網站設計八步驟分享網頁網站
- 響應式程式設計入門(RxJava)程式設計RxJava
- 程式設計師千萬不要學演算法!程式設計師演算法
- 好程式設計師web前端分享應該怎樣學好web前端?程式設計師Web前端
- 程式設計入門,這763位老程式設計師有話講!程式設計師
- 程式設計師入門,7個方法幫助你提高學習效率!程式設計師
- 好程式設計師Java學習路線分享Redis快速入門程式設計師JavaRedis
- 好程式設計師分享自學大資料入門乾貨程式設計師大資料
- java程式設計師入門先學什麼開發者工具Java程式設計師
- 程式設計入門先學什麼?程式設計
- .NET程式設計師如何快入門Spring Boot程式設計師Spring Boot
- Java程式設計師應該在2018年學習三種JVM語言Java程式設計師JVM
- Java程式設計師需要學習哪些知識?Java程式設計師
- Go Web 程式設計入門--應用 ORMGoWeb程式設計ORM
- 好程式設計師Java培訓分享演算法入門到精通之-演算法概述程式設計師Java演算法
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 有經驗的程式設計師應該如何提升自己程式設計師
- 3 年 Java 程式設計師應該具備的技能!Java程式設計師
- 程式設計師應該怎樣和領導相處?程式設計師
- 程式設計師最應該知道的一些事程式設計師
- 年終了,程式設計師應該這樣談加薪!程式設計師
- 程式設計師應該造的五大輪子程式設計師
- 月薪3k的程式設計師實習生,應該具備哪些知識,技能?程式設計師
- 好程式設計師Python學習路線之python爬蟲入門程式設計師Python爬蟲
- 程式設計師入門選擇書籍學習的利與弊程式設計師
- 普通人轉行程式設計師之自學java入門篇行程程式設計師Java
- 程式設計師的入門門檻真的那麼低嗎?程式設計師
- 入門學習ui設計就業方向有哪些?UI就業
- 程式設計師必須掌握的核心演算法有哪些?程式設計師演算法
- 程式設計師應當學會“偷懶”程式設計師