《算法设计与分析》 笔记 (1)

一、基本概念

1、算法的定义:算法是规则的有限集合,是为解决特定问题而规定的一系列操作。

2、算法的特性:

     有限性:一个算法不能无限执行下去,必须保证步骤有限

     确定性:算法每一步不能用二义性

     可行性:可以实现

     输入:可以有0个或多个输入

     输出:一个算法至少有一个输出

一个算法可以没有输入但不能没有输出

3、算法分析准则:

     正确性、可读性、健壮性、高效率和低储存

4、算法复杂度:算法所需的计算机资源

         时间复杂度:算法中有关操作次数的多少,用T(n)表示

         空间复杂度:算法在执行过程中所占储存空间的大小,用S(n)表示

5、算法渐进分析(问题规模很大且趋于无穷时对算法性能的分析,常忽略其系数)

渐进上界O:O(g(n)) = { f(n) | 存在正常数C和n_{0},使得对所有n\geq n_{0},有0\leq f\left ( n \right )\leq Cg\left ( n \right ) },记作f\left ( n \right )= O\left ( g\left ( n \right ) \right )

渐进下界\Omega\Omega(g(n)) = { f(n) | 存在正常数C和n_{0},使得对所有n\geq n_{0},有0\leq Cg\left ( n \right )\leq f\left ( n \right ) },记作f\left ( n \right )= \Omega \left ( g\left ( n \right ) \right )

紧渐进界\Theta\Theta(g(n)) = { f(n) | 存在正常数C_{1}C_{2}n_{0}, 使得对所有n\geq n_{0} ,有C_{1}g\left ( n \right )\leq f\left ( n \right )\leq C_{2}g\left ( n \right ) }

当且仅当f\left ( n \right )= O\left ( g\left ( n \right ) \right )f\left ( n \right )= \Omega \left ( g\left ( n \right ) \right )时,f\left ( n \right )g\left ( n \right )同阶

非紧上界o:o(g(n)) = { f(n) | 对于任何常数C>0,存在正数n_{0}>0,使得对所有n\geq n_{0},有0\leq f\left ( n \right )< Cg\left ( n \right ) }

非紧下界\omega\omega (g(n)) = { f(n) | 对于任何常数C>0,存在正数n_{0}>0,使得对所有n\geq n_{0},有0\leq Cg\left ( n \right )< f\left ( n \right ) }

 6、渐进阶分析简化规则

  1)若f\left ( n \right )O\left ( g\left ( n \right ) \right )中且g\left ( n \right )O\left ( h\left ( n \right ) \right )中,则f\left ( n \right )O\left ( h\left ( n \right ) \right )

  2)若f\left ( n \right )O\left ( kg\left ( n \right ) \right )中对任意常数k\geq 0成立,则f\left ( n \right )O\left ( g\left ( n \right ) \right )中,可忽略O中常数因子

  3)若f_{1}\left ( n \right )O\left ( g_{1}\left ( n \right ) \right )中,f_{2}\left ( n \right )O\left ( g_{2}\left ( n \right ) \right )中,则f_{1}\left ( n \right )+f_{2}\left ( n \right )在        O\left ( max\left ( g_{1}\left ( n \right )+g_{2}\left ( n \right ) \right ) \right )

  4)若f_{1}\left ( n \right )O\left ( g_{1}\left ( n \right ) \right )中,f_{2}\left ( n \right )O\left ( g_{2}\left ( n \right ) \right )中,则f_{1}\left ( n \right )f_{2}\left ( n \right )O\left ( g_{1}\left ( n \right )g_{2} \left ( n \right )\right )

7、阶的证明方法

  1)反证法,常用于否定的论述

      例:对于n^{3}n^{2},证明n^{3}不是O\left ( n^{2} \right )

         证明:假设 n^{3}O\left ( n^{2} \right ),因为据低阶定义,n^{3}\leq Cn^{2},但对于\forall n\geq n_{0}n\leq C不成立,                    所以n^{3}\neq O\left ( n^{2} \right )

  2)极限法,利用极限描述

\lim_{n\rightarrow \infty }\frac{f\left ( n \right )}{g\left ( n \right )}= C\left\{\begin{matrix} C\neq 0,f=\Theta \left ( g \right ) & & \\ C=0,f=O\left ( g \right ) & & \\ C=\infty ,f=\Omega \left ( g \right )& & \end{matrix}\right.

洛必达法常用于求极限,若\lim_{n\rightarrow \infty }f\left ( n \right )=\lim_{n\rightarrow \infty }g\left ( n \right )=\infty,则\lim_{n\rightarrow \infty }\frac{f\left ( n \right )}{g\left ( n \right )}=\lim_{n\rightarrow \infty }\frac{​{f}'\left ( n \right )}{​{g}'\left ( n \right )}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值