## 1. 深度優先
維護棧
將根節點放入棧
循環彈出棧頂元素,然后將棧頂元素的子節點放入棧中
當棧頂元素滿足約束條件,對其進行處理。
當棧空時,搜索結束
## 2. 廣度優先
維護隊列
將根節點放入隊列
循環彈出隊首元素,然后將隊首的子節點放入隊列中
當隊首元素滿足約束條件,對其進行處理。
當隊空時,搜索結束
## 3. 爬山法
深度優先+貪心
將棧首的子節點,采用貪心策略放入棧頂
##4. Best First
深度優先+廣度優先
維護堆
將跟節點放入堆
將兄弟節點與孩子節點中的最優節點放入堆中
若堆首節點滿足條件,對其進行處理。
堆空,搜索結束
## 5. 分支限界法
剪枝函數+廣度優先
廣度優先跑一次,找出可行解代價
對接下來的頂點,判斷其代價是否優于可行解,若是,繼續,否則孩子節點不予處理
## 6. A*算法
Best First + 代價函數
- 前言
- 插入排序
- 歸并排序
- 快速排序
- 最長公共子序列
- 斐波那契數列-臺階問題
- 求n*n階矩陣最大子矩陣階數
- 01背包
- 整數序列合并問題
- 動態規劃算法的一般解題思路
- 01背包-近似算法
- 樹搜索策略
- 求數組中的逆序對
- 并行機器最短調度問題
- 隨機算法
- 判斷兩多項式之積是否等于另一多項式
- 頂點覆蓋問題
- Apriori算法 (Introduction to data mining)
- 聚類算法-DBSCAN-C++實現
- 聚類算法-K-means-C++實現
- 聚類算法-Hierarchical(MIN)-C++
- 爬山法、分支限界法求解哈密頓環問題
- Best-First求解八數碼問題
- Naive Bayesian文本分類器