【问题标题】:Time complexity of T(n) = 27T(n/3) + (n^3)log(n) [closed]T(n) = 27T(n/3) + (n^3)log(n) 的时间复杂度 [关闭]
【发布时间】:2023-06-18 00:43:02
【问题描述】:

我需要一些帮助来解决这个问题。我自己试了一下,我得到了 teta((n^3)logn) 但 Wolfram Alpha 说:

我想这就像一个 O((n^3)log^2(n))。我不能使用主定理,所以我通过递归解决了它。这是我的解决方案,但我不知道它有什么问题

【问题讨论】:

    标签: algorithm recurrence master-theorem


    【解决方案1】:

    你在最后阶段犯了一个错误。使用这些属性:log(x) + log(y) = log(xy)log(x/y) = log(x) - log(y) 和 log(x^y) = y log(x)`,我们有以下内容:

    sum_{i=0}{k-1} log(m/3^i) = log(m^k / (1 * 3 * 3^2 * ... * 3^(k-1))) 
    = log(m^k) - log(3^((k-1)k/2) - 1) 
    = k log(m) - (k-1)k/2 log(3) = c * k * (k-1) = Theta(log(m) * log(m))
    

    因此,时间复杂度为m^3 log^2(m)

    【讨论】:

    • 非常感谢!现在清楚多了!
    • @KellyBundy 你是对的。它已更新。
    • @KellyBundy 谢谢,已更新。
    • 第二行的- 1是从哪里来的?顺便说一句,我认为如果每个= 都引起一个新行,它会更具可读性。