我正在尝试解决这个问题,但我想我还没有理解如何正确地解决这个问题。我在这类练习中做的第一件事是在行中取较大的值(在这种情况下是n ^ 2)并将它除去多次,这样我就能找到值之间有什么样的关系。在找到关系后,我尝试在数学上找到它的值,然后作为最后一步,我将结果乘以根。在这种情况下,结果应为n ^ 3。怎么可能?
答案 0 :(得分:1)
不幸的是@ vahidreza的解决方案对我来说似乎是错误的,因为它与Master定理相矛盾。就主要定理a = 8
,b = 2
,c = 2
而言。所以log_b(a) = 3
所以log_b(a) > c
因此这是由子问题支配的递归的情况所以答案应该是T(n) = Ө(n^3)
而不是@vahidreza所拥有的O(m^(2+1/3))
。
主要问题可能出在本声明中:
另外,您知道该树的log_8 m级别。因为在每个级别,您将数字除以8.
让我们试着正确解决它:
在第0级,您有n^2
(我更喜欢从0
开始计算,因为它会略微简化记法)
在第一级,您有8
个(n/2)^2
个节点或8*(n/2)^2
个
在第二级,您有8 * 8
个(n/(2^2))^2
个节点或8^2*(n/(2^2))^2
个
i
级{li> 您有8^i
个(n/(2^i))^2
个节点或8^i*(n/(2^i))^2
= n^2 * 8^i/2^(2*i)
= {{1} }
在每个级别,您的值n^2 * 2^i
除以2,因此在级别n
,值为i
,因此您将拥有n/2^i
级别。因此,您需要计算的是从log_2(n)
i
到0
的{{1}}的总和。这是一个几何级数,比例为log_2(n)
所以它的总和是
n^2 * 2^i
由于我们在讨论2
/ Σ (n^2 * 2^i) = n^2 * Σ(2^i) = n^2 * (2^(log_2(n)+1) - 1)/2
,我们可以忽略常量,因此我们需要估算
Ө
显然O
只是n^2 * 2^log_2(n)
所以答案是
2^log_2(n)
完全按照Master定理的预测。