算法设计之回溯法(第5章)PPT
第5章 回溯法;有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。
回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。
回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。;问题的解空间;生成问题状态的基本方法;回溯法的基本思想;迭代回溯;子集树与排列树;装载问题;装载问题;装载问题;void backtrack (int i)
{// 搜索第i层结点
if (i n) // 到达叶结点
更新最优解bestx,bestw;return;
r -= w[i];
if (cw + w[i] = c) {// 搜索左子树
x[i] = 1;
cw += w[i];
backtrack(i + 1);
cw -= w[i]; }
if (cw + r bestw) {
x[i] = 0; // 搜索右子树
原创力文档

文档评论(0)