动态规划之0-1背包问题&&完全背包问题

动态规划之0-1背包问题(详解+分析+原码) 本篇文章将介绍算法专题之动态规划中的背包问题,更准确的说是背包问题中最简单的一种类型,即0-1背包问题,就是给你一定容量的背包和若干物品,每种物品只能选一次,告诉你每件物品的价值和体积,求背包里面物品的最大总价值。 阅读详情

一.01背包

1.问题描述

对于01背包问题题干,移步至AcWing  👇👇👇 

2. 01背包问题 - AcWing题库icon-default.png?t=N7T8https://www.acwing.com/problem/content/2/ 
 

代码按照下题干编写:

有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。

第 i 件物品的体积是 c [ i ],质量是 w [ i ]

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总质量最大
输出最大质量

 2.问题分析

对于动态规划问题,我们主要从两个方面分析:

状态表示 和 状态计算

对于状态表示,要考虑怎么用dp数组,用几维的dp数组,用dp数组来表示什么状态

一般来说 题目的限制条件个数 ,决定了dp数组的维度

例如01背包问题中的限制条件有体积c [ i ]  (对应背包容积)和物品总个数

 按照y总的闫式DP分析法  图解如下

3.二维dp代码 

根据图解 可以写出代码 👇👇👇

//二维01背包
//状态转移方程 :dp[i][j]=max(dp[i-1][j-volume[i]]+weight[i] , dp[i-1][j])
//前i个物品 容量为j      选取当前物品(物品-1,背包容量-当前物品体积)
//                       不选取当前物品 (最大值必定是前i-1个物品,容量为j的最大值)
//选与不选取最大值

//二维01背包(代码演示)
#include<bits/stdc++.h>
using namespace std;
int dp[1001][1001],w[1000],c[1000];
int main()
{
	int n,V,i,j;
		//n件物品 背包容量V
		cin>>n>>V;
		for(i=0;i<n;i++) cin>>w[i];
		for(i=0;i<n;i++) cin>>c[i];
		memset(dp,0,sizeof(dp));
		for(i=0;i<n;i++){
			for(j=c[i];j<=V;j++){
				//状态转移方程
				//capacity weight
			dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]);
			}
		cout<<dp[n][V];
	}
}

4.代码优化过程

👆👆👆

 通过观察上述代码,我们可以发现,那么对于我们的程序,时间上 01背包问题的时间复杂度为O(N*W),其中N为物品的数量,W为背包的最大容量,时间复杂度无需优化

但是当求 dp[i][j]时,每次用的是dp[i-1][…],也就是用的第i-1层所求出来的结果,所以从空间上,我们可以对我们的程序进行优化,用一维的dp数组就可以解决该问题


 当把我们的状态转移方程

 dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]);里含i的那一维删除后 成了

dp[j]=max(dp[j],dp[j-c[i]]+w[i]);

所以压缩后的状态转移方程的括号中的dp[ j ]代表的是dp[ i-1 ][ j ]也就是上一层的dp[ j ]的结果(这个的问题不大,因为现在要求第i层的dp[ j ],那么dp[ j ]里面存放的自然就是上一层所求出的dp[ j ]的结果,只有当max函数比较完毕后,dp[ j ]才从第i-1层的结果更新成了第i层,也就是当前层的结果)

关于 dp[ j - c[ i ] ] 代表的也是上一层的结果,也就是dp[ i - 1 ][ j - c[ i ] ]

(那么这个就要考虑 j 在循环中是递增还是递减的了,如果要保证dp[ j - c [ i ] ]代表的是dp[ i - 1 ][ j - c [ i ] ]就应该让dp[ j ]先于dp[ j - c[ i ] ]求出来

这样的话,求dp [ j ]时,在状态转移方程dp[j]=max(dp[j],dp[j-c[i]]+w[i])中

括号中的dp [ j ]还没求出,因为正在求,dp [ j ] 还保留着上一层的结果,也就是dp [ i - 1 ][ j ]

并且由于dp[ j - c [ i ] ]还没求出,它代表的也是上一层的值,也就是dp[ i - 1 ] [ j - c[ i ] ]

此时刚好和我们的二维数组的dp相吻合,所以如果想进行空间优化,只要让dp[ j ] 比 dp[ j - c[ i ] ]先求出来就好,也就是让循环中的 j 由从小到大改为从大到小循环就好,此时因为 j>j-c[i],所以大的先求出,也就是dp [ j ] 先求出,dp [ j - c[ i ] ]后求出,与我们的预期相同)


