對ACM競賽的算法大概分了一下類,分成了數學、數據結構和算法三大塊


一 數學(Mathematics)

1 離散數學(Discrete Mathematics)

1.1 圖論(Graph Theory)
圖的遍歷(Graph Traversal): DFS, BFS
最小生成樹(Minimum Spanning Tree): Prim, Kruskal
最短路徑(Shortest Path): Dijkstra, Floyd
傳遞閉包(Transitive Closure)
關節點(Articulation Point - UndiGraph)
拓撲排序(Topological Sort - AOV-Network)
關鍵路徑(Critical Path - AOE-Network)
迴路問題: 歐拉路(Euler Path), 漢密爾頓迴路(Hamilton Tour)
差分約束(Difference Constraints): Bellman-Ford
二部圖匹配(Bipartite Matching)
網絡流(Network Flow)
...

1.2 組合數學(Combinatorics)

2 數論(Number Theory)
2.1 素數: GCD, LCM...
2.2 同餘

3 計算幾何(Computational Geometry)
線段相交, 多邊形面積, 內點外點的判斷, 凸包(Convex Hull), 重心(Bary Center)...

4 線性代數
矩陣(Matrix), 線性方程組(Linear Equations)...

5 概率論

6 初等數學與解析幾何

7 高等數學
點積(Dot Product), 差積(Cross Product), 積分(Integral), 微分(Differential)...

二 數據結構(Data Structure)

1 線性結構
線性表(Linear List)
棧(Stack), 隊列(Queue)
數組(Array), 串(String), 廣義表(General List)

2 非線性結構
樹(Tree)
堆(Heap)
圖(Graph)

3 排序

3.1 插入排序
直接插入排序(Insert Sort) O(n^2)
折半插入排序(Binary Insert Sort)
希爾排序(Shell Sort)

3.2 交換排序
冒泡排序(Bubble Sort) O(n^2)
快速排序(Quick Sort)?? O(nlogn)

3.3 選擇排序
直接選擇排序(Select Sort) O(n^2)
錦標賽排序(Tournament Sort) O(nlogn)
堆排序(Heap Sort) O(nlogn)

3.4 歸併排序(Merge Sort) O(nlogn)

3.5 基數排序(Radix Sort) O(d(n+radix))

4 查找

4.1 二分(Binary Search)

4.2 樹型
二叉搜索樹(Binary Search Tree)
平衡搜索樹(AVL Tree)
並查集(Union-Find Set)

4.3 哈希(Hashing)

三 算法(Algorithm)

1 模擬算法

2 搜索算法
2.1 枚舉搜索(Enumeration)
2.2 深度優先(Depth First Search)
2.3 廣度優先(Breadth First Search)
2.4 啓發式搜索(Heuristic Search)

3 以“相似或相同子問題”爲核心的算法
3.1 遞推
3.2 遞歸(Recursion)
3.3 貪心法(Greedy)
3.4 動態規劃(Dynamic Programming)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章