算法(1)-渐进表示(本节无算法)

2016-09-14  本文已影响0人  陈码工

杂谈

谈日程

目标

渐进表示(Asymtoptic representation)

  1. 两个计算时间为函数f(n), g(n); 给出算法的执行时间:

上界函数 big O

  1. 定义1: 如果有两个正常数c和n0, 使得对所有的n>=n0的时候, 有0<=f(n)<=c*g(n) //左边小于等于右边的阶级;
    g(n)为f(n)的上界函数;

Ω 下界函数 big Omega

theta 平均情况

-被两条线给夹住了; 因此要求必须同阶级;
-3n2+5=O(n3); but 3n2+5!=theta(n3);

小o和小Ω

-f(n)/g(n)<e (e为任何>0的数) 换句话说, 去掉了Big O中的同阶级情况; 可以读作"fn阶级低于gn";
-g(n)/f(n)<e ,去掉了Big Ω中的同阶级, fn阶级高于gn;

整数求和公式的时间复杂度

常用的时间复杂度表格
  1. Σ<1~n>( i ) 的时间复杂度: n^2;

因为这是一个等差数列, 所以Sn = (n+1)*n/2

  1. Σ i^k的时间复杂度: n^(k+1)

对Σik/n(k+1)求极限, 运用洛必达法则, 解出是一个常数, 所以得出是theta(n^(k+1));

  1. n!的时间复杂度 stirling公式: (n/e)^n;

推导: n! == sqrt(2PIn)*(n/e)^n;

  1. Σ 1/i的时间复杂度=logN

证明使用调和级数, 假设x = Σ 1/i; 那么x>=2的时候, Sx=1+1+2+4+8+...-1=2^x-1; 那么也就是说,在原先Σ 1/i中,当和为x的时候, 需要有n=2^x-1项; 所以x=log(n+1) = O(logn);


上一篇 下一篇

猜你喜欢

热点阅读