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

【学习草稿】背包问题

一、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的情况下,能够装入背包的最大价值是多少?
在这里插入图片描述

相关文章:

【学习草稿】背包问题

一、01背包问题 图解详细解析 &#xff08;转载&#xff09; https://blog.csdn.net/qq_37767455/article/details/99086678 &#xff1a;Vi表示第 i 个物品的价值&#xff0c;Wi表示第 i 个物品的体积&#xff0c;定义V(i,j)&#xff1a;当前背包容量 j&#xff0c;前 i 个物…...

doxygen c++ 语法

c基本语法模板 以 /*! 开头, */ 结尾 /*!\关键字1\关键字2 */1 文件头部信息 /*! \file ClassA.h* \brief 文件说明 定义了类fatherA* \details This class is used to demonstrate a number of section commands.* \author John Doe* \author Jan Doe* \v…...

ChatGLM微调基于P-Tuning/LoRA/Full parameter(上)

1. 准备环境 首先必须有7个G的显存以上,torch >= 1.10 需要根据你的cuda版本 1.1 模型下载 $ git lfs install $ git clone https://huggingface.co/THUDM/chatglm-6b1.2 docker环境搭建 环境搭建 $ sudo docker pull slpcat/chatglm-6b:latest $ sudo docker run -it …...

BLE Mesh蓝牙mesh传输大数据包传输文件照片等大数据量通讯

1、BLE Mesh数据传输现状 BLE Mesh网络技术是低功耗蓝牙的一个进阶版&#xff0c;Mesh扩大了蓝牙在应用中的规模和范围&#xff0c;因为它同时支持超过三万个网络节点&#xff0c;可以跨越大型建筑物&#xff0c;不仅可以使得医疗健康应用更加方便快捷&#xff0c;还能监测像学…...

9.18 QT作业

mainwindow.h QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();signals:void jump(); //自定义跳转信号函数private slots:vo…...

【100天精通Python】Day67:Python可视化_Matplotlib 绘动画,2D、3D 动画 示例+代码

1 绘制2D动画&#xff08;animation&#xff09; Matplotlib是一个Python绘图库&#xff0c;它提供了丰富的绘图功能&#xff0c;包括绘制动画。要绘制动画&#xff0c;Matplotlib提供了FuncAnimation类&#xff0c;允许您创建基于函数的动画。下面是一个详细的Matplotlib动画示…...

Linux内核源码分析 (B.x)Linux页表的映射

Linux内核源码分析 (B.x)Linux页表的映射 文章目录 Linux内核源码分析 (B.x)Linux页表的映射一、ARM32页表1、页表术语2、虚拟地址到物理地址转换3、一级页表项4、二级页表项 二、ARM64页表1、ARMv8-A架构2、4KB大小页4级映射 三、Linux内核中关于页表的函数和宏1、查询页表2、…...

机器学习(15)---代价函数、损失函数和目标函数详解

文章目录 一、各自定义二、各自详解三、代价函数和损失函数区别四、例题理解 一、各自定义 1. 代价函数&#xff1a;代价函数&#xff08;Cost Function&#xff09;是定义在整个训练集上的&#xff0c;是所有样本误差的平均&#xff0c;也就是损失函数的平均。它用于衡量模型在…...

计算机专业大学规划之双非

​ 亲爱的计算机专业大一学弟学妹们&#xff0c;欢迎来到充满挑战和机遇的大学校园&#xff01;在经历了小半年的大学生活后&#xff0c;是否会对自己的未来感到一些迷茫&#xff0c;借着前几天给我大一的妹妹聊天的机会&#xff0c;我想发表一下关于我的建议&#xff08;仅限个…...

2.策略模式

UML图 代码 main.cpp #include "Strategy.h" #include "Context.h"void test() {Context* pContext nullptr;/* StrategyA */pContext new Context(new StrategyA());pContext->contextInterface();/* StrategyB */pContext new Context(new Strat…...

算法通过村第七关-树(递归/二叉树遍历)黄金笔记|迭代遍历

文章目录 前言1. 迭代法实现前序遍历2. 迭代法实现中序遍历3. 迭代法实现后序遍历总结 前言 提示&#xff1a;在一个信息爆炸却多半无用的世界&#xff0c;清晰的见解就成了一种力量。 --尤瓦尔赫拉利《今日简史》 你是不是觉得上一关特别简单&#xff0c;代码少&#xff0c;背…...

MySQL数据库简介+库表管理操作+数据库用户管理

Mysql Part 1 一、数据库的基本概念1.1 使用数据库的必要性1.2 数据库基本概念1.2.1 数据&#xff08;Data&#xff09;1.2.2 表1.2.3 数据库1.2.4 数据库管理系统&#xff08;DBMS&#xff09;1.2.5 数据库系统 1.3 数据库的分类1.3.1 关系数据库 SQL1.3.2 非关系数据库 NoSQL…...

PyTorch实战:卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类

目录 前言 一、卷积神经网络概述 二、卷积神经网络特点 卷积运算 单通道&#xff0c;二维卷积运算示例 单通道&#xff0c;二维&#xff0c;带偏置的卷积示例 带填充的单通道&#xff0c;二维卷积运算示例 Valid卷积 Same卷积 多通道卷积计算 1.局部感知域 2.参数共…...

MapRdeuce工作原理

hadoop - (三)通俗易懂地理解MapReduce的工作原理 - 个人文章 - SegmentFault 思否 MapReduce架构 MapReduce执行过程 Map和Reduce工作流程 (input) ->map-> ->combine-> ->reduce-> (output) Map&#xff1a; Reduce...

完整指南:使用JavaScript从零开始构建中国象棋游戏

引言 中国象棋&#xff0c;又被称为国际象棋&#xff0c;是一款起源于中国的古老棋类游戏。本文旨在为大家提供一个简单明了的步骤&#xff0c;教你如何使用JavaScript从零开始构建这款经典的棋类游戏。 1. 游戏简介 在中国象棋中&#xff0c;两方各有一军队&#xff0c;包括…...

PG-DBA培训19:PostgreSQL高可用集群项目实战之Patroni

一、风哥PG-DBA培训19&#xff1a;PostgreSQL高可用集群项目实战之Patroni 课程目标&#xff1a; 本课程由风哥发布的基于PostgreSQL数据库的系列课程&#xff0c;本课程属于PostgreSQL主从复制与高可用集群阶段之PostgreSQL高可用集群项目实战之Patroni&#xff0c;学完本课…...

数据库管理-第105期 安装Database Valut组件(20230919)

数据库管理-第105期 安装Database Valut组件&#xff08;20230919&#xff09; 之前无论是是EXPDP还是PDB中遇到的一些问题&#xff0c;其实都跟数据库的DV&#xff08;Database Valut&#xff09;组件有关&#xff0c;因为目标库没有安装DV导致启动时会出现问题。 1 DV/OLS …...

企望制造ERP系统RCE漏洞 复现

文章目录 企望制造ERP系统RCE漏洞 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 企望制造ERP系统RCE漏洞 复现 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播…...

【unity小技巧】Unity 存储存档保存——PlayerPrefs、JsonUtility和MySQL数据库的使用

文章目录 前言PlayerPrefs一、基本介绍二、Demo三、优缺点 JsonUtility一、基本使用二、Demo三、优缺点 Mysql&#xff08;扩展&#xff09;完结 前言 游戏存档不言而喻&#xff0c;是游戏设计中的重要元素&#xff0c;可以提高游戏的可玩性&#xff0c;为玩家提供更多的自由和…...

2023-9-22 滑雪

题目链接&#xff1a;滑雪 #include <cstring> #include <algorithm> #include <iostream>using namespace std;const int N 310;int n, m; int h[N][N]; int f[N][N];int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1};int dp(int x, int y) {int &v f…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...