【问题标题】:Calculate Complexity of T(n)? [duplicate]计算 T(n) 的复杂度? [复制]
【发布时间】:2020-11-06 20:34:22
【问题描述】:

鉴于: T(n) = T(n/10) + T(an) + n 用于某些 a(我对其价值一无所知),并且:T(n) = 1 如果 n < 10

我想检查以下是否可能(对于一些a 值,我想找到可能的最小 a):

对于每一个c &gt; 0,都有一个n<sub>0</sub> &gt; 0,这样对于每一个n &gt; n<sub>0</sub>T(n) &gt;= c * n i> 或者换句话说 T(n)=omega(n)

感谢任何帮助。

【问题讨论】:

  • 您好,能否接受我的回答,谢谢。

标签: function recursion tree time-complexity big-o


【解决方案1】:

假设 a

T(n) = 1 ≤ n ≤ cn.

归纳地,对于 n ≥ 10,

T(n)
= T(n/10) + T(an) + n
≤ cn/10 + can + n
= c(1/10 + a + 1/c)n
≤ c(1/10 + a + 9/10 - a)n
= cn.

现在假设 a = 9/10。对于 1 ≤ n

T(n) = 1 > n log10 n - n.

归纳地,对于 n ≥ 10,

T(n)
= T(n/10) + T(9n/10) + n
> (n/10) log10 (n/10) - (n/10) + (9n/10) log10 (9n/10) - (9n/10) + n
= (n/10) log10 (n/10) + (9n/10) log10 (9n/10)
> (n/10) log10 (n/10) + (9n/10) log10 ( n/10)
= (n/10) (log10 n - 1) + (9n/10) (log10 n - 1)
= n log10 n - n.

给定 c > 0,选择 n0 使得 log10 n0 - 1 = c,即 n0 = exp10(c + 1)。那么对于所有 n > n0,

T(n) > n log10 n - n = n(log10 n - 1) > n(log10 n0 - 1) = cn.

【讨论】:

    【解决方案2】:

    对于每一个 c > 0 有 n0 > 0 使得对于每一个 n > n0,T(n) >= c*n

    我们假设 T(n) >= cn 对于某些 a 和每个 c > 0 成立。

    将不等式中的递推代入并求解a,可以得到:

    T(n) >= c*n
    
    (c*n/10) + (c*a*n) + n >= c*n 
    
    a >= (9/10) - (1/c)
    

    由于我们期望的结果是对所有 c 都成立(正式应用极限 c 趋于无穷大,这是 RHS 将最大化的地方),我们得到 a >= (9/10)。因此,a 的最小值是 (9/10),它将满足所有 c 的 T(n) &gt;= c*n

    在此之后,你可以通过归纳证明,确实是这样。

    【讨论】:

      【解决方案3】:

      在每个函数中,您需要找到方程的最高影响变量。在大尺度上,影响这个函数的最小可能 N 是任何常数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-14
        • 1970-01-01
        • 2015-05-08
        • 2013-07-16
        • 1970-01-01
        • 2021-05-05
        • 2015-08-04
        • 1970-01-01
        相关资源
        最近更新 更多