这是一个众所周知的事实,没有已知的多项式时间解NP完整问题在现实世界中发生了很多问题(见这,这和这例如)。所以一定有办法解决它们。我们已经看到这些问题的算法是p近似(例如大致为旅行推销员)。我们可以做得更好吗?
PolynomialT我一个诗经年代Cheme(PTA)是一种近似算法,其提供用户来控制近似的精度,这是一个理想的特征。这些算法采用附加参数ε> 0,并提供最小化和(1 - ε)的(1 +ε)的解决方案,用于最大化。例如,考虑最小化问题,如果ε为0.5,则通过PTA算法提供的解决方案是1.5近似。PTA的运行时间必须是多项式,但是,它可以在ε方面是指数。
在PTAS算法中,多项式的指数随着ε的减小而急剧增加,例如当运行时间为O(n)时(1 /ε)!)这是一个问题。有一个更严格的方案,FulPolynomialT我一个诗经年代化学(FPTAS)。在FPTAS中,算法需要对问题大小n和1/ε进行多项式运算。
示例(0-1背包问题):
我们知道0-1背包是NP完全的。有一个基于DP的伪多项式解决方案为了这。但是,如果输入值很高,则解决方案变得不可行,需要近似解。一个近似解决方案是使用贪婪的方法(对于所有项目计算每千克计算值,如果它小于w,则首先将最高值放置,但贪婪的方法不是PTA,因此我们没有控制精度。
以下是0-1背包问题的FPTAS解决方案:
输入:
W(背包的容量)
瓦尔(0 . . n - 1)(价值的物品)
wt [0..n-1](物品的重量)
- 查找最大值项,即在val[]中查找最大值。设这个最大值为maxVal。
- 计算所有值的调整因子k
k = (maxVal * ε) / n
- 调整所有值,即,创建一个新的阵列Val'[]该值除以k。为每个值val [i]做窗户。
val'[i] = floor(val[i] / k)
- 运行基于DP的解决方案对于减少的值,i,e, val'[0..]n-1]和所有其他参数相同。
以上解决方案在N和ε之间的多项式时间工作。该FPTA提供的解决方案是(1 - ε)近似。该想法是从一些值的一些最低有效数字舍入,然后它们将由多项式和1 /ε界定。
例子:
val[] = {12, 16, 4, 8} wt[] = {3, 4, 5, 2} W = 10 ε = 0.5 maxVal = 16 [val[]]调整因子的最大值,k =(16 * 0.5)/4 = 2.0现在我们对下面修改的问题实例应用DP解。val '[] ={6 8、2、4}(val[我]=地板(val[我]/ k)] wt[] ={3、4、5,2}W = 10
解(1 - ε) * OPT是怎样的?
在这里选择为最优值。让年代是由上述FPTAS算法产生的集合和S为VAL的总值。我们需要表明这一点
val(s)> =(1 - ε)*选择
让O是通过最佳解决方案产生的集合(具有总值OPT的溶液),即VAL(O)= OPT。
瓦尔(O) - k * val”(O) < = n * k(因为val”[我]=地板(val[我]/ k)]
在动态编程步骤之后,我们获得了一个最佳缩放实例的集合
因此它至少和选择利润较小的集合O一样好。由此,我们可以得出结论,
val'(S) >= k。val”(O) > =瓦尔(O) - nk > =选择-ε* maxVal > =选择-ε*选择(选择> = maxVal] > =(1 -ε)*选择
来源:
http://math.mit.edu/~goemans/18434S06/knapsack-katherine.pdf
https://en.wikipedia.org/wiki/Polynomial-time_approximation_scheme
本文由Dheeraj Gupta提供贡献。如果您喜欢Geeksfo188金宝搏滚球投注rgeeks并想贡献,您还可以编写文章并将您的文章汇报汇编@ geeksforgeeks.org。金宝搏比分请参阅Geeksforgeeks主页上的文章,并帮助其他极客。188金宝搏滚球投注
如果您发现任何不正确的任何内容,请写出评论,或者您想要分享有关上面讨论的主题的更多信息
关注读者!现在不要停止学习。掌握所有重要的DSA概念DSA自我节奏课程以学生友好188bet2021欧洲杯的价格和成为行业准备。要完成你从学习一门语言到DS算法和更多的准备,请参考完整的面试准备课程金宝搏188beat。