前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >0.算法设计与分析__绪论

0.算法设计与分析__绪论

作者头像
Twcat_tree
发布2022-11-29 14:51:30
发布2022-11-29 14:51:30
3600
举报
文章被收录于专栏:二猫の家二猫の家

算法及其重要特性

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

算法的五大特性: ⑴ 输入:一个算法有零个或多个输入。 ⑵ 输出:一个算法有一个或多个输出。 ⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。 ⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。 ⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

问题的求解过程: 分析问题→设计算法→编写程序→整理结果 算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。

例子: 欧几里德算法——辗转相除法求两个自然数 m 和 n 的最大公约数

算法设计的一般过程 1.理解问题 2.预测所有可能的输入 3. 在精确解和近似解间做选择 4. 确定适当的数据结构 5.算法设计技术 6.描述算法 7.跟踪算法 8.分析算法的效率 9.根据算法编写代码

算法分析 算法分析(Algorithm Analysis):对算法所需要的两种计算机资源——时间和空间进行估算 时间复杂性(Time Complexity) 空间复杂性(Space Complexity)

算法分析的目的: 设计算法——设计出复杂性尽可能低的算法 选择算法——在多种算法中选择其中复杂性最低者

时间复杂性分析的关键: 问题规模:输入量的多少; 基本语句:执行次数与整个算法的执行时间 成正比的语句

渐进符号

  1. 大O符号 定义1.1 若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n)),或称算法在O(f(n)中。
  2. 大Ω符号 定义1.2 若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≥c×g(n),则称T(n)=Ω(g(n))
  3. Θ符号 定义1.3 若存在三个正的常数c1、c2和n0,对于任意n≥n0都有c1×f(n)≥T(n)≥c2×f(n),则称T(n)=Θ(f(n))

最好、最坏和平均情况 结论:如果问题规模相同,时间代价与输入数据有关,则需要分析最好情况、最坏情况、平均情况。 最好情况:出现概率较大时分析 最差情况:实时系统 平均情况:已知输入数据是如何分布的, 通常假设等概率分布

非递归算法的分析

  1. 决定用哪个(或哪些)参数作为算法问题规模的度量
  2. 找出算法中的基本语句
  3. 检查基本语句的执行次数是否只依赖于问题规模
  4. 建立基本语句执行次数的求和表达式
  5. 用渐进符号表示这个求和表达式

关键:建立一个代表算法运行时间的求和表达式,然后用渐进符号表示这个求和表达式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法及其重要特性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档