8T(n / 2)+ n ^ 2的树方法

时间:2018-05-31 18:34:25

标签: math tree big-o

我正在尝试解决这个问题,但我想我还没有理解如何正确地解决这个问题。我在这类练习中做的第一件事是在行中取较大的值(在这种情况下是n ^ 2)并将它除去多次,这样我就能找到值之间有什么样的关系。在找到关系后,我尝试在数学上找到它的值,然后作为最后一步,我将结果乘以根。在这种情况下,结果应为n ^ 3。怎么可能? enter image description here

1 个答案:

答案 0 :(得分:1)

不幸的是@ vahidreza的解决方案对我来说似乎是错误的,因为它与Master定理相矛盾。就主要定理a = 8b = 2c = 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) i0的{​​{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定理的预测。