问题描述
我最近正在学习如何使用各种方法来解决重复问题。到目前为止,我已经熟悉了大师定理和替代方法。我似乎无法理解的一种方法是以下需要通过特征方程求解的问题:
T(n)=2T(n/3)+1,T(1)=1
我看了某些教程和阅读材料,我想我需要从中推导出某种程度和联立方程?
在这种情况下我该怎么做?
很抱歉在这方面是业余的。
解决方法
首先,我们必须将循环放在更标准的形式中。让 U(k) = T(3k)。那么
U(0) = 1
U(k) = 2 U(k−1) + 1
U 由非齐次线性递推方程定义。下一步是得到齐次部分的非平凡解:
V(k) = 2 V(k−1)
特征多项式是 x − 2,有一个根 x = 2,因此对于每个 c,解是 c 2k。 (如果有多个根,我们会考虑每个根的指数函数的每个线性组合。)
现在我们必须得到满足 U(k) = 2 U(k−1) + 1 的任何解决方案,更不用说基本情况了。如果额外项是多项式,我们可以找到多项式。在这种情况下,我们可以尝试一个常数函数,求解 x = 2 x + 1,得到 x = -1,并验证 U(k) = -1 实际上有效。
最后,我们必须写出 U(k) = −1 + c V(k) 并通过求解 c 来修复基本情况。由于 U(0) = 1 = −1 + c V(0) = −1 + c,我们得到 c = 2。
整体解为 U(k) = 2k+1 − 1,因此
T(n) = 2log3(n)+1 − 1 = 2log2(n)/ log2(3)+1 − 1 = 2 n1/log2(3) − 1.