5.一维dp代码

上述文字表述的代码表示如下

(为方便读者观看,代码中仍有注释用来解释,与上面的文字表述意思相同)👇👇👇

//二维01背包
//状态转移方程 :dp[i][j]=max(dp[i-1][j-volume[i]]+weight[i] , dp[i-1][j])
//前i个物品 容量为j      选取当前物品(物品-1,背包容量-当前物品体积)
//                       不选取当前物品 (最大值必定是前i-1个物品,容量为j的最大值)
//选与不选取最大值

//优化的心路历程:
//看二维背包发现.对于dp[i][j]都需要用dp[i-1][…]这一层,也就是说都要用dp[i][…]前面那一层
//所以这一层可以省略,只要i从小到大,dp[i]在操纵前存放的永远都是dp[i-1]的值
//然后对于 j 选择从大到小也避免了重复的计算
//因为dp[i][j]的意义本身就是前i个物品 容量为j 
//所以如果是从小到大计算的话  	dp[j]=max(dp[j],dp[j-c[i]]+w[i]); 中的dp[j-c[i]]会有重复
//(从小到大的时候,j-c[i]<j,所以dp[j-c[i]]一定是比dp[j]先算出来的,这样就会有重复)
//但是从大到小的话dp[j]和dp[j-c[i]]比较时候一定是没有重复的


//一维01背包(代码演示)
#include<bits/stdc++.h>
using namespace std;
int dp[1001],w[1000],c[1000];
int main()
{
	int n,V,i,j;

		//n件物品 背包容量V
		cin>>n>>V;
		for(i=0;i<n;i++) cin>>w[i];
		for(i=0;i<n;i++) cin>>c[i];
		memset(dp,0,sizeof(dp));
		for(i=0;i<n;i++){
			//倒着循环 防止背包重复装取
			for(j=V;j>=c[i];j--){
				//状态转移方程
				//capacity weight
				dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
			//  dp[i][j]=max(dp[i-1][j],dp[?][j-c[i]]+w[i])
			//  如果是二维的时候,那么应该?处是i-1,那么如何保证呢
			//  假如j是从小到大的,那么由于dp[j-c[i]]一定比dp[j]先算出来
			//  并且就是在这一层算出来的(即i这一层)
			//  所以这里的dp[j-c[i]]+w[i]实际上是与dp[i][j-c[i]]+w[i]等价的
			//  如果让这里的dp[j-c[i]]+w[i]和dp[i-1][j-c[i]]+w[i]等价
			//  就应该使得dp[j-c[i]]比dp[j]后算出来(此时dp[j-c[i]]中仍然是上一层i-1时的数据)
			//  也就是dp[j-c[i]]与dp[i-1][j-c[i]]等效
			//  所以使j从大到小循环,即可保证在第i层时,先算dp[j]再算dp[j-c[i]]
			//  那么dp[j-c[i]]中保存的时第 i 层的数据
			//  此时再做max操作即与dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i])等价
				
			}

		cout<<dp[V]<<endl;
		
	}
}

二.完全背包

1.问题描述

请移步至AcWing  👇👇👇

3. 完全背包问题 - AcWing题库icon-default.png?t=N7T8https://www.acwing.com/problem/content/3/

代码按照以下题干编写

有 N 件物品和一个容量是 V 的背包。每件物品可使用任意次。

第 i 件物品的体积是 c [ i ],质量是 w [ i ]

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总质量最大
输出最大质量

2.问题分析 

先说结论:

 0-1背包  dp[i][j]=max(dp[i-1][j],dp[i-1][j-v]+w)
完全背包 dp[i][j]=max(dp[i-1][j],dp[i]   [j-v]+w)⭐

可知0-1背包和完全背包的状态转移方程大致相同,但是有个小小的不同,其实分析起来差距很大 

正如 01 背包一样我们仍要从 状态表示 和 状态计算 两方面进行分析,完全背包也如此

完全背包的限制条件也是物品个数 和 背包容量 所以也要 先由二维dp数组表示

