当前位置: 首页 > wzjs >正文

推荐一个两学一做的网站企业网站优化面向什么工作

推荐一个两学一做的网站,企业网站优化面向什么工作,什么网站能买建设摩托车,俄语网站推广0-1背包问题的回溯法解决 在这篇文章中已经讨论过0-1背包问题和背包问题的动态规划以及贪心解法,本文将介绍0-1背包问题的回溯法解决 问题描述 给定n种物品和一个容量为C的背包。物品i的重量是wi,其价值为vi。问应如何选择装入背包的物品,…

0-1背包问题的回溯法解决

在这篇文章中已经讨论过0-1背包问题背包问题动态规划以及贪心解法,本文将介绍0-1背包问题的回溯法解决

问题描述

给定n种物品和一个容量为C的背包。物品i的重量是wi,其价值为vi。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

问题分析

0-1背包问题是一个经典的组合优化问题,属于NP完全问题。它可以通过回溯法来解决,回溯法是一种系统地搜索问题解的方法。在回溯法中,我们通过构建解空间树来探索所有可能的解,并通过剪枝策略来减少搜索空间。

子集树

在回溯法中,0-1背包问题可以被看作是一个子集树问题。每个节点代表一个决策点,即是否将当前物品放入背包中。左子树表示将当前物品放入背包,右子树表示不放入背包。
在这里插入图片描述

剪枝条件

为了减少搜索空间,我们可以使用以下剪枝条件:

  1. 进入左子树的条件:当前物品的重量不超过背包的剩余容量,即 w[i] + cw <= c
  2. 进入右子树的条件:剩余物品的总价值加上当前已放入背包的物品价值之和不小于已有的最大价值,即 r + cv >= best

(这个问题和装载问题不能说很像吧,起码也是一模一样,代码相似度99%,剩下的1%别忘了背包问题有重量和价值两个量)

代码实现

数据结构

  • best:记录当前找到的最大价值。
  • bestx[]:记录最优解,即哪些物品被放入背包。
  • x[]:记录当前解,即当前路径上哪些物品被放入背包。
  • cw:当前背包中物品的总重量。
  • cv:当前背包中物品的总价值。
  • r:记录剩余物品的总价值,初始值为所有物品的总价值。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#define MAX 100int n; // 物品数量
int w[MAX]; // 物品重量
int v[MAX]; // 物品价值
int c; // 背包容量
int best = 0; // 最大价值
int bestx[MAX]; // 记录最优解
int x[MAX]; // 当前解
int cw = 0; // 当前重量
int cv = 0; // 当前价值
int r = 0; // 剩余物品的总价值void backtrack(int i) {if (i > n) {best = cv;for (int j = 1; j <= n; j++) {bestx[j] = x[j];}return;}r -= v[i];if (w[i] + cw <= c) { // 进入左子树cw += w[i];cv += v[i];x[i] = 1;backtrack(i + 1);cw -= w[i];cv -= v[i];x[i] = 0;}if (r + cv >= best) { // 进入右子树x[i] = 0;backtrack(i + 1);}r += v[i];
}int main() {cin >> n >> c;for (int i = 1; i <= n; i++) {cin >> w[i] >> v[i];r += v[i];}backtrack(1);cout << "最大价值:" << best << endl;for (int i = 1; i <= n; i++)cout << bestx[i] << " ";return 0;
}

代码说明

  • 进入下一层结点:在进入下一层结点时,需要将 r 减去当前物品的价值,因为不论这个物品是否放入背包,r 是剩余物品的总价值,都不应该包含当前物品。
  • 退回上一层结点:在退回上一层结点时,需要将 r 加回当前物品的价值。
  • 剪枝条件:在进入右子树时,已经判断过走右支也可以获得最优解,因此不需要额外判断是否 cw >= bestw

实例

假设有5件物品,背包容量为10,输入如下:

物品重量 (w)价值 (v)
126
223
365
454
546

运行程序后,输出最大价值为15,放入背包的物品为第1、2、5件物品。经验证,该解正确。

在这里插入图片描述


文章转载自:

http://2J9oPaTG.ndLww.cn
http://kYiODu2K.ndLww.cn
http://D4Cn65Fi.ndLww.cn
http://WzZlBiYI.ndLww.cn
http://BnsmSH6o.ndLww.cn
http://W5EAow8e.ndLww.cn
http://BcQXII0P.ndLww.cn
http://o4vaxOpP.ndLww.cn
http://xAueUwSN.ndLww.cn
http://trdpMv2x.ndLww.cn
http://p8O12pV1.ndLww.cn
http://lNoDUZIB.ndLww.cn
http://VCOesuBE.ndLww.cn
http://P7TxxbuP.ndLww.cn
http://VsmEhQA0.ndLww.cn
http://QqDHDYz3.ndLww.cn
http://zzTqRld8.ndLww.cn
http://kgoR8oK6.ndLww.cn
http://eX3gL56p.ndLww.cn
http://ET5ebyVK.ndLww.cn
http://odtWHXKp.ndLww.cn
http://ieeSjUpp.ndLww.cn
http://ss5U2xJr.ndLww.cn
http://Of9UaE1T.ndLww.cn
http://JwKvoxZv.ndLww.cn
http://BvjmXe2n.ndLww.cn
http://rsS8S5ba.ndLww.cn
http://JuXvw5zp.ndLww.cn
http://mWmr56RF.ndLww.cn
http://r5ptXZAw.ndLww.cn
http://www.dtcms.com/wzjs/635877.html

相关文章:

  • 内蒙古建设部网站河南seo公司
  • 网站建设实施步骤做非物质文化遗产网站的风险
  • 甘肃做网站找谁山西太原今天重大新闻
  • 网站视觉元素上虞做网站公司
  • 品牌网站建设企业上海域邦建设集团网站
  • 网站建设简称什么网站建设书案例
  • 手机网站建设规划书logo网站设计素材
  • 网站小图标wordpress增加产品模块
  • 自己做的网站打开超慢三只松鼠营销案例分析
  • 网站制作便宜博物馆设计公司哪个好
  • 北京网站设计的公司城市分站cms
  • 河南城源建设工程有限公司网站湖北工程建设总承包有限公司网站
  • 杭州网站建设加q479185700wordpress it模板下载地址
  • 2015年做哪个网站能致富wordpress多域名访问
  • 建设公司网站内容正规的编程培训机构
  • 建设厅网站如何查询企业信息网小县城做房地产网站
  • 搜索网站建设推广优化php做网站页面
  • 便宜模板网站建设wordpress页眉置顶
  • 手机看电影的网站建设网站建设的方法有四种
  • 设计网站有哪些东南亚做网站 什么语言
  • 做网站口碑比较好的大公司营销型单页网站
  • 怎么建设视频网站提供佛山网站制作
  • icp网站 是什么意思免费微信小程序模板
  • js网站源码下载如何创作自己的平台
  • 网站建设龙采科技企业所得税怎么算100万以下
  • 美团网网站建设 费用重庆网站开发
  • 京东网站谁建设北大青鸟培训机构官网
  • 做科普网站汕头网站制作公司
  • 网站推广的基本方法为网络游戏代理
  • 怎么评价网站做的好坏佛山网站建设外贸