为啥解决背包问题不被视为线性规划?

Posted

技术标签:

【中文标题】为啥解决背包问题不被视为线性规划?【英文标题】:Why solving Knapsack problem is not considered as linear programming?为什么解决背包问题不被视为线性规划? 【发布时间】:2012-07-22 13:06:17 【问题描述】:

为什么背包问题不属于线性规划算法的范畴,尽管背包问题陈述似乎与线性规划中的问题相似?

【问题讨论】:

@yes123 在线性规划中,约束是线性的,而不是时间。 【参考方案1】:

背包可以写成一个整数线性规划程序。与正常的线性规划不同,这个问题要求解中的变量是整数。众所周知,线性规划在多项式时间内是可解的,而整数线性规划是 NP 完全的。

读者练习:证明 3SAT 可以简化为整数线性规划。

琐事:有一些近似算法可以解决诸如 MAX-3SAT(3SAT 的一个变体,我们希望最大化满足子句的数量)等问题。首先你把 MAX-3SAT 写成一个整数线性程序。然后,通过删除整数限制,放松它到线性规划。然后,您在多项式时间内求解线性程序。最后,给定实数 xi ∈ [0,1],将它们四舍五入为整数,或生成随机整数解 yi 其中 yi 的概率sub> = 1 是 xi

【讨论】:

值得注意的是,一般来说,将给定的 NP 问题归结为 ILP 通常相对容易。

以上是关于为啥解决背包问题不被视为线性规划?的主要内容,如果未能解决你的问题,请参考以下文章

编程求解:为啥依赖背包进行01背包之后,就可以用分组背包来解决了?

动态规划解决背包问题

用动态规划求解分数背包问题

图解算法-怎么用动态规划解决0-1背包问题

每日一题(一和零),转化为二维动态规划问题题解

动态规划-多重背包问题