Algorithm 递归算法时间复杂度(最大独立集)

Algorithm 递归算法时间复杂度(最大独立集),algorithm,recursion,time-complexity,complexity-theory,Algorithm,Recursion,Time Complexity,Complexity Theory,我的任务是分析和实现一个算法,以找到一个图的最大独立集,我已经谈到了该算法的时间复杂度部分。我推断如下: T(n) = T(n-1) + T(n-3) + O(n^3) + O(n^2) 我以前已经想出了一些其他类似的递归算法,但这一次我被卡住了好几次。我想结果应该是~O(2^n) 有人能帮我找到解决办法吗 编辑:我只是仔细检查了一下,解决方案应该是O(1.8^n)。有什么办法可以解决这个问题吗?如果我们画递归树,它会像这样,为了简单起见,让每个节点都有两个子节点,这个树的高度是n,直到它达到

我的任务是分析和实现一个算法,以找到一个图的最大独立集,我已经谈到了该算法的时间复杂度部分。我推断如下:

T(n) = T(n-1) + T(n-3) + O(n^3) + O(n^2)
我以前已经想出了一些其他类似的递归算法,但这一次我被卡住了好几次。我想结果应该是~O(2^n)

有人能帮我找到解决办法吗


编辑:我只是仔细检查了一下,解决方案应该是O(1.8^n)。有什么办法可以解决这个问题吗?

如果我们画递归树,它会像这样,为了简单起见,让每个节点都有两个子节点,这个树的高度是n,直到它达到基本情况为止。由于它是一个二叉树,节点的数量将是(2^n)-1。 因此T(n)=T(n-1)+T(n-3)的复杂性是O(2^n)

现在,总体复杂性是O(2^N)+O(N^3)+O(N^2)=O(2^N)因为O(N³)+O(N²)=O(N³)=O(f(N)),其中f(N)=N³− 12n²+30n²− 28, 存在一些常数γ>0,因此我们可以高估 作为具体线性非齐次递推的原递推T T′:

T′(n)=T′(n)−1) +T′(n)−3) +γf(n)

我们遵循通常的剧本,首先关注同质部分 (重复次数相同,但无γn³)。特征多项式为x³− x²− 1.假设α是这个多项式的任意零,函数 αn满足

αn=αn−1+αn−三,

假设基本情况值为正值,则 均匀部分为Θ(αn),其中α=1.46557…为零 最大参数的

我们还必须处理非均匀部分,但事实证明并非如此 渐近地起作用。通过设计,我们得到f(n)=(n−1) ³+(n−3)³ − n³, 所以让U(n)=βαn− γn3,我们可以验证

U(n)−1) +U(n)−3) +γn³=β(αn−1+αn−3) − γ((n−1) ³+(n−3)³ − f(n))=βαn− γn³=U(n)


是T′的一个解,使我们保持在相同的渐近类中。

谢谢,用图形方法这样更容易一些。现在如果我可以问,有没有办法找到更精确的结果(即精确的复杂度是O(1.8^n))?齐次部分将是。非齐次部分是O(poly(n)),所以我不知道我们如何得到O(1.8^n),除非使用big-O是一个上界这一事实。对于那些看这个答案并试图推广它的人来说,第一步中f(n)的选择是这样设计的:U(n)=an^3+bn^2+cn+d,并且U(n)-U(n-1)-U(n-3)-gamma n^3=0。然后可以使用标准技术求解系数。(@DavidEisenstat-正确吗?@templatetypedef是的。