算法设计与分析_第一章_绪论

第一章 绪论

1.1为什么要学习算法
1.2算法及其重要特性
1.3算法的描述方法
1.4算法设计的一般过程
1.5重要的问题类型

1.1为什么要学习算法

1.算法——程序的灵魂
问题的求解过程:
分析问题→设计算法→编写程序→整理结果
程序设计研究的四个层次:
2.算法→方法学→语言→工具
提高分析问题的能力
算法的形式化→思维的逻辑性、条理性

1.2算法及其重要特性

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

1.3算法的描述方法

(1)自然语言
(2)流程图
(3)程序设计语言
(4)伪代码——算法语言

1.4算法设计的一般过程

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

1.5重要的问题类型

  1. 查找问题
  2. 排序问题
  3. 图问题
  4. 组合问题
  5. 几何问题

渐进符号

  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))
    算法设计与分析_第一章_绪论