关于数学:求解递归关系T(n)=√nT(√n)+ n

您所在的位置:网站首页 recurrence数学 关于数学:求解递归关系T(n)=√nT(√n)+ n

关于数学:求解递归关系T(n)=√nT(√n)+ n

2023-09-09 03:36| 来源: 网络整理| 查看: 265

是否有可能解决递归关系

T(n) = √n T(√n) + n

使用主定理? 它不是形式

T(n) = a ⋅ T(n / b) + f(n)

但是在CLRS第4章的练习中给出了这个问题。

相关讨论 一个类似的问题:math.stackexchange.com/questions/689887/

大师定理不能解决这个问题。但是,可以使用递归树方法求解为O(n log log n)。

这背后的直觉是要注意,在树的每个级别上,您都在做n个工作。顶层不显式工作。 n个子问题中的每一个对于n个工作的总和都不会工作n,等等。因此,现在的问题是递归树的深度。好吧,这是您可以在n变得足够小(例如,小于2)之前取n的平方根的次数。如果我们写

n = 2lg n

然后在每个递归调用中,n将取其平方根。这等效于将上述指数减半,因此经过k次迭代,我们得到了

n1/(2k) = 2lg n/(2k)

我们想在小于2时停止

2lg n/(2k) = 2

lg n/(2k) = 1

lg n = 2k

lg lg n = k

因此,在平方根的所有迭代之后,递归停止。并且,由于递归在每个级别上都执行O(n),因此总运行时间为O(n lg lg n)。

更笼统地说,就像任何算法将输入大小重复减少一半一样,会让您想到" log n",任何算法通过平方根反复减少输入大小都会使您想到" log log n"。例如,van Emde Boas树使用这种重复性。

有趣的是,该递归用于获得著名算法的运行时间,该算法可以确定性地假设计算机可以在恒定时间内取任意实数的底限,从而确定最接近的点对问题。

相关讨论 谢谢 !! 我确实尝试过通过递归树来解决它,但是完全错过了在每个层次上成本将恒定= n的观点! :) 实际上,如果重写n = 2 ^(2 ^ k),则可能可以使用主定理。 在这种情况下,T(n)=√nT(√n)+ n变为:T(2 ^(2 ^ k))= 2 ^(2 ^ k-1)T(2 ^(2 ^ k-1) ))+ 2 ^(2 ^ k)。 但是,a和b在这里不是恒定的。 我认为应该有办法,但现在想不出任何办法。 感谢您的出色解释。 当导出log log n时,我认为以n ^(1 /(2 ^ k))= 2开头,然后将两边都抬高到(2 ^ k),这样会减少混乱,导致n = 2 ^(2 ^ k ),则变为上面的log log n = k。 您说的是T(sqrt n)的任何内容,但与T(sqrt n)相乘的是(sqrt n)。是否可以考虑? T(n)= 4 * T(sqrt(n))+ n我们也可以对上述问题使用上述过程吗? 问题的链接stackoverflow.com/questions/13458399/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3