装载问题.pptVIP

  • 13
  • 0
  • 约小于1千字
  • 约 10页
  • 2017-05-27 发布于河南
  • 举报
装载问题

装载问题实质上是求第一艘船的最优装载 在算法的while循环中,首先检测当前扩展节点的左儿子节点是否为可行节点。如果是,则将其加入到活结点队列中,然后将其右儿子节点加入到活结点队列中(右儿子结点一定是可行结点)。两儿子节点都产生后,当前扩展节点被舍弃。 活结点队列中的队首元素被取出作为当前扩展结点,由于队列中每一层结点之后都有一个尾部标记-1,故在取队首元素时,活结点队列一定不空。当取出的元素值是-1时,在判断当前队列是否为空。如果队列非空,则将尾部标记-1加入活结点队列,算法开始处理下一层的活结点。 While(true) { //检查左儿子结点 if(Ew+w[i] =c)//x[i]=1 EnQueue(Q,Ew+w[i],bestw,i,n); //右儿子结点总是可行的 EnQueue(Q,Ew,bestw,i,n);//x[i]=0 Q.Delete(Ew);//取下一扩展结点 If(Ew==-1){//同层结点尾 部 If(Q.IsEmpty()) Return bestw; Q.Add(-1);//同层结点尾部标志 Q.Delete(Ew);//取下一扩展结点 i++; }} class QNode { QNode *parent;//指向父节点的指针 bool LChild;//左儿子标志 T

文档评论(0)

1亿VIP精品文档

相关文档