我试图分析递归函数g(N)=(1 / c)g(N / 2),对于N> = 2,终止情况为g(1)= 1,然后找到围绕它的大the。请记住,这个问题将n视为2的幂,所以N = 2 n ,这意味着n = lg(N)。
我在做这件事时发现,让我质疑我的假设是否正确。 i th 情况扩展为g(N)=(c -i )g(2 n - i )。然后设置n - i = 0,使得i = n并且g(N)=(c -n )g(2 n - n )。最后,g(2 0 )= 1,因此g(N)= c -n = c -lg(N) = N < sup> -lg(c) =(1 / N) lg(c)
我从中得到的是(1 / N) p =Θ(0),因为(1 / N) p 的极限为N - &GT; ∞等于0.
我真的只是想知道我是否正确这样做,因为在现实世界的应用程序中,我认为不可能有一个时间复杂度为0的算法。
答案 0 :(得分:0)
你写
真实世界的应用...具有时间复杂度的算法......
所以似乎重现 g(n)=(1 / c)g(n / 2)代表真实世界算法的运行时间。因此,仅当 0 <0时才有意义。 c&lt; 1 ,因为,否则,它是一种在较大输入上工作得更快的算法,这在现实世界中没有多大意义。
你的分析是有道理的,直到你分析Θ( -lg(c)),并决定这趋向于0.对于合理的值 c ,它自然会趋于无限。