Big o T(n)=T(n-sqrt(n))&x2B;T(sqrt(n))和#x2B;1.

Big o T(n)=T(n-sqrt(n))&x2B;T(sqrt(n))和#x2B;1.,big-o,complexity-theory,recurrence,Big O,Complexity Theory,Recurrence,如何解决这个问题? 归纳法是获得答案的唯一方法吗?如果是的话,你会如何猜测基本情况 我的猜测是O(logn),但我不确定如何解决它。递归关系是: T(1) = c T(n) = T(n - sqrt(n)) + T(sqrt(n)) + 1 我们可以写出几个术语: n T(n) - ---- 1 c 2 c + c + 1 = 2c + 1 3 2c+1 + c + 1 = 3c + 2 4 2c+1 + 2c+1 + 1 = 4c + 3 5 3c+

如何解决这个问题? 归纳法是获得答案的唯一方法吗?如果是的话,你会如何猜测基本情况


我的猜测是O(logn),但我不确定如何解决它。

递归关系是:

T(1) = c
T(n) = T(n - sqrt(n)) + T(sqrt(n)) + 1
我们可以写出几个术语:

n    T(n)
-    ----
1    c
2    c + c + 1 = 2c + 1
3    2c+1 + c + 1 = 3c + 2
4    2c+1 + 2c+1 + 1 = 4c + 3
5    3c+2 + 2c+1 + 1 = 5c + 4
6    4c+3 + 2c+1 + 1 = 6c + 5
…    …
9    6c+5 + 3c+2 + 1 = 9c + 8
…    …
k    kc + k - 1 = k(c + 1) - 1
在尝试了一些术语之后,它看起来确实是线性的。我们可以猜测T(n)=k(c+1)-1并试图证明它

基本情况:T(1)=c=1(c+1)-1=c+1-1=c。证实

归纳假设:假设T(n)=n(c+1)-1,所有n到k,包括k

诱导步骤:显示T(k+1)=(k+1)(c+1)-1。从递推得到T(k+1)=T(k+1-sqrt(k+1))+T(sqrt(k+1))+1。根据归纳假设,这等于(k+1-sqrt(k+1))(c+1)-1+sqrt(k+1)(c+1)-1+1。简化,这是(k+1)(c+1)-1-1+1=(k+1)(c+1)-1,根据需要


因此,T(n)=n(c+1)-1,因此T(n)=O(n)。

递归关系为:

T(1) = c
T(n) = T(n - sqrt(n)) + T(sqrt(n)) + 1
我们可以写出几个术语:

n    T(n)
-    ----
1    c
2    c + c + 1 = 2c + 1
3    2c+1 + c + 1 = 3c + 2
4    2c+1 + 2c+1 + 1 = 4c + 3
5    3c+2 + 2c+1 + 1 = 5c + 4
6    4c+3 + 2c+1 + 1 = 6c + 5
…    …
9    6c+5 + 3c+2 + 1 = 9c + 8
…    …
k    kc + k - 1 = k(c + 1) - 1
在尝试了一些术语之后,它看起来确实是线性的。我们可以猜测T(n)=k(c+1)-1并试图证明它

基本情况:T(1)=c=1(c+1)-1=c+1-1=c。证实

归纳假设:假设T(n)=n(c+1)-1,所有n到k,包括k

诱导步骤:显示T(k+1)=(k+1)(c+1)-1。从递推得到T(k+1)=T(k+1-sqrt(k+1))+T(sqrt(k+1))+1。根据归纳假设,这等于(k+1-sqrt(k+1))(c+1)-1+sqrt(k+1)(c+1)-1+1。简化,这是(k+1)(c+1)-1-1+1=(k+1)(c+1)-1,根据需要


因此,T(n)=n(c+1)-1,T(n)=O(n)作为结果。

我将尝试给您一些提示。暂时忘掉
1
(以后处理它很容易,而且不会改变任何事情)
sqrt
也没关系:它可以是n/2,1,随便什么。此外,它还有助于想象一个递归树:每个节点的成本为1(基本情况),每个节点的值是其子节点值的总和。答案是根中的值。我将尝试给您一些提示。暂时忘掉
1
(以后处理它很容易,而且不会改变任何事情)
sqrt
也没关系:它可以是n/2,1,随便什么。此外,它还有助于想象一个递归树:每个节点的成本为1(基本情况),每个节点的值是其子节点值的总和。答案是根中的值。这是正确的,感谢您提供完整的答案。这样,如果是
T(n)=T(n-sqrt(n))+T(sqrt(n))+n
,则运行时间将变为O(n.log n),这类似于快速排序。这是正确的,感谢您提供完整的答案。这样,如果它是
T(n)=T(n-sqrt(n))+T(sqrt(n))+n
,则运行时间将变成O(n.log n),这与快速排序类似。