Math 如何求解递归T(n)=2T(n^(1/2))+;日志n?

Math 如何求解递归T(n)=2T(n^(1/2))+;日志n?,math,logarithm,recurrence,Math,Logarithm,Recurrence,我试图找出重复出现的时间复杂性: T(n)=2T(n1/2)+对数n 我非常接近解决方案,但是,我遇到了障碍。我需要解决: n(1/2k)=1 为了简化我的替换模式。我不是在寻找复发的答案,只是为k都德寻找一个解决方案,如果是快速排序,那就是等式: 解决这个问题的方法是O(n*log(n)),因为现在它甚至更小(T(n)~n^1/2),对于一些n,这意味着你的复杂性小于O(n*log(n)) 试着用归纳法证明你的界限以对数为基数,任何1都是0 所以 n^((1/2)^k)=1 对数(n)(n^

我试图找出重复出现的时间复杂性:

T(n)=2T(n1/2)+对数n

我非常接近解决方案,但是,我遇到了障碍。我需要解决:

n(1/2k)=1


为了简化我的替换模式。我不是在寻找复发的答案,只是为
k

都德寻找一个解决方案,如果是快速排序,那就是等式:

解决这个问题的方法是
O(n*log(n))
,因为现在它甚至更小(
T(n)~n^1/2
),对于一些
n
,这意味着你的复杂性小于
O(n*log(n))


试着用归纳法证明你的界限

以对数为基数,任何1都是0

所以

n^((1/2)^k)=1

对数(n)(n^((1/2)^k))=对数(n)(1)

1/2^k=0

对数(1/2)((1/2)^k)=对数(1/2)(0)

对数基0的任何值都是负无穷大。。所以

k=-无穷大

我想你应该用一个不同于1的“最终数字”来表示n
只是说…

这是不可能解决的

n(1/2k)=1

对于k,因为如果n>1,那么对于任何非零x,nx>1。解决这个问题的唯一方法是选择k,使1/2k=0,但这是不可能的

但是,您可以解决以下问题:

n(1/2k)=2

首先,以双方的日志为例:

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

接下来,将两侧乘以2k:

lgn=2k

最后,再次查看日志:

lg n=k

因此,一旦k=lg n,该重复将停止

虽然你只要求k的值,但因为你已经问了整整一年了,我想我应该指出,你可以用变量替换来解决这个问题。尝试设置k=2n。那么k=lgn,你的复发率是

T(k)=2T(k/2)+k

这解(使用主定理)为T(k)=Θ(k logk),并使用k=lgn这一事实,整体递归解为Θ(logn logn)


希望这有帮助

当您开始展开递归时,您会得到:


这里,通过几个附加步骤实现同样的功能:

现在使用递归的边界条件(选择为0和1的数字2没有意义),您将得到:

k
替换回您将得到的方程式:

这里有两个使用相同思想的递归


我认为这没有帮助。如果你为
k
解决这个问题,你会得到一个非常可怕的结果。我投票将这个问题作为离题题来结束,因为这是一个数学问题,而不是编程问题。堆栈溢出是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许会是一个更好的提问的地方。是的,我同意会是这样,因为联合收割机是次线性的,输入大小也小得多。然而,若所有其他方法都失败了,我会尝试归纳法,但我只是想知道,一般来说,我怎样才能为b解出形式为c^a^b=1的方程。我知道这涉及到一些使用权力身份的诡计。主要是因为你永远无法继续平方根,直到1。你会发疯的。先生,我能这样解决吗-:T(n)=2T(n1/2)+logn=>T(2^m)=2T(2^(m/2))+log2^m=>T(2^m)=2T(2^(m/2))+m=>让2^m=k=>S(k)=2S(k/2)+logkclose!如果您插入k=2^n,当您将对数n项表示为k的函数时,它会发生什么变化?先生,请参阅我的方法,请帮助我前进。谢谢:)@laura我认为我的解决方案没有问题。我添加了一些中间步骤。是的,你是正确的。非常感谢!