首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T(n) = T(n - sqrt(n)) + T(sqrt(n)) +1

T(n) = T(n - sqrt(n)) + T(sqrt(n)) +1
EN

Stack Overflow用户
提问于 2019-06-03 20:00:58
回答 1查看 643关注 0票数 0

如何解决这一问题?归纳是获得答案的唯一途径吗?如果是这样的话,你将如何猜测基本情况?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 15:15:35

重复关系是:

代码语言:javascript
复制
T(1) = c
T(n) = T(n - sqrt(n)) + T(sqrt(n)) + 1

我们可以写几个条款:

代码语言:javascript
复制
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

归纳步骤:示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)-1-1+1= (k + 1)(c + 1) -1。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56433822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档