我做了一个子集求和问题,但我仍然对其复杂性感到困惑 请在此处找到算法:
http://www.vinaysofs.com/P=NP%20proved%20with%20Subset%20Sum%20Problem%20solution%20manuscript.pdf
基本上,本质是:
i = 0;
func1(i)
{
if(func1(i + 1))
return true;
else
func1(i + 2, with few modifications in other arguments);
}
这里,i
是整数集中元素的索引,如{1,1,1,1,1,1}。
当所有元素都是1并且我们需要的总和比所有元素的总和多1倍时,上述算法的最坏情况就出现了。
我想知道这个算法的复杂性,因为有人告诉我它是非多项式的(指数时间 - 2^n
。如果它是多项式那么它将是一个很大的成就。
在我看来,它不是多项式T(n)=2T(n-1)+6
,但在最坏的情况下,每次第一次递归调用都失败时。
请帮助..
由于 维奈