【问题标题】:Solving the recurrence relation T(n) = n*T(n - 1) + n! (n > 0, T(0) = 2)求解递归关系 T(n) = n*T(n - 1) + n! (n > 0, T(0) = 2)
【发布时间】:2020-02-02 16:34:00
【问题描述】:

有人可以使用反向替换解决上述递归关系和渐近时间复杂度吗?我知道解决它的大师定理方法,但我不知道如何使用反向替换来获得该答案。

【问题讨论】:

    标签: algorithm complexity-theory


    【解决方案1】:

    只是为了扩展:

    T(n) = n*((n-1)*T(n-2) + (n-1)!) + n! =
           n*(n-1)*T(n-2) + n! + n!       =
           n*(n-1)*T(n-2) + 2 * n!        =
           n*(n-1)*((n-2)*T(n-3) + (n-2)!) + 2n! = 
           n*(n-1)*(n-2)*T(n-3) + 3 * n!
    

    通过归纳,可以证明:

    T(n) = n * (n-1) * (n-2) * ... * 3 * T(2) + (n-2) * n!
    

    我们知道T(0) = 2 和T(2) = 2 T(1) + 2! = 2 * (T(0) + 1) + 2 = 8:

    T(n) = 4 * n! + (n-2) * n! = (n+2) * n! = (n+1)! + n! = \Theta((n+1)!)
    

    【讨论】:

    • 那么什么是渐近时间复杂度或大 O 表示法?
    • 但马斯特定理给出的答案是 O(n^2n)
    • @ChinmayVemuri 你如何在这里使用主定理?主定理中的a 和b 是什么?
    • 我猜 a = n 和 b = 1
    • @ChinmayVemuri 你错了! a 和 b 应该保持不变!另外,n-1不能写成n/b!
    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 2019-04-15
    • 2011-11-08
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多