## 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文本分类器