zoukankan      html  css  js  c++  java
  • 回溯法解0/1背包问题

    我们前面说过,贪心算法用价值重量比对于可分割的背包问题是有效的,但对于0/1背包问题就无效的(0/1背包是不能分割,要就要,不要就不要)。本节用回溯法解0/1背包问题,求解过程如下:

    在搜索过程中,尽量沿着左儿子节点前进,当不能沿着左儿子节点继续前进时,就得到问题的一个部分解,并把搜索转移到

    右儿子子树。此时,估计由这个部分解所能得到的最大价值,把该值与当前的上界进行比较,如果高于当前的上界,就继续

    由右儿子子树向下搜索,扩大这个部分解,直到找到一个可行解,最后把可行解保存起来,用当前可行解的值刷新目标函数的

    上界,并向上回溯,寻找其他可能解;如果有部分所估计的最大值小于当前的上界,就丢弃正在搜索的部分解,直接向上回溯。

    向上回溯有2种情况:如果当前阶段是左儿子分支节点,就转而搜索相应的右儿子分支节点;如果当前的节点是右儿子分支节点,

    就沿着右儿子分支节点向上回溯,直到左儿子分支节点为止,然后再转而搜索相应的右儿子分支节点

  • 相关阅读:
    Node自动重启工具 nodemon
    centos 集群
    kettle操作数据库增删改
    Dinic
    vim
    mermaid简介
    联赛模拟测试32
    检讨书模板
    博客园如何添加看板娘!
    手机浏览器如何调试
  • 原文地址:https://www.cnblogs.com/youxin/p/3274826.html
Copyright © 2011-2022 走看看