zoukankan      html  css  js  c++  java
  • 算法---分支限定0/1背包--蚁群算法

    用蚁群算法解决01背包问题。

    我本以为就是完全的蛮力法,但百度后觉得应该是这个

    (4)分支限界-优先队列(STL) 


    // #  分支限界优先队列法
    //  队列中的节点类型
    struct NodeType
    {//  分支限界节点
     int no;     //  节点编号
     int i;     //  当前节点在搜索空间的层次
     int w;     //  当前节点的总重量
     int v;     //  当前节点的总价值
     int x[MAXN];           //  当前节点包含的解向量
     double ub;    // 上界
     
     bool operator<(const NodeType& node) const
     {//  优先队列按此方式排序
      return ub < node.ub;         //  ub越大越优先出队
     }
    };
    /*  主干
     *  ->初始化根节点
     *  ->计算根节点上界及进队
     *  ->循环遍历队列,条件为非空:出一个节点,
           计算左孩子节点剪枝条件,满足的左孩子计算上界及进队;
           计算右孩子节点上界,符合上界条件的右孩子进队;
        (根据容量剪去左孩子,根据上界条件剪去右孩子)
     *
    */
    void bfs();  
    //  进队----不是叶子节点就直接进队,是叶子节点则判断是否更优解,是的话则更新最优解
    void EnQueue(NodeType e,priority_queue<NodeType> &qu);
    //  计算边界 就是根据剩余容量的大小,计算剩下全部物品装入的价值和装入部分物品的价值
    //  (部分物品按照单位容量内价值高低的顺序装入---这有点贪心的思想了)
    void bound(NodeType &e);
    // !#  分支限界优先队列法


    版权声明:本文为CSDN博主「D丶酒舞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u010323330/article/details/80302227

  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/zlshy/p/11991521.html
Copyright © 2011-2022 走看看