【学习草稿】背包问题

一、01背包问题 图解+详细解析 (转载)
https://blog.csdn.net/qq_37767455/article/details/99086678

:Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值
大概看懂,并根据公式手填了一下表格

最优性原理的基本思想是:一个问题的最优解包含了其子问题的最优解。换句话说,一个问题的最优解可以通过其子问题的最优解递推得到。

最优性原理的应用条件是问题具有最优子结构,即一个问题的最优解可以通过其子问题的最优解递推得到。如果一个问题不具有最优子结构,则不能使用动态规划算法求解。
疑问:原理?为什么是这样的公式呢?

二、【动态规划】01背包问题(通俗易懂,超基础讲解)
https://blog.csdn.net/qq_38410730/article/details/81667885

【好的理解评论?】
我认为那个对于面对一个商品的可能性的描述应该是这样:
1.包的总容量比商品体积小,即使不装其他商品也不可能装得下该商品,此时价值与前i-1个商品的价值一样,即v[i][j]=v[i-1][j];
2.包的总容量大于等于该商品,但若拿出其它商品来获得容量装该商品,此时价值不一定大于前i-1个商品的最大价值,所以在装与不装该商品之间选定一个,即V(i,j)=max{V(i-1,j),V(i-1,j-w(i))+v(i)}
【评论】
j<w(i) V(i,j)=V(i-1,j)
j>=w(i) V(i,j)=max{V(i-1,j),V(i-1,j-w(i))+v(i)}
各位老师,我对这个迭代公式的理解:V(i,j)是指让你最多装j容量的情况下,前i个商品的最大价值,其实是根据题目最终的容量来定义的,也就是让你最多装8容量,求前4个商品的最大价值。那么可以这么理解,第i个商品装不下,那只能装前i-1个商品,V(i,j)就等于V(i-1,j);第i个商品装的下,装和不装两种情况的最优价值是不一样的,取一个最大值,V(i,j)=max{V(i-1,j),V(i-1,j-w(i))+v(i)},V(i-1,j-w(i))+v(i)这个表示我装第i个商品,那么前i-1个商品只能让你最多装j-w(i)的情况下的最大价值。
【】
在状态表V(i,j)中 “j” 就是表示当前背包的总容量。并且在状态转移方程中 V(i-1,j-w(i)) 也并不是说当前背包容量减少了w(i),而是说为了在当前容量为 j 的背包中装入容量为w(i)的物品,所以往前寻找背包容量为 j-w(i) 的状态下的最优值 V(i-1,j-w(i)),这也是状态转移方程的意义所在。
【】
V(0,j):当前背包容量为j,前0个物品最佳组合对应的价值,肯定是0啊(没放东西);
V(i,0):当前背包容量为0,前j个物品最佳组合对应的价值,肯定是0啊(放不进去)。
【???】
动态规划推导不出来递推关系式怎么搞?-- 多看看一些动态规划的例子,感觉一下,这只能多做些题目,就有思路了。
【】
我在手动填表格的时候才真正理解V(i-1,j-w(i))的意思。例如V(4,8),背包容量为8的时候,是否塞入第4个商品的最优V。塞入第4个商品的解为:因为第4个商品的W是5,先在背包腾出5的空间(既定要放进第4个商品),也就是空间为3的最优解加上第4个商品的价值v4。

三、动态规划 原理

1、动态规划中的无后效性(Principle of Optimality)指的是,一个问题的最优解包含了其子问题的最优解,且子问题的最优解不受后续决策的影响。换句话说,一个问题的最优解可以通过其子问题的最优解递推得到,而且子问题的最优解不受后续决策的影响。

这个性质是动态规划算法的核心原理之一,也是其能够高效求解具有最优子结构问题的关键。在动态规划算法中,问题被分解成一系列子问题,并通过递推的方式求解子问题的最优解。在求解过程中,使用了一些启发式规则和策略来指导搜索过程,从而加速搜索并提高搜索结果的质量。同时,通过保存已经求解的子问题的结果,避免了重复计算,提高了算法的效率。

