计算机算法设计与分析(1)--算法概述

基本说明

计算机算法设计与分析系列为本人在计算机算法设计与分析的学习阶段的个人学习心得笔记。
由于本人能力有限,因此其中不乏有缺漏之处,欢迎批评指正。

该笔记参考书籍为(third edition) 和(fourth edition)。

章节要点

  • 理解算法的概念
  • 理解什么是程序,程序与算法的区别和内在联系
  • 掌握算法的计算复杂性概念
  • 掌握算法渐近复杂性的数学表述
  • NP类问题的相关概念
  • 熟悉使用伪代码与c++语言描述算法

算法与程序

算法定义
算法是指解决问题的一种方法或者一个过程,更严格来说,算法是由若干条指令组成的”有穷序列”。

算法性质
算法具有四条性质:
输入、输出、确定性和有限性。

程序
程序是算法用某种程序设计语言的具体实现。其可以不满足算法中的有限性。

算法复杂度

算法复杂性的衡量标准是运行该算法所需要消耗的计算机资源的多少,其中,资源包括时间和空间两个部分,因此算法复杂性由时间复杂性和空间复杂性两个部分构成。

我们一般使用最好情况、最坏情况和平均情况衡量算法的复杂性,其中最坏情况是运行实例的最长时间,最好情况是运行实例的最短时间,而平均情况则是所有可能情况与其对应出现的概率的乘积之和。平均情况的估计,在一定的程度上体现了最大熵的原理。

为描述算法的复杂性,引入了五种衡量算法复杂性的渐进意义下的符号。分别为O, o, Omega, omega, Theta. 其分别表示为上确界,上紧确界,下确界,下紧确界,渐进确界;

在进行上紧确界,下紧确界的证明时,如果使用定义不能得到,那么可以使用比值极限的方法,上紧确界中原函数比上确界函数的极限为0,而下紧确界原函数比下紧确界函数极限为无穷大;

if 语句的时间复杂度按照最差情况进行评估;

算法分析

计算算法运行所需资源量的过程称为算法复杂性分析,简称为算法分析。

在进行算法的渐进分析的时候,该公式经常使用。斯特林公式: 斯特林公式

最好、最坏、平均情况分析
Tmax(N) = maxT(N,I) (I in Dn)
Tmin(N) = minT(N,I) (I in Dn)
Tavg(N) = SumP(I)T(N,I) (I in Dn)

值得注意的是,渐进分析中的任何符号的推导都是说存在正常数C和n0,对于任何n>n0的情况进行的分析。

注意思考算法的证明方法以及NP问题和计算算法复杂度的一般化方法。To be continued…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值