1.3 算法和算法分析

算法和算法分析

一、算法概念

算法是对特定问题求解步骤的一种描述,是指令的有限序列

二、特性

  • 有穷性
    一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
  • 确定性
    算法中的每一条指令必须有确切的含义,在任何条件下,只有唯一的一条执行路径即对于相同的输入只能得到相同的输出。
  • 可行性
    算法要足够基本,算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
  • 输入和输出
    一个算法有零个或多个输入;有一个或多个输出。

三、设计要求

  • 正确性
    • 不含语法错误;
    • 对于某几组输入数据能够得出满足要求的结果;
    • 程序对于精心选择的典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果;
    • 程序对于一切合法的输入数据都能得出满足要求
      的结果.(算法维护阶段要解决的主要问题)
  • 可读性
    易于人的理解;
  • 健壮性
    • 当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而不是产生莫名奇妙的输出结果。
    • 并且,处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。
  • 高效率与低存储需求
    • 效率指的是算法执行时间
    • 存储量指的是算法执行过程中所需的最大存储空间。

两者都于问题的规模有关

四、算法效率的度量

4.1 基本思路

  • 算法 = 控制结构(顺序、分支、循环)+原操作(固有数据类型的操作)
  • 算法的执行时间 = ∑(原操作(i)的执行次数×原操作(i)的执行时间 )
    即: 算法的执行时间原操作执行次数之和正比
  • 基本操作:该操作重复执行次数和算法的执行时间成正比。
  • 算法的运行时间由算法中所有语句的频度之和(该语句重复执行次数)构成。
  • 算法的时间复杂度是由嵌套最深层语句的频度决定的。

4.2 度量效率方法

  1. 事后统计
    将算法实现,测算其时间和空间开销。

    缺点:⑴ 必须执行程序,编写程序实现算法将花费较多的时间和精力;
    ⑵ 所得实验结果依赖于计算机的软硬件等环境因素。

  2. 事前分析
    对算法所消耗资源的一种估算方法。

4.3 与执行时间相关因素

  • 算法选用的策略
  • 问题的规模
  • 编写程序的语言
  • 编译程序产生的机器代码的质量
  • 计算机执行指令的速度

所以使用绝对时间单位衡量算法效率不合适

五、算法的存储空间需求

S(n) = O(g(n))
表示随着问题规模n的扩大,算法运行所需存储量的增长率与 g(n) 的增长率相同。

算法存储量

  • 输入数据所占空间
  • 程序本身所占空间
  • 辅助变量所占空间
  • 若输入数据所占空间只取决与问题本身,和算法无关,程序所占的空间是细微的,比较少,则只需要分析辅助变量所占额外空间*
  • 原地工作:若额外空间相对于输入数据量来说是常数,则称此算法为原地工作。(即输入n组数据,n不确定,但对应的辅助变量所占空间固定)
  • 若额外空间所占空间量依赖于特定的输入,均按最坏情况来分析。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值