【动态规划】背包问题{更新中}

最详细动态规划解析——背包问题 动态规划的定义要解决一个复杂的问题,可以考虑先解决其子问题。这便是典型的递归思想,比如最著名的斐波那契数列,讲递归必举的例子。斐波纳契数列的定义如下:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) 用递归可以很快写出这样一个函数,咋一看真牛逼,几行代码就搞定了int fib(int i) { if(i <= 1) { ret 阅读详情

 

0-1背包问题

背包问题的产生:鱼与熊掌不可兼得的问题。比如一个软件的功能丰富了,但同样其运行时占用资源和静态软件包的体量也上去了。如何做到有限的资源,价值最大化。

0-1背包问题:对于一堆价值为v_{i},重量为w_{i}的物品 :[ (w_{1},v_{1}),(w_{2},v_{2}),(w_{3},v_{3}),...(w_{n},v_{n})],和一个总承重 w 的背包。如何取舍使得背包总价值最大化。每个物品要么加一件要么不加。

解决方案1:计算性价比 q_{i} = v_{i}/w_{i},按排序放入。

缺点:举反例,有一堆按性价比排序后的物品: [ (5,10),(4,7),(2,3.5),(2,1)],背包承重 6。给出的答案是物品1。但是物品2加上物品3的价值是最大的,所以上述方案不满足要求。但注意到,如果背包承重 5 ,那么给出的答案就是对的。

解决方案2:考虑分解问题,注意到当物品数量很少,或者背包承重很小时,很容易得出最优解(只能放的下特定物品)。这个思路中有两个变量很小,物品数量 \small i ,承重 w。因此我们假设对于前 \small i 个物品,和一个总承重 w 的背包,最优解是B[i][w] = v_{max}。那么对于前 (i+1) 个物品,和一个总承重 w 的背包,有以下两个情况:

  • 最优解中不包含这个物品:等于背包 w 承重不变 ,只有前 i 个物品的最优解 B[i][w] 。
  • 最优解中包含这个物品:等于对于前 i 个物品,承重至多为w-w_{i}的包的价值最优解 B[i][w-w_{i}],以此为基础,又放入了这个物品,得到 B[i][w-w_{i}]+v_{i}(因为前者如果不是最优,我可以找到一个比前者更优的解作为 B[i][w-w_{i}],然后加入这个物品,得到更优的解,与情况描述矛盾)。

比较两者优劣后,即可得最优解等式: B[i+1][w] =max(B[i][w] ,B[i][w-w_{i}]+v_{i})。

 

完全背包问题

完全背包问题的产生:可以认为是数学上对 0-1 问题的拓展。

完全背包问题:物品数量无限,可以不加,也可以加 n 次。

解决方案:思路和 0-1 背包问题是一样的,对于前 (i+1) 个物品,和一个总承重 w 的背包,有以下 k 种情况:

  • 最优解中不包含这个物品:等于背包 w 承重不变 ,只有前 i 个物品的最优解。
  • 最优解中包含 1 个物品:等于对于前 i 个物品,承重至多为w-w_{i}的包的价值最优解,加入了 1 个该物品(因为前者如果不是最优,我可以找到一个比前者更优的解,然后加入这个物品,得到更优的解,矛盾)。
  • 最优解中包含 2 个物品:等于对于前 i 个物品,承重至多为w-2*w_{i}的包的价值最优解,加入了 2 个该物品(因为前者如果不是最优,我可以找到一个比前者更优的解,然后加入这个物品,得到更优的解,矛盾)。
  • 最优解中包含 3 个物品:等于对于前 i 个物品,承重至多为w-3*w_{i}的包的价值最优解,加入了3 个该物品(因为前者如果不是最优,我可以找到一个比前者更优的解,然后加入这个物品,得到更优的解,矛盾)。
  • 。。。。
  • 最优解中包含 k 个物品:等于对于前 i 个物品,承重至多为w-k*w_{i}的包的价值最优解,加入了 k 个该物品(因为前者如果不是最优,我可以找到一个比前者更优的解,然后加入这个物品,得到更优的解,矛盾)。

此时,k 满足方程组 \left\{ \begin{array}{l} 0\leq w-k*w_{i} \\ 0\geq w-(k+1)*w_{i} \end{array} \right.。可得递推最优解:B[i+1][w] =max(B[i][w-t*w_{i}]+t*v_{i}) ,0\leq t \leq k。

 

 

 

 

 

时序分析28 - 时序预测 格兰杰因果关系(中) python实践1 时序分析28 - 时序预测 - 格兰杰因果关系(中) Python 实践 1 上一篇文章我们介绍了格兰杰因果关系的基本概念、背景以及相关统计检验法。本篇文章我们使用Python编程实践一下。 实践1:股票价格数据之间的格兰杰因果关系 问题:苹果公司今天的股价是否可以用来预测明天的特斯拉的股价? 数据:来自雅虎财经 import matplotlib.pyplot as plt import seaborn as sns import numpy as np import pandas as pd 读入数据 阅读详情

相关推荐

Xiaojie雷达之路---毫米波雷达基础知识---角度估计

本篇文章主要介绍毫米波雷达的基础知识中的角度估计,对于本篇文章主要回答5个问题 1.在雷达的前方,如何估计前方一个物体的角度 2.角度测量的准确性 3.如何测量多个物体的角度 4.雷达可测的角度的视场最大值为多少 5.角度分辨率取决于什么因素 文章目录估计雷达前面一个物体的角度角度测量的准确性雷达的最大角视场测量雷达前方多个距离和速度相同的物体角度分辨率角度估计的流程 估计雷达前面一个物体的角度 估计一个物体的角度,最少需要两根接收天线 发射天线发送一个chirp,经过物体发射后信号,信号分别被第一根天

XiaoJie的博客 1万+

算法——动态规划

第一题  数字三角形     1    2  3   4  5  6 7  8  9  10 从顶向下找出一条权值最小的路径。(路径的权值等于路径上各结点的值的和) 用f(i , j)表示位置i , j上最优的权值 程序: #include int b,n,a[101][101],ans=100000; void fun(int c,int x,int sum) {  i

dangyang1992的专栏 664

DID实战指南:从平行趋势检验到PSM-DID的Stata全流程解析

本文详细解析了双重差分法(DID)在政策评估中的应用,从平行趋势检验到PSM-DID的Stata全流程操作。通过实例演示和代码示例,帮助研究者掌握DID方法的核心逻辑、前提条件验证及稳健性检验技巧,提升因果推断研究的准确性。

weixin_29234239的博客 741

NYOJ 106 背包问题

背包问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1 输入第一行输入一个正整数n(1 随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1 输出输出每组测试数据中背包内的物品的价值和,每次输出占一行。 样例输入 1 3 15 5

Dear_Jia的博客 412

ESP8266连接阿里云(STM32)

一、概述 之前通过串口调试助手+ESP8266已经连接上阿里云了 ESP8266连接阿里云(串口调试助手) 这次我们使用STM32+ESP8266来接入阿里云,其实本质上就是STM32和ESP8266进行串口通信,相当于使用STM32代替之前使用的串口调试助手来发送AT指令。只是发送的字符串数据可能有些细节需要注意一下。 二、保存连接的AT指令 定义几个字符串数据保存需要发送的AT指令 //注意: //末尾记得加\r\n //字符...

xyx0610的博客 4万+

【Codesys】获取从站信息,判断是否从站断联,总线丢失

获取EtherCAT从站信息,判断是否从站断联,总线丢失

qq_35316470的博客 5731

C/C++算法实例(三)--背包问题

*部分背包问题可有贪心法求解:计算Pi/Wi 数据结构: w[i]:第i个背包的重量; p[i]:第i个背包的价值; 1.0-1背包: 每个背包只能使用一次或有限次(可转化为一次): A.求最多可放入的重量。 NOIP2001 装箱问题 有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从

jia0511的专栏 933

紫光同创国产FPGA学习之Fabric Debugger

文章从紫光同创参考书拷贝过来的。因为我用的时候,看了一下就会用了(纯粹只是会用了,默认和xilinx的一样),没有看教程。先更新点文本,后面在写程序。 一、      软件简介 Fabric Debugger是一款界面化的FPGA芯片调试工具,能够针对公司目前以及未来的FPGA芯片进行在线调试。本软件直接与JtagHub、DebugCore交互,能够实时的配置目标FPGA、设置触发条件并且观测结...

my_share的专栏 6391

背包问题

poj 3624 Charm Bracelet (01背包 水题) #include #include #include using namespace std; int dp[1600005]; int v[3500],w[3500]; int max(int a,int b) { return a>b?a:b; } int main() { int n,vv;

虽然冲动永远比坚持容易~ 958

海康威视VS互联网大厂:薪资、福利、工作强度全方位对比

本文全面对比了海康威视与互联网大厂在薪资、福利和工作强度等方面的差异。海康威视提供稳定的薪资结构和较低的工作强度,适合追求专业深度的职场人;而互联网大厂则以高薪和快速成长吸引人才,但工作压力较大。文章还分析了职业发展路径和长期价值,帮助求职者做出明智选择。

weixin_29171129的博客 389

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

weixin_43567873的博客 1984

【算法】动态规划(背包问题,持续更新……)

动态规划算法+力扣刷题

saya21的博客 160

STM32开发 -- GPS模块开发详解

一、了解硬件 我使用的GPS模块型号为UBX-M8030 参看:UBX-M8030 系列 查看一下它的特性: 多用途 GNSS 芯片,提供三种产品等级 最多可并发接收 3 个 GNSS(GPS、伽利略、GLONASS、北斗) 行业领先的 -167 dBm 导航灵敏度 业界最低电流消耗 在城市峡谷中具有绝佳的定位精度 安全性和完整性保护 支持所有的卫星增强系统 车载级芯片的工作...

不积跬步,无以至千里 3万+

【动态规划-背包模型part4(混合背包问题、背包问题方案数量)】:混合背包问题、机器分配、背包问题求方案数【已更新完成】

混合背包问题相关、背包问题求方案数相关

2301_76941161的博客 1109

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

六 动态规划之 背包问题(例题持续更新)

背包问题模板 无优化 一位数组优化 等等 例题

编程笔记 1094

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

从贪心法、动态规划、回溯法、分支限界法谈背包问题————持续更新

在部分背包问题中,贪心算法不会像在0-1背包问题那样浪费任何容量。因此,总是能给出最优解。 最优化问题,在查找完成之前,我们无法确定是否已经得到一个最优解。如果可以证明最优性原理适用,就可以使用动态规划解决0-1背包问题。 对于0-1背包问题来说,找最优解无非就是求一个物品的集合。不妨假设我们已经考虑到最后一个物品n,故最有解集合对于第n个物品来说:或者最后一个物品n在本集合中,或者不在本集合中。...

qq_43311891的博客 920

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【动态规划-背包问题(01背包问题、完全背包问题、多重背包问题)】&【蓝桥杯备考训练】: 货币系统、01背包问题、完全背包问题、包子凑数、砝码问题、潜水员、糖果【已更新完成】

01背包问题、完全背包问题、多重背包问题思路总结

2301_76941161的博客 1257

动态规划之背包问题(持续更新)

一、HDU - 2602Bone Collector n个物品,每个物品有其重量和价值。你的背包装物品的总重量不能超过 m ,求获得的最大价值。 01背包模板题。 #include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> using...

weixin_30399821的博客 103

背包问题(动态规划)

背包问题是一种组合优化的问题,它有多种变体,但最常见的两种是0/1背包问题和完全背包问题。

release_lonely的博客 1167

运筹说 第72期 | 算法介绍之动态规划(二)

本期我们继续进行运筹学之动态规划算法的讲解,我们将对动态规划的基础知识进行一个简单的回顾,并介绍求解动态规划问题的MATLAB和Python相关代码,以帮助大家利用工具快速求解动态规划问题,做到事半功倍。由于篇幅有限,小编接下来只展示部分代码,小伙伴们可以关注“运筹说”公众号→后台回复“算法介绍之动态规划(二)”获取完整代码。话不多说,我们一起来看看吧!.........

YUNCHOUSHUO的博客 921

(实时更新)蓝桥杯知识点笔记 | (六)动态规划之背包问题

problem)是一种组合优化的NP完全(NP-Complete,NPC)问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。NPC问题是没有多项式时间复杂度的解法的,但是利用动态规划,我们可以以伪多项式时间复杂度求解背包问题。———————————————— 版权声明:本文为优快云博主「yuyan_jia」的原创文章,遵循CC 4.0。:题目中给出的是两个花费,一个价值,需要用滚动数组的思想将三维dp压缩状态至二维dp。

code_bro的博客 375

「从零攻克蓝桥杯背包问题:动态规划核心思路与代码模板」

“刚接触动态规划?背包问题总卡壳?别慌!本文从零拆解蓝桥杯必考的背包模型,手把手带你掌握三大核心思路(0-1/完全/多重背包),揭秘状态转移方程的设计逻辑,并附赠可直接套用的代码模板!结合经典例题详解+易错点分析,助你1小时吃透背包问题,实现从‘看题懵圈’到‘闭眼AC’的蜕变。高效备战蓝桥杯,冲刺省一必看!”

2301_82313520的博客 971

动态规划之背包问题

动态规划之背包问题

牛牛博士博客 1682

【动态规划-背包模型part5(背包问题方案数量、有有依赖的背包问题、贪心+dp)】:背包问题求具体方案数、有依赖的背包问题、能量石、金明的预算方案【已更新完成】

背包问题方案数量、有有依赖的背包问题、贪心+dp的若干个应用,以及把拓扑图和背包问题求方案数联系起来

2301_76941161的博客 1231

动态规划解决01背包问题以及完全背包问题(优化)java

java动态规划解决01背包问题以及完全背包问题(优化),问题详细分析

Groot-lin的博客 832

【基础】一叶知秋,从背包问题到动态规划

如果想了解更多内容,欢迎关注我的微信公众号:信息学竞赛从入门到巅峰。 之前我们讲解了几种典型背包问题的问题模型和解决方法。 其实,背包问题只是动态规划问题(简称DP)的冰山一角。动态规划还包含众多类型,有的问题甚至需要数据结构维护,是信息学竞赛中的一个难点,更是一个重点。 今天,我们通过对背包问题的总结,来讲解一下动态规划的基本思路。 首先,解决动态规划问题的基本步骤有:设置状...

Timothy023的博客 275
上一篇: 【网络】TCP 的特点{更新中}
下一篇: 【算法】有意思的算法题(附pyhon3代码){更新中}
vectorX
博客等级 码龄11年 37粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值