对于完全背包问题每个物品可以取任意个
那么对于第 i 个物品,就有取0,1,2,3,4…n 个的情况
(直到总体积大于等于j)(第i 个物品体积为 v 质量为w)
那么也就是
①dp[ i ][ j ]   =max(dp[ i-1 ][ j ],dp[ i-1 ][ j-v ]+w , dp[ i-1 ][ j-2v ]+2w,…,dp[ i-1 ][ j-n*v ]+n*w)
对应第 i 个物品取                   0                    1                            2           …                   n    个的情况
如果背包容积不是j 而是j-v,那么相当于
②dp[ i ][ j-v ]=max(dp[ i-1 ][ j-v ],dp[ i-1 ][ j-2v ]+w,…,dp[ i-1 ][ j-n*v ]+(n-1)*w


①②对比会发现①②大部分相同,①除去首项后相当于整体比②多w
也就是dp[ i ][ j ]=max(dp[ i-1 ][ j] ,②+w)
即dp[ i ][ j ] =max(dp[ i-1 ][ j ],dp[ i ][ j-v ]+w) ⭐
得出最后的状态转移方程,与0-1背包的像,但是得出结论的历程不一样
对比下
0-1背包   dp[ i ][ j ]=max(dp[ i-1 ][ j ],dp[ i-1 ][ j-v ]+w)
完全背包 dp[ i ][ j ]=max(dp[ i-1 ][ j ],dp[ i ][ j-v ]+w)⭐

用 y总的 闫式dp分析法 的分析图解如下

3.二维dp代码

根据图解 可以写出代码 👇👇👇

//二维完全背包(代码演示)
#include<bits/stdc++.h>
using namespace std;
int dp[1001][1001],w[1000],c[1000];
int main()
{
	int n,V,i,j;
		//n件物品 背包容量V
		cin>>n>>V;
		for(i=0;i<n;i++) cin>>w[i];
		for(i=0;i<n;i++) cin>>c[i];
		memset(dp,0,sizeof(dp));
		for(i=0;i<n;i++){
			for(j=c[i];j<=V;j++){
				//状态转移方程
				//capacity weight
			dp[i][j]=max(dp[i-1][j],dp[i][j-c[i]]+w[i]);
			}
		cout<<dp[n][V];
	}
}

4.代码优化过程

与01背包类似 完全背包也可以用一维数组进行空间优化,降低空间复杂度

 0-1背包  dp[i][j]=max(dp[i-1][j],dp[i-1][j-v]+w)
完全背包 dp[i][j]=max(dp[i-1][j],dp[i]   [j-v]+w)⭐

通过比较可以得知,若想使用一维dp关于 dp[i-1][j] 与01背包的一致即可

但是对于dp[i][j-v]可知与01背包的不同 需要优化

回顾下上面所说的01背包的优化过程:

为了保证 dp[j-v]代表的是dp[i-1][j-v]只要使得dp[j-v]后于dp[j] 也就是 j 从大到小循环即可,此时在

max(dp[j],dp[j-v])中,dp[j]代表dp[i-1][j]      dp[j-v]代表dp[i-1][j-v]

所以 此时我们想让 dp[j-v]代表dp[i][j-v]  只需要再让 j 从小到大循环即可

5.一维dp代码

完全背包一维dp代码如下 👇👇👇

//一维完全背包(代码演示)

#include<bits/stdc++.h>
using namespace std;
int dp[1001],w[1000],c[1000];
int main()
{
	int n,V,i,j;

		//n件物品 背包容量V
		cin>>n>>V;
		for(i=0;i<n;i++) cin>>w[i];
		for(i=0;i<n;i++) cin>>c[i];
		memset(dp,0,sizeof(dp));
		for(i=0;i<n;i++){
			for(j=c[i];j<=V;j++){
				//状态转移方程
				//capacity weight
				dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
                //j 正着循环 由于 j > j-c[i]
                //所以在第i层求dp[j]时,dp[j-c[i]]已经在此层(第i层)被求出
                //也就是说dp[j-c[i]]在此时实际是dp[i][j-c[i]]
                //dp[j]在此时是dp[i-1][j]
                //符合二维完全背包的逻辑
	
			}

		cout<<dp[V]<<endl;
		
	}
}

三.总结

经过优化空间复杂度的过程,我们发现 01背包和完全背包问题优化的主要点是搞清楚

一维的dp数组对应的值是在哪一层所求出来的,然后再对应其二维dp数组的状态转移方程即可

所以在做题时 先根据闫式dp分析法按照 状态表示 和 状态计算 分析

根据题目中的限制写出状态转移方程 再根据状态转移方程判断是否在第 i 层用的都是 第 i 层或第i-1层的数据,进而根据实际情况选择正确的循环方向,进而优化空间复杂度

C++ 算法篇 动态规划----背包之一 01背包 一、01背包 题目:有 N 件物品和一个容量为 V 的背包。第 i 件物品的费用是 w[i],价值是 p[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 例,有3个物品,背包容量为10,如下: 二维解法: #include<bits/stdc++.h> using namespace std; int f[50][220]={... 阅读详情

相关推荐

01背包——优化详解!!!(滚动数组、一维优化)

可以看出,dp[i,j]只依赖与自己和i-1,而滚动数组就是把i给变成2,反复用0、1来进行dp,上一轮的值还是可以找到。原来空间复杂度:O(NV) 滚动数组优化后空间复杂度:O(2*N)dp[i,j]:1~i个物品组成重量

qq_60466872的博客 1816

背包问题——01背包|完全背包

01背包你真的都会吗?各位佬们还不进来看看?

冷兮雪的博客 3万+

动态规划之背包问题——完全背包

文章目录一、完全背包问题二、完全背包遍历顺序三、leetcode例题讲解完全背包问题518. 零钱兑换 II377. 组合总和 Ⅳ322. 零钱兑换279. 完全平方数139. 单词拆分四、完全背包问题总结1. 动规五步分析法2. 背包递推公式3. 遍历顺序 前面整理了01背包,在leetcode题库中主要就是01背包和完全背包问题,所以在这里整理一下完全背包的知识点。 一、完全背包问题 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都

小朱小朱绝不认输的博客 8753

动态规划背包问题之01背包详解

动态规划背包问题之01背包详解

晨的博客 5万+

算法——动态规划之0-1背包问题

打算每天复习一点算法内容,就先从动态规划下手。曾经动态规划让我头疼,重新学了一下觉得还好啦不是很难,实现动态规划算法的核心在于实现它的递推公式,写出递推公式,代码也就很容易了。动态规划类似分治法,都是将一个大问题分解为一个个小问题,分而治之。不同之处在于,动态规划记忆了重复的子问题,避免了运算过程中的重复计算。适用情况:有重叠子问题和最优子结构性质(动态规划每一步求的都是最优解)的问题。下面我们通...

Astar的博客 1万+

动态规划 之 0-1背包问题

关于背包问题,其实可以分为两种类型:0-1背包问题 和 部分背包问题。 1、先通过一个例子来说明一下二者的区别吧! 有一个窃贼在偷窃一家商店时发现有n件物品,第i件物品价值为vi元,重量为wi,假设vi和wi都为整数。他希望带走的东西越值钱越好,但他的背包中之多只能装下W磅的东西,W为一整数。他应该带走哪几样东西? 0-1背包问题:每件物品或被带走,或被留下,(需要做出0-1选择)。小偷

小邓笔记 3万+

九种 0-1 背包问题详解

目录 动态规划概念 问题1:0-1背包问题 问题2:完全背包问题 问题3:多重背包问题 问题4:混合背包问题 问题5:二维背包问题 问题6:分组背包问题 问题7:有依赖的背包问题(困难) 问题8:背包问题求方案数 问题9:背包问题求具体方案 前言 0-1 背包是一个经典的问题,之前也整理过一篇关于 0-1 背包的博客,当时只是整理了 0-1 背包问题的4 种解决方法。最近在复习算法,发现有很多 0-1 背包问题的衍生问题。0-1 背包问题的限制条件既可以是重量,也可以是容量,或者..

Tyler_Zx的博客 2万+

经典背包问题深度解析:0-1 背包、完全背包与多重背包

本文详细介绍了三种经典背包问题的动态规划解法。0-1背包问题通过二维和一维数组实现,状态转移方程根据物品是否装入背包进行选择;完全背包问题允许物品无限次选取,状态转移方程相应调整;多重背包采用二进制拆分法将问题转化为0-1背包。文章通过C++代码示例展示了每种问题的具体实现,揭示了动态规划在不同物品选取限制下的灵活应用。这些方法在资源分配和任务调度等场景具有重要实践价值。

2301_80541270的博客 3145

彻底搞懂0-1背包问题(动态规划)

看了很多网上的博客,发现对于0-1背包问题很多讲的都很专业,初学者学起来还是比较吃力,今天我就用最简单最形象的语言来描述一下0-1背包问题,为什么不能用贪婪算法,而要选择使用动态规划。 首先对于0-1背包问题,我们需要知道的是:每一个物品只有1个,要么全拿,要么不拿,最后使得拿到的物品的总价值最大。 假如一个小偷有一个可以容纳4千克的背包,但是发现面前只有有3样物品可以偷:台灯(30元,4千克)、音响(20元,3千克)、充电宝(15元,1千克)(价格和重量可能有点奇怪????)。问,小偷能够偷到的物品的

HarryXu的博客 2万+

【自用】0-1背包问题与完全背包问题的Java实现

背包问题是计算机科学领域的一个经典优化问题,分为多种类型,其中最常见的是0-1背包问题和完全背包问题。这两种问题的核心在于如何在有限的空间内最大化收益,但它们之间存在一些关键的区别:0-1背包问题允许每个物品只能选择一次,而完全背包问题则允许无限次选取同一物品。本篇博客将分别介绍这两个问题的动态规划解法,并附带相应的Java代码实现。

2301_76541209的博客 1635

Python解决0/1背包和完全背包问题

总述: 在解决背包问题前,需要了解的是动态规划的思想,背包问题是最典型的动态规划应用。 一、0/1背包问题 0/1背包的关键在于每个物品都只有两个状态:装和不装。 例如,某0/1背包问题为,n=5,w={2,2,6,5,4},v={6,3,5,4,6},W=10。求背包能装下的最大价值。 分析: 背包的回推过程非常关键,在接下来的实例中会详细阐述。 其中i表示物品序号,r表示...

wondering_cat的博客 1959

【算法】动态规划专题⑥ —— 完全背包问题 python

完全背包问题是动态规划中的一种经典问题,它与0-1背包问题相似,但有一个关键的区别:在完全背包问题中,每种物品都有无限的数量可用。也就是说,你可以选择同一种物品多次放入背包,以使背包中的总价值最大。

查理零世的博客 5593

0-1背包问题 完全背包问题 附动态规划过程图和代码

【题目】 链接:https://www.nowcoder.com/questionTerminal/15bdb1bacb1843f381102ee609577385 来源:牛客网 考虑一个有n=5个物品的背包问题实例,背包的容量m=10,v(价值)=(6,3,5,4,6),并且w(重量)=(2,2,6,5,4),请问不超过sw(背包能承受的总重)的情况下,最大的放入价值是多少() 【0-1...

qq_31617121的博客 4552

完全背包问题(动态规划)

完全背包问题 题目: 有 N 种物品和一个容量为 V 的背包,每种物品都有无限件可用。第 i 种物品的费用是 c[i],价值是 w[i] 。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 一、验证动态规划求解的可行性 这个问题可以不可以像01背包问题一样使用动态规划来求解呢?来证明一下即可。 首先,先用反证法证明最优化原理: 假设完全背包...

但行好事,莫问前程 6143

告别轮询!用STM32CubeMX给STM32F030配置ADC多通道+DMA,实测代码分享

本文详细介绍了如何使用STM32CubeMX为STM32F030配置ADC多通道采集与DMA传输,显著提升采集效率。通过实测对比轮询与DMA模式的性能差异,提供完整的代码实现和优化技巧,帮助开发者快速掌握这一高效采集方案。

weixin_42570296的博客 409

Nacos启动报错No DataSource set?5分钟搞定standalone模式配置

本文针对Nacos启动时常见的“No DataSource set”报错,深入解析了其根源在于默认集群模式与外部数据库依赖。提供了两种快速解决方案:通过命令行参数“-m standalone”启动,或直接修改启动脚本配置文件,从而在5分钟内以单机模式成功启动Nacos,无需配置MySQL数据库。

weixin_29234509的博客 465

动态规划-(0-1)背包问题

下面我用容积代表重量(我是不会承认我看走眼了的。又懒得改。)0-1背包问题是动态规划背包问题系列的最基础的一个问题。相对理解起来较为简单。按书上来说,要证明一个问题是否可以使用动态规划思想,需要满足最优子结构的性质,那么什么是最优子结构的性质呢?书上给出的定义如下图看起来很拗口,其实就是不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。说白了就是一个最优策略的子策略也是必须是最优的,而所有子问题的局部最优解将导致整个问题的全局最优。

菜鸟的博客 1万+

【对比学习+分割】CRIS:CLIP驱动RIS图像分割(CVPR 2022)

CRIS: CLIP-Driven Referring Image Segmentation

这个博客太懒了什么都没说 3324

动态规划——完全背包问题

聪明人都会点进来学习!!动态规划看这一篇就够了!!!本文详细讲解了动态规划的核心思路(配有图片),还以经典问题——完全背包问题为例,先从基础解法开始讲解思路,再一步步优化(一维数组),带有完整代码(有详细注释),对于难以理解的地方还会举例讲解,还会和01背包问题对比思考,赶紧点进来学习吧!!!

yourgrandfather_的博客 3946

【AI Infra】Perfetto性能分析工具指南

Perfetto是一款开源性能分析工具,提供系统级和应用级的活动数据追踪功能。其界面分为四个区域:左侧操作区(包含Trace查看、SQL查询、预置分析等功能)、上方信息区、中间图形化展示区以及下方详细信息区。工具支持快捷键操作(w/s缩放、a/d移动、m标记等),并能高效处理大体积Trace文件。通过Timeline分析可发现性能瓶颈,如案例中update_actor耗时过高的问题,最终定位到CPU offloading导致的MemcpyH2D操作耗时过长,提出了优化方案。Perfetto相比Systrac

baiweizeng的博客 1505

OpenClaw进行安全测试(附使用场景案例)

test-master 是一个全面的测试专家,覆盖功能测试、性能测试、安全测试三大领域。这里我们重点来看下使用test-master如何进行安全测试。使用 test-master 时,可以针对以下高频领域进行专项安全扫描:✅ OWASP Top 10 测试✅ SQL 注入测试✅ XSS 测试✅ CSRF 测试✅ 认证 / 授权测试。

十二测试录 330

动态规划解0-1背包问题

动态规划解0-1背包问题 动态规划解0-1背包问题是一个十分典型案例,我从网上查询好多相关资料,但是大部分都深奥难懂,并不适合初学算法的小白,其中涉及的递推关系式、填表,以及最后的二维表简化为一维表的优化过程,好多都是一笔带过,所以,今天就尽我所能,来叙述一下对于0-1背包问题使用动态规划来求解。 要解决0-1背包问题,首先咱们要解决的是什么是动态规划。 动态规划 先说一说什么是动态规划。 动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题

weixin_49571787的博客 6432

大模型LoRA微调调参的实战技巧(持续更新)

本文主要介绍了大模型LoRA微调调参的实战技巧,希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 实战技巧

herosunly的博客 20万+

动态规划之0/1背包问题原理详解: 简明、细致、深入理解

动态规划,0/1背包问题,回溯

yw906002599的博客 1万+

OpenClaw 子代理配对失败问题分析与解决方案

OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 148

从零训练Qwen3-VL

如果你未来想做的是「在公开权重上继续做大规模多模态 pretrain(比如换数据、换目标函数)」而不是在完全随机初始化上起步,这两类代码会比 Open-Qwen2VL 更直接。参考 Qwen2-VL / Qwen2.5-VL 披露的流程,可以大致推测 Qwen3-VL 也是类似的三阶段:(直接在学术算力(8×A100-40G)上从零预训练了一个 2B 参数的多模态 Qwen2-VL 风格模型:(的配置和训练脚本,理解它是如何把「任意 ViT + 任意 LLM + 任意图文数据」拼在一起的。

u013250861的博客 563
上一篇: 通讯录管理系统(黑马程序员C++项目)
下一篇: trie树(字典树) 洛谷 P3879 [TJOI2010] 阅读理解
ByteMaster_
博客等级 码龄3年 328粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值