Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何在没有代码的情况下计算时间复杂度_Algorithm_Time Complexity - Fatal编程技术网

Algorithm 如何在没有代码的情况下计算时间复杂度

Algorithm 如何在没有代码的情况下计算时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,我必须证明(^正在崛起): n^2=O(2^n) n^2=Θ(2^n) 8^n=O(4^n) 8^n=Ω(4^n) 是否有一种理论方法总是能够知道它是真的还是假的,并给出证明?这些是极限计算问题: f(n) = O(g(n)) if and only if lim (f(n)/g(n)) = 0 n -> +inf f(n) = Θ(g(n)) if and only if lim

我必须证明(
^
正在崛起):

  • n^2=O(2^n)
  • n^2=Θ(2^n)
  • 8^n=O(4^n)
  • 8^n=Ω(4^n)
  • 是否有一种理论方法总是能够知道它是真的还是假的,并给出证明?

    这些是极限计算问题:

    f(n) = O(g(n))   if and only if      lim (f(n)/g(n)) = 0
                                           n -> +inf
    
    f(n) = Θ(g(n))   if and only if      lim (f(n)/g(n)) = some positive finite number
                                           n -> +inf 
    
    f(n) = Ω(g(n))   if and only if      lim (f(n)/g(n)) = +inifinity
                                           n -> +inf 
    
    或者,把它倒过来

    Let x = lim(f(n)/g(n))
              n -> +inf
    
    x = 0 ?                          then f(n) = O(g(n))
    x = some postive finite number ? then f(n) = Θ(g(n)) 
    x = +infinity ?                  then f(n) = Ω(g(n))
    
    因此,我们必须计算极限,例如,在第一种情况下:

     lim(n^2/2^n) = 0 (apply l'Hospital's rule twice)
       n -> +inf 
    
    这就是为什么
    n^2=O(2^n)
    等等:

     n^2 = O(2^n)  - true
     n^2 = Θ(2^n)  - false, in fact O(2^n)
     8^n = O(4^n)  - false, in fact Ω(2^n) 
     8^n = Ω(4^n)  - true
    
    你需要看看他们,并从他们那里学习


    让我们看一个。我们需要k和n0,以便

    |n2|≤ n>n0时的k·2n

    例如,在这种情况下,k=1和n0=3起作用。对于n=4,我们将有16个≤ 16,这很好。现在我们可以归纳推理了。假设它对n有效,看看它对n+1是否有效。我们会的

    |(n+1)2|≤ k·2(n+1)

    我们知道一切都是正的,所以我们可以去掉绝对值,我们可以这样操作:

    n2+2·n+1≤ k·2(n+1)→ n2/2+n+1/2≤ k·2n

    现在我们知道了k·2n≥ n2(诱导假说),因此它足以证明

    n2/2+n+1/2≤ 氮气→ 1/2+1/n+1/(2·n2)≤ 一,

    再进行一些操作,您将达到:

    n2-2·n-1≥ 0→ (n-1)2-2≥ 0

    对于n>n0=3,这一点非常正确


    现在让我们以3为例。这个是假的,8n≠ O(4n)。假设这个存在有效的k和n0值。那我等下,你应该

    |8n0+i|≤ k·4n0+i

    所以

    k·4n0+i/| 8n0+i |≥ 一,

    由于n0和i是肯定的,您可以重写为:

    k·(4/8)n0+i≥ 一,

    但很明显,对于i,不等式左侧的极限→ ∞ 为0,因此k和n0不能是有效值


    你应该能够对其余的进行类似的推理。对于2,θ涉及两个不等式,你要么证明两个不等式,要么反驳一个不等式;在这种情况下为假,2n不是n2的下限。对于4.,应沿着1的线。(这一点是正确的),但扭转了不平等的迹象