具有时间复杂度的递推方程

时间:2014-08-08 05:35:06

标签: java algorithm time-complexity recurrence

我真的在努力解决这个递归问题。任何人都可以帮助我解决复发T(n)= 5T(n / 5)+5与基本条件T(1)= 0通过闭式公式?给出n = 5 ^ m,整数m = log5 n。

2 个答案:

答案 0 :(得分:2)

解决这个问题的一种非建设性的方法:看一下公式,我猜测T(5 m )=(5 m + 1 -5)/ 4 。这可以通过归纳来显示:

对于m = 0是正确的:T(1)= 0

假设m是正确的,我们将其显示为m + 1:T(5 m + 1 )= T(5 * 5 m )= 5T(5 m )+ 5 = 5 *((5 m + 1 -5)/ 4)+5 =(5 m + 2 -25 )/ 4 + 5 =(5 m + 2 -5)/ 4。

因此,所有m都是正确的。

答案 1 :(得分:2)

n > = 0计算T(5 n )就足够了。对于的所有其他值x ,T( x )将等于T( y ),其中 y 是小于的5的最大幂x ,因为计算是相同的。 (我假设当你写 n / 5时,你的意思是整数除法,即floor( n / 5)。)

然后:

T(5 0 )= 0
T(5 1 )= 5 * 0 + 5 = 5
T(5 2 )= 5 * 5 + 5 = 5 2 + 5 1
T(5 3 )= 5 *(5 * 5 + 5)+ 5 = 5 3 +5 2 + 5 1
......导致:
T(5 n )= 5 n + 5 n-1 + ... + 5 2 + 5 1

,使用高中代数公式(几何级数之和),

T(5 n )=(5 n + 1 - 5)/ 4

如果您考虑时间复杂度,请注意T( x )总是小于或等于5x / 4.而且因为我们不担心常数用O-notation表达事物的因素,这实质上意味着T( x )= O x )。