【问题标题】:Big O complexity: T(n) = O(f(n)), G(n) = O(h(n)). Is T(G(n)) = O(h(f(n)))?大 O 复杂度:T(n) = O(f(n)),G(n) = O(h(n))。 T(G(n)) = O(h(f(n)))?
【发布时间】:2021-04-24 16:26:37
【问题描述】:
T(n)= O(f(n)), G(n)= O(h(n))

我将如何证明或反驳:

  T(G(n))= O(h(f(n))

我认为这是错误,因为它应该是 O(f(h(n))) 而不是 O(h(f(n))),因为在 T 之前应用了 G应用时,我尝试用多项式函数代替 T 和 G,我认为顺序很重要,(n^2)!不等于 (n!)^2 ,但我不确定这个推理是否正确?

【问题讨论】:

    标签: performance time big-o


    【解决方案1】:

    你是对的,这是错误的,但是我不太明白你的反例。
    一个反例是取一个函数及其逆函数,同时保持 h 渐近非常小:

    T(n) = 2^n , f(n) = 2^n 这符合2^n = O(2^n)
    并且
    G(n) = lg(n!) , h(n) = n lg(n) 这也符合lg(n!) < O(lg n^n) = O(n lg n) 的给定事实

    但是,T(G(n)) = 2^(lg(n!)) = n!h(f(n)) = 2^n lg(2^n) = n*2^n 但是,n! =/= O(n*2^n) 因为我们有阶乘函数与指数函数(乘以线性函数),因此我们证明它不是真的。


    n! =/= O(n 2^n) 的原因是因为:n*2^n < 2^n * 2^n = 4^n 并且我们知道阶乘函数“击败”指数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2020-08-05
      • 1970-01-01
      • 2012-04-13
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      相关资源
      最近更新 更多