The 0-1 Knapsack Problem KNAPSACK

 Problem

       Let U = {u1, u2, . . . , un} be a set of n items to be packed in a knapsack of size C. For 1 ≤ j ≤ n, let sj and vj be the size and value of the jth item, respectively. Here C and sj, vj , 1 ≤ j ≤ n, are all positive integers. Each item should either be placed entirely in the knapsack or no.

        The objective is to fill the knapsack with some items from U whose total size is at most C and such that their total value is maximum(the knapsack cannot contain more than one item of the same type).

Dynamic programming
n Let V [ i , j ] denote the value obtained by filling a knapsack of size j with items taken from the first i items {u 1 , u 2 , . . . , ui } in an optimal way. We have

  V(i,0)=0

      V(0,j)=0

      if  i>0 and j<si ,   V(i,j)=V(i-1,j)

       if  i>0 and j³si , V(i,j)=max{V(i-1,j),V(i-1,j- si)+ vi}

         We use an (n + 1) × (C + 1) table to evaluate the values of V [i, j]. We only need to fill the table V[0..n, 0..C] row by row using the above formula. The method is formally described in Algorithm knapsack.

  1. 首先,对于每个物品 i,初始化一个二维数组 V,其中 V[i, j] 表示在考虑前 i 个物品,并且背包容量为 j 时可以获得的最大价值。

  2. 然后,对于每个物品 i 和背包容量 j,通过以下方式更新 V[i, j]:

    • 如果当前物品 i 的大小 s 小于等于背包容量 j,则 V[i, j] 的最大值为 V[i-1, j](不放入当前物品 i)和 V[i-1, j-s] + v[i](放入当前物品 i)中的较大值。
    • 如果当前物品 i 的大小 s 大于背包容量 j,则 V[i, j] 等于 V[i-1, j](不能放入当前物品 i)。
  3. 最后,返回 V[n, C],即考虑了所有物品后,在背包容量为 C 时可以获得的最大价值。算法的时间复杂度是 O(nC) 空间复杂度O(c)

【动态规划】01背包问题(通俗易懂,超基础讲解)_动态规划01背包问题-CSDN博客

【动态规划】背包问题_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620195.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水库之大坝安全监测系统解决方案

一、系统介绍 水库之大坝安全监测系统主要包括渗流监测系统、流量监测系统、雨量监测系统、沉降监测系统组成。每一个监测系统由监测仪器及自动化数据采集装置&#xff08;内置通信装置、防雷设备&#xff09;、附件&#xff08;电缆、通信线路、电源线路&#xff09;等组成&a…

node.js服务器静态资源处理

前言&#xff1a;node.js服务器动态资源处理见 http://t.csdnimg.cn/9D8WN 一、什么是node.js服务器静态资源&#xff1f; 静态资源服务器指的是不会被服务器的动态运行所改变或者生成的文件. 它最初在服务器运行之前是什么样子, 到服务器结束运行时, 它还是那个样子. 比如平…

github 双因素验证

环境 华为手机 下载app 华为应用市场下载 输入对应验证码&#xff0c;然后一路下一步即可 联系方式 手机&#xff1a;13822161573 微信&#xff1a;txsolarterms QQ&#xff1a;419396409

腾讯客户端开发实习一面

听说腾讯25年5000offer&#xff0c;我就去了...投完简历&#xff0c;当天晚上做完测评&#xff0c;第二天下午打电话约了第三天面试&#xff0c;额流程很快&#xff0c;快到第三天就寄了... 写在这里做个记录&#xff0c;也可以给学习学妹们经验&#xff0c;文末也有大厂面经合…

人工智能研究生前置知识—扩展程序库Pandas

人工智能研究生前置知识—扩展程序库Pandas pandas简介 Pandas 的主要数据结构是 Series &#xff08;一维数据&#xff09;与 DataFrame&#xff08;二维数据&#xff09;。Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。 pandas的官网&#xff1a;https://pandas.…

BGI | STCellBin:动植物组织细胞分割

简介 STCellbin 利用细胞核染色图像作为桥梁来获取与空间基因表达图谱对齐的细胞膜/壁染色图像。通过采用先进的细胞分割技术&#xff0c;可以获得准确的细胞边界&#xff0c;从而获得更可靠的单细胞空间基因表达谱。此次更新的增强功能为细胞内基因表达的空间组织提供了宝贵的…

【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题5

【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题5 第一阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛-第一阶段试题&#xff0c;第一阶段内容包括&#xff1a;网络平台搭建与设备安全防护。 本次比赛时间为180分钟。 介绍 竞赛阶段…

Web前端 Javascript笔记1

为什么学习 JavaScript? JavaScript 是 web 开发人员必须学习的 3 门语言中的一门&#xff1a; HTML 定义了网页的内容CSS 描述了网页的布局JavaScript 控制了网页的行为 JavaScript 是可插入 HTML 页面的编程代码。 JavaScript 插入 HTML 页面后&#xff0c;可由所有的现代浏…

ssm050助学贷款+jsp

助学贷款管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本助学贷款管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

噪音日冷知识:你的耳朵能承受多大的噪音?降噪耳机真的有用吗?

分贝——是对人类能听到的声音大小的一种数值化、可视化的描述。分贝数值越大&#xff0c;表示声音越大。 我们每天都能听到各种各样的声音&#xff0c;但你有关注过声音大小背后的意义吗&#xff1f;4月16日是国际噪音日&#xff0c;值此之际&#xff0c;带你了解下有关“声音…

第十届 蓝桥杯 单片机设计与开发项目 省赛

第十届 蓝桥杯 单片机设计与开发项目 省赛 输入&#xff1a; 频率信号输入模拟电压输入 输出&#xff08;包含各种显示功能&#xff09;&#xff1a; LED显示SEG显示DAC输出 01 数码管显示问题&#xff1a;数据类型 bit Seg_Disp_Mode;//0-频率显示界面 1-电压显示界面 un…

OpenHarmony南向开发案例:【智能垃圾桶】

样例简介 智能垃圾桶可以通过数字管家应用来监测垃圾桶当前可用容量&#xff0c;提醒主人及时处理垃圾&#xff1b;通过日程管家可以实现和其他智能设备联动。 核心组件位置功能距离传感器置于垃圾桶盖内侧感应垃圾量红外传感器置于垃圾桶前端感应是否有人靠近光敏电阻开发板…