需要注意的是,无后效性是动态规划算法的基本性质之一,但并不是所有问题都具有无后效性。如果一个问题不具有无后效性,则不能使用动态规划算法求解。因此,在使用动态规划算法时,需要先确定问题是否具有无后效性,以避免错误的求解方法。
2、什么是无后效性?
https://blog.csdn.net/qq_30137611/article/details/77655707
所谓无后效性原则,指的是这样一种性质:某阶段的状态一旦确定,则此后过程的演变不再受此前各状态及决策的影响。也就是说,“未来与过去无关”,当前的状态是此前历史的一个完整总结,此前的历史只能通过当前的状态去影响过程未来的演变。具体地说,如果一个问题被划分各个阶段之后,阶段k中的状态只能通过阶段k+1中的状态通过状态转移方程得来,与其他状态没有关系,特别是与未发生的状态没有关系,这就是无后效性
https://baike.baidu.com/item/%E6%97%A0%E5%90%8E%E6%95%88%E6%80%A7/1135283
3、什么是动态规划(Dynamic Programming)?动态规划的意义是什么?
https://www.zhihu.com/question/23995189

四、 完全背包
https://zhuanlan.zhihu.com/p/93857890
完全背包(unbounded knapsack problem)与01背包不同就是每种物品可以有无限多个:一共有N种物品,每种物品有无限多个,第i(i从1开始)种物品的重量为w[i],价值为v[i]。在总重量不超过背包承载上限W的情况下,能够装入背包的最大价值是多少?
在这里插入图片描述

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

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

相关文章

Kubernetes组件和架构简介

目录 一.概念简介 1.含义&#xff1a; 2.主要功能&#xff1a; 3.相关概念&#xff1a; 二.组件和架构介绍 1.master&#xff1a;集群的控制平面&#xff0c;管理集群 2.node&#xff1a;集群的数据平面&#xff0c;为容器提供工作环境 3.kubernetes简单架构图解 一.概…

Kafka 运维必懂:从原理到调优,看完秒变大佬

1 Kafka 概述 Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统&#xff0c;现已被捐献给 Apache 基金会。 目前 Kafka 已经定位为一个分布式流式处理平台&#xff0c;它以高吞吐、可持久化、可水平扩展、支持流…

腾讯云cvm云硬盘扩容

过去一直记得腾讯云的系统盘扩容,关于系统盘的扩容直接点资源调整-云硬盘扩容 系统盘扩容后就可以直接使用的&#xff1f; 但是现在操作了发现vda 200G 但是现在vda1不能自动扩容了&#xff1f; 腾讯云cvm云硬盘扩容 先看一眼官方文档吧&#xff1a;在线扩展系统盘分区及文…

LeetCode每日一题:1993. 树上的操作(2023.9.23 C++)

目录 1993. 树上的操作 题目描述&#xff1a; 实现代码与解析&#xff1a; 模拟 dfs 原理思路&#xff1a; 1993. 树上的操作 题目描述&#xff1a; 给你一棵 n 个节点的树&#xff0c;编号从 0 到 n - 1 &#xff0c;以父节点数组 parent 的形式给出&#xff0c;其中 p…

Android开发MVP架构记录

Android开发MVP架构记录 安卓的MVP&#xff08;Model-View-Presenter&#xff09;架构是一种常见的软件设计模式&#xff0c;用于帮助开发者组织和分离应用程序的不同组成部分。MVP架构的目标是将应用程序的业务逻辑&#xff08;Presenter&#xff09;、用户界面&#xff08;V…

Mybatis自动映射Java对象 与 MySQL8后的JSON数据

文章目录 Mybatis自动映射Java对象 与 MySQL8后的JSON数据1.转化成为正常Json类型1.1 JsonTypeHander1.2 ListJsonTypeHandler 负责List<T> 类型1.3 实体类1.4 mapper1.5 测试类 2. 存储为携带类型的Json Mybatis自动映射Java对象 与 MySQL8后的JSON数据 1.转化成为正常…

【密码学补充知识】

&#x1f511;密码学&#x1f512;概述 &#x1f4d5; 1.基本概念 明文 &#xff1a; 要交换的信息 密文 &#xff1a; 明文经过一组规则变换成看似没有意义的随机消息。 加密 &#xff1a; 明文经过一组规则变换成密文的过程 解密 &#xff1a; 密文恢复出明文的过程 加…

MT1184矩形相交 题解【超详细】

