Big o T(sqrtn)和#x2B;5.
我面临一个问题:T(N)=T(sqrt(N))+5。 我想知道我能用这种方法解决它吗 T(N)=O(sqrt(N))+O(5) 因为O(5)=O(1)是一个常数,我们可以忽略它 所以T(N)的大O表示法是O(N^(1/2)) 或者我可以说它的符号是O(N),因为O(N)和O(sqrt(N))之间没有很大的区别Big o T(sqrtn)和#x2B;5.,big-o,computer-science,Big O,Computer Science,我面临一个问题:T(N)=T(sqrt(N))+5。 我想知道我能用这种方法解决它吗 T(N)=O(sqrt(N))+O(5) 因为O(5)=O(1)是一个常数,我们可以忽略它 所以T(N)的大O表示法是O(N^(1/2)) 或者我可以说它的符号是O(N),因为O(N)和O(sqrt(N))之间没有很大的区别 谢谢大家! 编辑:我在原始答案中犯了一个错误,假设n是2的幂,并将重复次数减少到1,2,4。。。n、 这是错误的。我为这一误导道歉。以下是最新的答案 从 T(n)=T(sqrt(n))+5
谢谢大家! 编辑:我在原始答案中犯了一个错误,假设n是2的幂,并将重复次数减少到1,2,4。。。n、 这是错误的。我为这一误导道歉。以下是最新的答案 从 T(n)=T(sqrt(n))+5 我们也可以这样写: T(n)=T(n^(1/2))+5 然后通过重复: T(n^(1/2))=T(n^(1/4))+5 T(n^(1/4))=T(n^(1/8))+5 T(n^(2^-m))=T(n^(2^-(m+1))+5 这并不表示我们可以停下来的常数,因此我们需要替换n 尝试: n=2^(2^)米 我们在哪里 m=对数n 从m=0开始,即n=2 然后我们有: T(n)=T(2)+5+5+…+5 有多少个5s? 我们这样计算: 2^(2^0),2^(2^1),2^(2^2),…2^(2^m) 所以有m5s,其中m=logn T(n)=T(2)+5对数n 就是 T(n)=O(对数n)
编辑:我在原始答案中犯了一个错误,假设n是2的幂,并将重复次数减少到1,2,4,…n,这是错误的。我为误导道歉。这是更新的答案 从 T(n)=T(sqrt(n))+5 我们也可以这样写: T(n)=T(n^(1/2))+5 然后通过重复: T(n^(1/2))=T(n^(1/4))+5 T(n^(1/4))=T(n^(1/8))+5 T(n^(2^-m))=T(n^(2^-(m+1))+5 这并不表示我们可以停下来的常数,因此我们需要替换n 尝试: n=2^(2^)米 我们在哪里 m=对数n 从m=0开始,即n=2 然后我们有: T(n)=T(2)+5+5+…+5 有多少个5s? 我们这样计算: 2^(2^0),2^(2^1),2^(2^2),…2^(2^m) 所以有m5s,其中m=logn T(n)=T(2)+5对数n 就是 T(n)=O(对数n) (为了整洁,让我们用一个常量
c
)替换5)
多次将此函数替换为自身,我们可以发现一种模式:
什么时候停止迭代?当满足停止条件时。将其视为n=2
(而不是通常情况下的1,因为参数是渐近的n=1
):
因此,该功能的最终成本为:
请注意,常数c
(=5)在渐近复杂性方面并不重要。(而且结果不仅仅是logn
,而是logn
)
编辑:如果要选择不同的停止条件
n=a,a>1
,则上述步骤将变为:
它与原始结果仅相差一个常数。(为了整洁起见,让我们用常数c
替换5)
多次将此函数替换为自身,我们可以发现一种模式:
什么时候停止迭代?当满足停止条件时。将其视为n=2
(而不是通常情况下的1,因为参数是渐近的n=1
):
因此,该功能的最终成本为:
请注意,常数c
(=5)在渐近复杂性方面并不重要。(而且结果不仅仅是logn
,而是logn
)
编辑:如果要选择不同的停止条件
n=a,a>1
,则上述步骤将变为:
它与原始结果只有一个常数不同。我被一个点弄糊涂了。如何得到T(2)=T(1)+5?因为T(1)=T(1)+5和T(2)=T(2^(1/2))+5,似乎T(2)不等于T(1)+5。@GarethLam是的……你是对的。从技术上讲,这并不清楚。但你可以忽略这一点……没有人会问你T是什么(1) T(2)是(这里T(1)甚至不严格存在…),重点是,我们可以把T(1),T(2)或任何T(c),其中c是一个常数,作为一个常数,在渐近条件下,是O(1)请记住,在大O表示法中,我们不会像解方程那样计算精确的值,相反,例如,我们使用
logn
而不是logu 2^n
或logu 10^n
。重要的是顺序。好吧,我认为这部分对我来说是可以的。但是计数部分呢。为什么使用logn而不是n?这种分析是不正确的t、 递归应该解决θ(logn)。@GarethLam为这个错误感到抱歉。请参阅我更新的答案。我对一点感到困惑。如何获得t(2)=t(1)+5?由于t(1)=t(1)+5和t(2)=t(2^(1/2))+5,似乎t(2)不等于t(1)+5.@GarethLam是的……你是对的。从技术上讲,这并不清楚。但在这里你可以忽略这一点……没有人会问你T(1)和T(2)是什么(这里T(1)甚至不严格存在…)。重点是,我们可以把T(1),T(2)或任何T(c),其中c是一个常数,作为一个常数,在渐近条件下,它是O(1)请记住,在大O表示法中,我们不会像解方程那样计算精确的值,相反,例如,我们使用logn
而不是logu 2^n
或logu 10^n
。重要的是顺序。好吧,我认为这部分对我来说是可以的。但是计数部分呢。为什么使用logn而不是n?这种分析是不正确的t、 循环应解为θ(log n)。@GarethLam对错误表示抱歉。请参阅我的更新答案。平方根收缩是复杂性的标志。平方根收缩是复杂性的标志。我想知道如何