绪论

一、什么是算法?

机器学习 算法 伪代码 算法伪代码的优缺点_机器学习 算法 伪代码


机器学习 算法 伪代码 算法伪代码的优缺点_程序设计语言_02


二、算法的描述方法

  1. 自然语言
    优点:容易理解
    缺点:冗长、二义性
    使用方法:粗线条描述算法思想
    注意事项:避免写成自然
  2. 流程图
    优点:流程直观
    缺点:缺少严密性、灵活性
    使用方法:描述简单算法
    注意事项:注意抽象层次
  3. 程序设计语言
    优点:能由计算机执行
    缺点:抽象性差,对语言要求高
    使用方法:算法需要验证
    注意事项:将算法写成子函数
  4. 伪代码——算法语言
    伪代码(Pseudocode):介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。
    优点:表达能力强,抽象性强,容易理解

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

  • 查找问题
  • 排序问题
  • 图问题
  • 组合问题
  • 几何问题
    五、算法分析
  • 算法分析(Algorithm Analysis):对算法所需要的两种计算机资源——时间和空间进行估算
    时间复杂性(Time Complexity)
    时间复杂性分析的关键:
    问题规模:输入量的多少;
    基本语句:执行次数与整个算法的执行时间成正比的语句
    空间复杂性(Space Complexity)
  • 算法分析的目的:
    设计算法——设计出复杂性尽可能低的算法
    选择算法——在多种算法中选择其中复杂性最低者
    六、算法伪码的表示
  1. 赋值语句:←
  2. 分支语句:if …then … [else…]
  3. 循环语句:while, for,repeat until
  4. 转向语句:goto
  5. 输出语句:return
  6. 调用:直接写过程的名字
  7. 注释://…
    例:求最大公约数
    算法 Euclid (m, n)
    输入:非负整数 m, n,其中m与n不全为0
    输出:m 与 n 的最大公约数 1.
  • 1.while m > 0 do
  • 2.r ←n mod m
  • 3.n ←m
  • 4.m ←r
  • 5.return n
    七、算法的两种时间复杂度
  1. 最坏情况下的时间复杂度 W(n)
    算法求解输入规模为 n 的实例所需要的最长 时间
  2. 平均情况下的时间复杂度 A(n) 在给定同样规模为 n 的输入实例的概率分布 下,算法求解这些实例所需要的平均时间 A(n) 计算公式 平均情况下的时间复杂度 A(n) 设 S 是规模为 n 的实例集 实例 I∈S 的概率是 PI 算法对实例 I 执行的基本运算次数是 tI

机器学习 算法 伪代码 算法伪代码的优缺点_程序设计语言_03


  1. 在某些情况下可以假定每个输入实例概率相等
    八、函数渐进的界
  2. 大O符号
    定义:若存在两个正的常数c和n0对于任n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n)),或称算法在O(f(n)中。
  3. 大Ω符号
    定义:若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≥c×g(n),则称T(n)=Ω(g(n))
  4. Θ符号
    定义:若存在三个正的常数c1、c2和n0,对于任意n≥n0都有c1×f(n)≥T(n)≥c2×f(n),则称T(n)=Θ(f(n))