算法分析结课总结--回溯算法
2012-05-08 16:20
239 查看
以下是回溯算法的经典框架结构:
//t:递归的深度,也就是对象的层数。因此每次的回溯遍历都以深度为参数。 void backtrack (int t) { if(t>n) //n:对象的总深度,或对象的总层数。 output(x); //x:解的容器,一般是个数组。 else { /*f(t)和g(t)确定t层解的个数,或说第t个位置上解的可选个数。 (1)0-1问题每层都有0和1两个解。(2)n皇后问题每层都有n个解。(3)排列 问题第t层有t到n个解。所以排列问题每层解的个数跟t有关。*/ for(int i=f(t);i<=g(t);i++) { x[t]=h(i); //h(i):第t层的第i中解,x[t]:记录第t层的解。 /*constrain(t,i):判断当x[t]取h(i)时,是否有必要继续递归, 如:当前x记录的解,继续递归是否有可能比当前最优解更好,如0-1问题; 或h(i)是否是一个合法的,即符合规则的解,如n皇后问题; bound(t,i):判断当x[t]取h(i)时,当前x记录的解是否已超过界限。如0-1问题。*/ if(constrain(t,i) && bound(t,i)) backtrack(t+1); } } }
相关文章推荐
- 数据结构与算法学习总结-算法分析基础
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 高手总结分析如果利用baidu分词算法分析之二(转)
- 大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 关联规则分析算法)
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结(转载)
- 算法学习(一)—— 河内之塔(汉诺塔)算法总结和分析
- C++版本二分算法分析总结
- 总结分析一下三种求解最短路问题的算法,dijkstra算法,spfa算法,floyd算法。
- Python机器学习--预测分析核心算法(学后总结一)
- 计算机算法设计与分析观后小总结
- 实习日记:图像检索算法 LSH 的总结与分析
- 线性判别分析(LDA)算法总结
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- 开源复杂网络分析软件中社团发现算法总结
- Raft一致性算法分析与总结
- 面试总结之-查找算法分析
- 算法分析与设计期末总结(1)
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图 .
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结