新闻资讯

    具有特殊对象的背包算法

    具有特殊对象的背包算法,,-,-,, , ,我需要为扩展背包问题创建一个算法,在这个问题中,我们有特殊物品和普通物品,我只能打包几个特殊物品因此,我们有N个项目,我们知道每个项目的重量/价值/特殊性。我们还定义了S,它是特殊项目的最大数量有什么想法吗?该问题可以建模为一个非几何背包问题,其中每个物品有两个重量,即实际重量和第二个重量,当且仅当它是特殊的时,该重量为1;第一个重量容量是背包容量,第二个重量容量是所需的最大特殊物品数量。根据维基百科的文章,这个问题被认为是NP完全问题,除非P=NP,否则不允许FPTA,但允许一个。显然,二

    我需要为扩展背包问题创建一个算法,在这个问题中,我们有特殊物品和普通物品,我只能打包几个特殊物品

    因此,我们有N个项目,我们知道每个项目的重量/价值/特殊性。我们还定义了S,它是特殊项目的最大数量

    有什么想法吗?

    完全背包问题算法_c语言 完全背包问题_完全背包问题详解

    该问题可以建模为一个非几何背包问题,其中每个物品有两个重量,即实际重量和第二个重量,当且仅当它是特殊的时,该重量为1;第一个重量容量是背包容量,第二个重量容量是所需的最大特殊物品数量。根据维基百科的文章,这个问题被认为是NP完全问题,除非P=NP,否则不允许FPTA,但允许一个。显然,二维版本也允许使用类似于一维版本的动态规划算法。状态空间的语义如下所示,其中每个项具有两个权重w1[i]和w2[i]以及利润p[i],其中C1和C2是各自的容量

    P[i,j,k] := maximum profit attainable for items in {1,...,i} with weight
                in the first component at most j and weight in the second
                component at most k
                
                for any i in {1,...,N}
    

    c语言 完全背包问题_完全背包问题算法_完全背包问题详解

    j in {1,...,C1} k in {1,...,C2}

    递归关系如下所示

    P[i,j,k] = max{ P[i-1,j-w1[i],k-w2[k]] + p[i], // item i occurs
                    P[i-1,j,k]                     // item i does not occur
    

    c语言 完全背包问题_完全背包问题算法_完全背包问题详解

    }

    在实际实现中,需要进行一些索引检查,以确定第一种情况是否实际发生。

    该问题可以建模为非几何背包问题,其中每个物品有两个权重,即实际权重和第二个权重,当且仅当其为特殊时,该权重为1;第一个重量容量是背包容量,第二个重量容量是所需的最大特殊物品数量。根据维基百科的文章,这个问题被认为是NP完全问题,除非P=NP,否则不允许FPTA,但允许一个。显然,二维版本也允许使用类似于一维版本的动态规划算法。状态空间的语义如下所示,其中每个项具有两个权重w1[i]和w2[i]以及利润p[i],其中C1和C2是各自的容量

    P[i,j,k] := maximum profit attainable for items in {1,...,i} with weight
                in the first component at most j and weight in the second
    

    c语言 完全背包问题_完全背包问题详解_完全背包问题算法

    component at most k for any i in {1,...,N} j in {1,...,C1} k in {1,...,C2}

    完全背包问题详解_c语言 完全背包问题_完全背包问题算法

    递归关系如下所示

    P[i,j,k] = max{ P[i-1,j-w1[i],k-w2[k]] + p[i], // item i occurs
                    P[i-1,j,k]                     // item i does not occur
                  }
    

    在实际实施中,需要进行一些索引检查,以确定第一种情况是否会发生。

    请将其形式化,然后检查整数规划是否是可行的方法。您不能将特殊项目限制与重量限制等同对待吗?@否完全背包问题算法,您不能。您只需要简单的项目列表,其中包含权重/值以及关于每个项目的知识,无论这些项目是否特殊。你可以像处理普通物品一样处理特殊物品,但每次使用特殊物品时,你必须增加计数器,计数器不能超过给定的数值,通常是小数值。如果我理解正确,对特殊物品的限制可以重新表述为第二个重量限制完全背包问题算法,如下所示:普通物品的特殊重量为0,特殊物品的特殊重量为1,并且总的特殊重量不得超过S。从数学上讲,原始重量限制和特殊重量限制可以被等同对待,这就给出了下面的@Codor解。@,是的,你是对的。谢谢您的帮助请将其形式化,然后检查整数规划是否是一种可行的方法。您不能将特殊项目限制与重量限制等同对待吗?@不,您不能。您只需要简单的项目列表,其中包含权重/值以及关于每个项目的知识,无论这些项目是否特殊。你可以像处理普通物品一样处理特殊物品,但每次使用特殊物品时,你必须增加计数器,计数器不能超过给定的数值,通常是小数值。如果我理解正确,对特殊物品的限制可以重新表述为第二个重量限制,如下所示:普通物品的特殊重量为0,特殊物品的特殊重量为1,并且总的特殊重量不得超过S。从数学上讲,原始重量限制和特殊重量限制可以被等同对待,这就给出了下面的@Codor解。@,是的,你是对的。谢谢你的帮助回答得好,谢谢。您能提供代码或更详细的伪代码吗?回答很好,谢谢。您能提供代码或更详细的伪代码吗?

网站首页   |    关于我们   |    公司新闻   |    产品方案   |    用户案例   |    售后服务   |    合作伙伴   |    人才招聘   |   

地址:北京市海淀区    电话:010-     邮箱:@126.com

备案号:冀ICP备2024067069号-3 北京科技有限公司版权所有