Lecture 06-回溯算.pptVIP

  • 6
  • 0
  • 约 56页
  • 2017-02-01 发布于北京
  • 举报
右子树搜索条件?? 改进思想:引入一个上界函数,用于剪去不含最优解的子树,从而改进算法在平均情况下的效率。 上界函数  public static int maxLoading (int [] ww, int cc )  {  //初始化类数据成员   //初始化r   for (int i=1; i=n; i++)    r += w[i];   //计算最优载重量   backtrack(1);   return bestw; } //回溯算法 private static void backtrack (int i) {           //搜索第i层结点 if (in) {        // 到达叶结点  if (cwbestw) bestw=cw;   return; }  //搜索子树  r -= w[i]; if (cw+w[i]=c) {    //搜索左子树 cw += w[i]; backtrack (i+1); cw -= w[i];  } if (cw+rbestw)    //搜索右子树 backtrack (i+1); r += w[i]; } } public class Loading {   static int r;   //剩余集装箱重量 上界函数(不选择当前元素):当前载重量cw+剩余集装箱的重量r?当前最优载重量bestw 构造最优解 为了不仅仅得到最优装载量,而且能得到与此最优装载量对应的装载方案,即需要构造最优解,则必须在算法中记录与当前最优值相应的当前最优解。在类Loading中增加两个私有数据成员x和bestx: x用于记录从根至当前结点的路径, bestx记录当前最优解。 算法搜索到达叶结点处,就修正bestx的值。 public class Loading {  static int []x;     //当前解  static int []bestx;   //当前最优解  public static int maxLoading (int [] ww, int cc )  {  //初始化类数据成员   x=new int[n+1];   bestx=xx;   //计算最优载重量   backtrack(1);   return bestw; } //回溯算法  private static void backtrack (int i)  {        //搜索第i层结点  if (in) {       // 到达叶结点  for (int j=1; j=n; j++)  bestx[j]=x[j];  bestw=cw; return; }  //搜索子树  r -= w[i]; if (cw+w[i]=c) {   //搜索左子树 x[i]=1;  cw += w[i]; backtrack (i+1); cw -= w[i]; } if (cw+rbestw) {  x[i]=0;        //搜索右子树  backtrack (i+1); } r += w[I;] } } 解空间:子集树 可行性约束函数(选择当前元素): 上界函数(不选择当前元素): 当前载重量cw+剩余集装箱的重量r?当前最优载重量bestw ?装载问题:迭代回溯 给定背包的载重量M=10,有4个物体,价值和重量分别为 说明用回溯法求解上述背包问题的过程。画出搜索树,结点按照生成顺序编号,并在节点旁边标出生成该结点时所执行动作的结果。 课堂练习 V 15 6 12 8 W 2 2 6 7 10,18,1 2,15 5,11,1 3,8,1 4,12,1 10,18,0 5,11,1 4,21 3,8,1 10,18,0 5,11,1 8,33 10,18,0 Max 16,52 2,15,1 2,6,1 4,12,1 5,11,1 3,8,1 Max 16,52 B C A D E F H I J K Q M N O P 10,18,0 G w G Max 13,44 L Max 12,40 Y V 9,35 Max 19,53 V 15 6 12 8 11 18 W 2 2 4 3 5 10 最大价值是53 分别装入(2,,15)(4,12)(3,8)(10,18)四件物体。 批处理作业调度 * 给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和。 批处理作业调度问题要求对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最

文档评论(0)

1亿VIP精品文档

相关文档