算法分析基础ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《算法设计技巧与分析》
第1章 算法分析基本概念
caozhanmao@sohu.com
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• 1.1 Introduction • l.2 Historical Background • 1.3 Binary Search • 1.3.1 Analysis of the binary search algorithm • 1.4 Merging Two Sorted Lists • 1.5 Selectinn Sort • 1.6 Insertion Sort • 1.7 Bottom-Up Merge Sorting • 1.7.1 Analysis of bottom-up merge sorting •
程序(Program)
• 程序是算法用某种程序设计语言的具体实现。 • 程序可以不满足算法的有限性的性质。例如操作系统,是一个
在无限循环中执行的程序,因而不是一个算法。 • 操作系统的各种任务可看成是单独的问题,每一个问题由操作
系统中的一个子程序通过特定的算法来实现。该子程序得到输 出结果后便终止。
➢ 输入:一个算法有0个或多个输入,以刻画运算对象的初始情况; ➢ 输出:一个算法有一个或多个输出,以反映对输入数据加工后的
结果。没有输出的算法是毫无意义的; ➢ 可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限
次运算后即可完成。
算法 几点说明
1. “算法”的 几个词:Algorithm、Logarithm、Algorism
接着,弄清该问题数学模型在已知条件下的初 始状态和要求的结果状态,以及这两个状态之 间的隐含关系。
然后探索从数据模型的已知初始状态到达要求 的结果状态所需的运算步骤。
算法的描述方法
自然语言; 图表; 框图; 计算机语言或程序设计语言等。
如,汇编、C++、Java。
1.3 二分搜索
• 假定元素满足:线序集合 • A[1…n] 中有x吗?
确定一个包含N个变量的多项式方程是否有整数解 简单理由陈述:P3Top
可判定性-〉可计算性理论, 可解性-〉计算理论; 有Digital Computer后,对可解问题的研究的要求越来越多。
程序,资源量,尽可能少使用资源(时间,空间)的有效算法的需求。 效率:指解决问题所需时间和空间 排序一组元素的算法作为研究的实例表明:设计了许多有效算法,解决 问题的效率将不会因其他方法而有大的提高。
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• 1.8 Time Complexity • 1.8.1 Order of growth • 1.8.2 The O-notation • 1.8.3 The fl-notation • l.8.4 The e-notation • 1.8.5 MamPles • 1.8.6 Complekity classes and the o-notation • 1.9 Space Complexity • 1.10 Optimal Algorithms
➢ 算法是在有限步骤内求解某一问题所使用的一组定义明确
的指令(规则)。通俗点说,就是计算机解题的过程。在 这个过程中,无论是形成解题思路还是编写程序,都是在 实施某种算法。前者是推理实现的算法,后者是操作实现 的算法。 ➢ 一个算法应该具有以下五个重要的特征:
➢ 有穷性: 一个算法必须保证执行有限步之后结束; ➢ 确切性: 算法的每一步骤必须有确切的定义;
1. 3 二分搜索及其时间复杂度
• 线性搜索 及其算法分析 • 二分搜索
同数据结构,略。但要求作为例子或问题求解。
ห้องสมุดไป่ตู้
比较次数分析
1.2 历史背景
20世纪,早期, 30年代 能否用有效的过程来求解问题受到关注
问题分类为:可解、不可解(存在有效过程来求解问题) 计算模型:存在模型,用此模型能建立一求解某问题的算法,--入- -可解的类 模型列举:歌德尔的递归函数,Church的Lamda演算,Post的波斯特机, Turing机。 Church论断:所有4个模型等效。如果一个问题在某一模型上可解,那么 在其他模型上都是可解的。=>“几乎所有”问题都是不可解的。
2. “算法”的现代诠释 算法的现代意义十分类似于处方、过程、方法、规程、程
序,一个算法就是有穷规则的集合。其中,规则规定了一个 解决某一特定类型的问题的运算序列。
3. 学习“算法”的方法
一个算法应该是可以信赖的,而且学习一个算法直到彻 底掌握的最好方法是反复进行试验。
因此,遇到一个算法时,应该找出这个算法的一个例子, 给出该例子的要点进行试验。
1. 1 引言
➢Donald E. Knuth: 计算机科学就是算法的 研究.
➢每个领域: 依赖 有效算法设计 ➢运行时间: 由例子到理论 ➢时间是衡量算法有效性的最好测度
➢算法的几个方面:
➢输入 ➢有限指令集 ➢输出 (存在? Y/N)
算法概念
➢ 算法是程序设计的精髓,程序设计的实质就是细化构造解 决问题的算法,将其解释为计算机语言。
好的算法所具备的意义
衡量算法性能的标准
• 衡量算法性能一般有下面几个标准
– 正确性 – 易读性 – 健壮性 – 算法的时间和空间性能:高效率和低存储空间
我们这里主要讨论算法的时间和空间性能,并以此作为衡 量算法性能的重要标准。而且我们主要侧重于时间方面。
算法的表达机制
【表达算法的抽象机制】对于一个明确的数学 问题,设计它的算法,总是先选用该问题的一 个数学模型。
• 从头到尾的扫描,比较n次: 顺序搜索 • 顺序搜索适合无序的集合
• 有序的集合:BinarySearch P4 • 要求能够写出:这个简单的算法,并分析
运算量。
1.3- (例) 线性查找的时间评估
最小查找时间? 最好情况, A[1]=X 平均查找时间?P(i)=1/n, Tavg(n)=n/2 最大查找时间?最坏情况, x 不在A[1...n]或x=A[n], 复杂度为n
第1章 算法分析基本概念
caozhanmao@sohu.com
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• 1.1 Introduction • l.2 Historical Background • 1.3 Binary Search • 1.3.1 Analysis of the binary search algorithm • 1.4 Merging Two Sorted Lists • 1.5 Selectinn Sort • 1.6 Insertion Sort • 1.7 Bottom-Up Merge Sorting • 1.7.1 Analysis of bottom-up merge sorting •
程序(Program)
• 程序是算法用某种程序设计语言的具体实现。 • 程序可以不满足算法的有限性的性质。例如操作系统,是一个
在无限循环中执行的程序,因而不是一个算法。 • 操作系统的各种任务可看成是单独的问题,每一个问题由操作
系统中的一个子程序通过特定的算法来实现。该子程序得到输 出结果后便终止。
➢ 输入:一个算法有0个或多个输入,以刻画运算对象的初始情况; ➢ 输出:一个算法有一个或多个输出,以反映对输入数据加工后的
结果。没有输出的算法是毫无意义的; ➢ 可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限
次运算后即可完成。
算法 几点说明
1. “算法”的 几个词:Algorithm、Logarithm、Algorism
接着,弄清该问题数学模型在已知条件下的初 始状态和要求的结果状态,以及这两个状态之 间的隐含关系。
然后探索从数据模型的已知初始状态到达要求 的结果状态所需的运算步骤。
算法的描述方法
自然语言; 图表; 框图; 计算机语言或程序设计语言等。
如,汇编、C++、Java。
1.3 二分搜索
• 假定元素满足:线序集合 • A[1…n] 中有x吗?
确定一个包含N个变量的多项式方程是否有整数解 简单理由陈述:P3Top
可判定性-〉可计算性理论, 可解性-〉计算理论; 有Digital Computer后,对可解问题的研究的要求越来越多。
程序,资源量,尽可能少使用资源(时间,空间)的有效算法的需求。 效率:指解决问题所需时间和空间 排序一组元素的算法作为研究的实例表明:设计了许多有效算法,解决 问题的效率将不会因其他方法而有大的提高。
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• 1.8 Time Complexity • 1.8.1 Order of growth • 1.8.2 The O-notation • 1.8.3 The fl-notation • l.8.4 The e-notation • 1.8.5 MamPles • 1.8.6 Complekity classes and the o-notation • 1.9 Space Complexity • 1.10 Optimal Algorithms
➢ 算法是在有限步骤内求解某一问题所使用的一组定义明确
的指令(规则)。通俗点说,就是计算机解题的过程。在 这个过程中,无论是形成解题思路还是编写程序,都是在 实施某种算法。前者是推理实现的算法,后者是操作实现 的算法。 ➢ 一个算法应该具有以下五个重要的特征:
➢ 有穷性: 一个算法必须保证执行有限步之后结束; ➢ 确切性: 算法的每一步骤必须有确切的定义;
1. 3 二分搜索及其时间复杂度
• 线性搜索 及其算法分析 • 二分搜索
同数据结构,略。但要求作为例子或问题求解。
ห้องสมุดไป่ตู้
比较次数分析
1.2 历史背景
20世纪,早期, 30年代 能否用有效的过程来求解问题受到关注
问题分类为:可解、不可解(存在有效过程来求解问题) 计算模型:存在模型,用此模型能建立一求解某问题的算法,--入- -可解的类 模型列举:歌德尔的递归函数,Church的Lamda演算,Post的波斯特机, Turing机。 Church论断:所有4个模型等效。如果一个问题在某一模型上可解,那么 在其他模型上都是可解的。=>“几乎所有”问题都是不可解的。
2. “算法”的现代诠释 算法的现代意义十分类似于处方、过程、方法、规程、程
序,一个算法就是有穷规则的集合。其中,规则规定了一个 解决某一特定类型的问题的运算序列。
3. 学习“算法”的方法
一个算法应该是可以信赖的,而且学习一个算法直到彻 底掌握的最好方法是反复进行试验。
因此,遇到一个算法时,应该找出这个算法的一个例子, 给出该例子的要点进行试验。
1. 1 引言
➢Donald E. Knuth: 计算机科学就是算法的 研究.
➢每个领域: 依赖 有效算法设计 ➢运行时间: 由例子到理论 ➢时间是衡量算法有效性的最好测度
➢算法的几个方面:
➢输入 ➢有限指令集 ➢输出 (存在? Y/N)
算法概念
➢ 算法是程序设计的精髓,程序设计的实质就是细化构造解 决问题的算法,将其解释为计算机语言。
好的算法所具备的意义
衡量算法性能的标准
• 衡量算法性能一般有下面几个标准
– 正确性 – 易读性 – 健壮性 – 算法的时间和空间性能:高效率和低存储空间
我们这里主要讨论算法的时间和空间性能,并以此作为衡 量算法性能的重要标准。而且我们主要侧重于时间方面。
算法的表达机制
【表达算法的抽象机制】对于一个明确的数学 问题,设计它的算法,总是先选用该问题的一 个数学模型。
• 从头到尾的扫描,比较n次: 顺序搜索 • 顺序搜索适合无序的集合
• 有序的集合:BinarySearch P4 • 要求能够写出:这个简单的算法,并分析
运算量。
1.3- (例) 线性查找的时间评估
最小查找时间? 最好情况, A[1]=X 平均查找时间?P(i)=1/n, Tavg(n)=n/2 最大查找时间?最坏情况, x 不在A[1...n]或x=A[n], 复杂度为n