分支限界法——电路板排序问题和批处理作业调度问题

 电路板排序问题要求出拥有最小密度的最佳排序,当时我们是用回溯法来求的。

回顾了一下电路板问题,把当初没看懂的完善了一下。

当初用回溯法的基本思路,就是考虑我们插槽中包含的电路板数量是否等于其总数量,如果不相等则代表该电路板一定会产生跨越,因此要使得密度+1。

那么如果我们采用分支限界法的堆结构,那么构建的解空间树有n层,每层每个节点n-i个分支。当且仅当到达叶子节点开始结算每条路径的跨越数量,同样还是以当前插槽中包含的电路板数量是否等于其总数量为判断条件,若<则产生跨越使其密度+1。并且每次遍历完一条路径,如果有更小的跨度就可以更新,若当前跨度大于最小跨度则剪枝。

 我们以广度优先遍历,每次寻找每层中最小跨度的节点最为下一次拓展的活结点,直到我们遍历完所有的活结点为止。

 

 


 

用分支限界法解决批处理作业调度问题,那么 我们应当建立一个最小堆进行分支选取。对于每层节点的分支应当是n个作业,以在两台机器上完成的处理时间为下界,选取最小结点进行遍历。

bbFlow(){

    对各作业在机器1和2上作业时间排序

    do{

        if(到达叶结点){

            if(当前作业安排机器2上完成时间和 < bestc){

                更新bestc;

                更新最优解;

            }

        }else{

            For(int i=enode.已安排作业数; i<总作业数; i++){

                求得当前下界bb;

                If(bb < bestc){

                    结点插入最小堆;

                }

            }

        }

        取下一个拓展结点;

    }while(enode!=null&&enode.s<=n)

}

 

 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值