目录 题目 样例 题目解析 代码 图解 矩形相交 题目 输入2个矩形的左上角和右下角两个点的坐标值(x&#xff0c;y)&#xff0c;判断2个矩形是否相交&#xff0c;输出YES或者NO。矩形的边应与x&#xff0c;y轴相平行。假定输入坐标能顺利构成矩形&#xff0c;不考虑无效矩形…

macOS使用官方安装包安装python

新手程序员可能想知道如何在 Mac 上正确安装 Python&#xff0c;这里介绍在 macOS 上安装 Python 的方法。 操作步骤 1.从 Python 官方网站 (python.org) 下载最新的 Python 版本. 单击 macOS 链接并选择最新的 Python 版本。 2.下载完成后&#xff0c;双击包开始安装Python…

第6讲:v-for使用

目录 1.循环遍历 2.v-for遍历整形变量&#xff08;99乘法表&#xff09; 3.v-for遍历普通数组 4.v-for遍历数组对象 1.循环遍历 v-for指令基于一个数组渲染一个列表&#xff0c;它和JavaScript的遍历语法相似&#xff1a; v-for”item in list” list 是一个数组&#xff0c; i…

windows平台 git bash使用

打开所在需要git管理的目录,鼠标右键open Git BASH here 这样就直接进来,不需要windows dos窗口下麻烦的切路径&#xff0c;windows和linux 路径方向不一致 (\ /) 然后git init 建立本地仓库,接下来就是git相关的操作了. 图形化界面查看 打开所在需要git管理的目录,鼠标右键…

软考高级架构师下篇-17安全架构设计理论与实践

目录 1. 引言信息安全面临的威胁2. 安全体系架构的范围3.典型安全模型4.信息安全整体架构设计5.数据库系统安全设计6.系统架构脆弱性分析7.安全架构设计实践8. 前文回顾1. 引言 随着科技的发展,信息系统的安全受到诸多方面的威胁,设计信息系统安全架构需要从各个方面考虑,这…

如何通过优化Read-Retry机制降低SSD读延迟?

近日,小编发现发表于2021论文中,有关于优化Read-Retry机制降低SSD读延迟的研究,小编这里给大家分享一下这篇论文的核心的思路,感兴趣的同学可以,可以在【存储随笔】VX公号后台回复“Optimizing Read-Retry”获取下载链接。 本文中主要基于Charge Trap NAND架构分析。NAND基…

buuctf-[WUSTCTF2020]朴实无华

打开环境就这么一句话 先打开index.php,但是没有什么 查看了下网络 看到gzip和php 我试了试www.zip 还有index.phps&#xff0c;也是一样的&#xff0c;都没找到文件 于是我想到用御剑扫&#xff0c;但是我好像线程太长了&#xff0c;一个没扫到&#xff0c;我就想到用dirsea…

人工智能AI 全栈体系(六)

第一章 神经网络是如何实现的 这些年神经网络的发展越来越复杂&#xff0c;应用领域越来越广&#xff0c;性能也越来越好&#xff0c;但是训练方法还是依靠 BP 算法。也有一些对 BP 算法的改进算法&#xff0c;但是大体思路基本是一样的&#xff0c;只是对 BP 算法个别地方的一…

Jmeter配置性能监控插件

一、版本不兼容时&#xff0c;有报错 1、当jmeter版本比较高时&#xff0c;只需要从官网安装jmeter-plugins-manager-1.10.jar一个包 2、当jmeter版本较低时&#xff0c;安装JMeterPlugins-Extras-1.4.0.zip、JMeterPlugins-Standard-1.4.0.zip内两个jar包 3、服务器上传文件…

PTE深度了解(一)

目录 PTE模板开始大审查吗&#xff1f;我的模板还能用吗&#xff1f; 使用模版&#xff0c;不会额外扣你分 类型一&#xff08;前20秒说模版&#xff09; 类型二&#xff08;老实巴交&#xff09; 类型三&#xff08;就是都说简单句&#xff09; 1.查重复 2.增加内容分识…

Android Jetpack组件架构 :LiveData的使用和原理

Android Jetpack组件架构&#xff1a; LiveDate的使用和原理 导言 继Lifecycle组件之后我们接下来要介绍的就是LiveDate组件&#xff0c;所谓LiveDate字面意思上就是有声明的数据&#xff0c;当数据有改动时该组件可以感知到这个操作并将该事件通知到其观察者&#xff0c;这样…

Linux基础指令(五)

目录 前言1. 打包和压缩1.1 是什么1.2 为什么1.3 怎么办&#xff1f; 2. zip & unzip3. tar 指令结语&#xff1a; 前言 欢迎各位伙伴来到学习 Linux 指令的 第五天&#xff01;&#xff01;&#xff01; 在上一篇文章 Linux基本指令(四) 当中&#xff0c;我们学习了 fin…

git --- 基础介绍

git --- 基础介绍 git 是什么git --- 工作区, 暂存区, 资源库git --- 文件状态git --- branch 和 HEADgit --- 一次正常的git提交流程 git 是什么 Git是一款分布式源代码管理工具(版本控制工具)Git和其他传统版本控制系统比较: 传统的版本控制系统(例如 SVN)是基于差异的版本控…