算法分析的基本概念和方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(n2)
编辑ppt
7
1.2. 算法的时间空间复杂度
二、算法的空间复杂度(Space Complexity)
❖ 算法的空间复杂度:在算法运行期间所需要的内存空间,通 常指除开容纳输入数据之外的附加空间(auxiliary space, or work space)。
❖ 通常用渐进形式表示。比如,S(n)= O(n2)、(n2)或 (n2)
两个实数相乘作为基本运算。
编辑ppt
10
1.3. 分析复杂度的基本步骤
元运算(elementary operation)
❖ 一个计算步骤,如果其时间耗费总是不超过某个常 量,而与输入和算法无关,则称之为元运算。
常见的元运算
❖ 算术运算:加、减、乘、除;
❖ 比较和逻辑运算;
❖ 赋值运算,包括指针赋值(比如,在遍历表或树时
本课程中主要讨论算法的时间和空间性能,并以此作为衡量 算法性能的重要标准,而且主要侧重于时间方面。
编辑ppt
6
1.2. 算法的时间空间复杂度
一、算法的时间复杂度(Time Complexity)
❖ 算法的时间复杂度:在算法运行期间所花费的时间。 ❖ 通常用渐进形式表示。比如,T(n)= O (n2)、 (n2) 或
编辑ppt
14
1.3. 分析复杂度的基本步骤
1. O-记号
❖ 设f(n)和g(n)均是从自然数集到非负实数集上的 函数。如果存在常数c>0和一个自然数n0,使得 对于任意的n≥n0 ,均有 f(n)≤cg(n),则f(n)=O(g(n))。
❖ 含义:阶至多为g(n)的函数,即上限。 ❖ 读法: O(g(n))读作“大Oh g(n)”。
下面将学习算法分析的主要内容:
分析算法时间复杂度的基本步骤 算法时间复杂度的有关概念 分析、求解算法复杂度的数学知识
编辑ppt
9
1.3. 分析复杂度的基本步骤
一、选取一种运算作为基本运算(basic operation)
❖ 对算法的分析必须脱离具体的计算机结构和程序设计语言。 因此,比较两个算法的好坏,看其中所需的运算时间的长短 是由算法所需的运算次数决定的。任何一个算法都可能有几 种运算,因此,我们抓住其中影响算法运行时间最大的运算 作为基本运算。如在一个字表中寻找Z的问题,把Z和表中元 素的比较作为基本运算。两个实数矩阵相乘的问题中,则把
编辑ppt
4
1.1.算法及其特性
❖ 一、 算法(algorithm)
算法就是一组有穷的规则,它们规定了解决某 一特定类型问题的一系列运算。
❖ 二、算法的五个特性
① 确定性 ② 能行性 ③ 有穷性 ④ 输入 ⑤ 输出
编辑ppt
5
1.1.算法及其特性
三、衡量算法性能的标准
衡量算法性能一般有下面几个标准: 确定性 易读性 健壮性 算法的时间和空间性能:高效率和低存储空间
编辑ppt
15
1.3. 分析复杂度的基本步骤
2. -记号
❖ 设f(n)和g(n)均是从自然数集到非负实数集上的 函数。如果存在常数c>0和一个自然数n0,使得 对于任意的n≥n0 ,均有 f(n)≥cg(n),则,f(n)= (g(n))。
❖ 含义: 阶至少为g(n)的函数,即下限。 ❖ 读法: (g(n))读作“omega g(n)”。
❖ 当遍历链表时,给指针赋值或者更新指针的操作可作为基本 运算;
❖ 在图的遍历中,可以将访问节点的操作为基本运算;等等。
编辑ppt
13
1.3. 分析复杂度的基本步骤
三 、渐近时间复杂度(asymptotic time complexity)
在实际中精确地求一个算法的基本运算次数f(n)等于多 少,往往不容易,甚至有时根本不可能,有些即使求出结果 很长,很繁琐,不易比较,需要简化。这时候我们可以不精 确地估计f(n)。此外,我们分析算法的时间目的主要在于, 能区分不同算法的优劣,在n很小时候,差别不大,随着n的 逐渐增大,差别越来越大,是个极限行为。基于上述原因, 引进下面渐近表示的方法。复杂度渐近表示可以将简洁地表 示出复杂度的数量级别。
编辑ppt
12
1.3. 分析复杂度的基本步骤
基本运算(basic operation)
❖ 在一个算法中,出现的频数最高(在相差一个常数因子的 意义上)的元运算称为基本元算。
常见的基本运算
❖ 当分析查找和排序的算法时,如果元素的比较是元运算, 则可作为基本运算;
❖ 在矩阵乘法的算法中,数的乘法可作为基本运算;
编辑ppt
8
1.2. 算法的时间空间复杂度
三、 算法分析 (Algorithm Analysis)
❖ 算法分析是指对于计算机算法的时间和空间复杂度进行定 量的分析。为了确切起见,假定执行算法的计算机是满足如 下条件的“通用型”计算机:
顺序处理机:每次执行程序中的一条指令; RAM足够大; 在固定的时间内可把一个数从一个单元取出或者存入。
的指针赋值);等等。
编辑ppt
11
1.3. 分析复杂度的基本步骤
二、表示出在算法运行期间基本运算执行的总频数
同一个问题对不同的输入,基本运算的次数亦可能不同。 因此,我们引进问题大小(即规模,size)的概念。例如, 在一个姓名表中寻找给定的Z的问题,问题的大小可用表中 姓名的数目表示。对于两个实数矩阵相乘的问题,其大小可 用矩阵的阶来表示。而对于遍历一棵二叉树的问题,其大小 是用树中结点数来表示等等。这样,一个算法的基本运算的 次数就可用问题的大小n的函数f(n)来表示。
2
知识要点
❖ 算法分析的概念
① 复杂度渐近表示的记号:O, , ② 平均时间复杂度,最坏时间复杂度,最好时间复杂度 ③ 最优算法
❖ 分析算法复杂度的基本方法
① 分析算法时间复杂度的步骤 ② 基本运算执行频数的统计方法
❖ 数学知识:求和公式、定积分近似求和、递归方程 的求解
编辑ppt
3
学习要求
❖ 掌握算法复杂度的基本概念 ❖ 熟悉算法复杂度分析的基本方法
第1章 算法分析的基本概念和方法
编辑ppt
1
内容提要
一、算法及其特性 二、算法的时间空间复杂度 三、算法分析(Algorithm Analysis)
1.分析算法时间复杂度的基本步骤 2.算法时间复杂度的有关概念 3.分析、求解算法复杂度的方法 四、最优算法(optimal algoritwenku.baidu.comm)
编辑ppt
编辑ppt
7
1.2. 算法的时间空间复杂度
二、算法的空间复杂度(Space Complexity)
❖ 算法的空间复杂度:在算法运行期间所需要的内存空间,通 常指除开容纳输入数据之外的附加空间(auxiliary space, or work space)。
❖ 通常用渐进形式表示。比如,S(n)= O(n2)、(n2)或 (n2)
两个实数相乘作为基本运算。
编辑ppt
10
1.3. 分析复杂度的基本步骤
元运算(elementary operation)
❖ 一个计算步骤,如果其时间耗费总是不超过某个常 量,而与输入和算法无关,则称之为元运算。
常见的元运算
❖ 算术运算:加、减、乘、除;
❖ 比较和逻辑运算;
❖ 赋值运算,包括指针赋值(比如,在遍历表或树时
本课程中主要讨论算法的时间和空间性能,并以此作为衡量 算法性能的重要标准,而且主要侧重于时间方面。
编辑ppt
6
1.2. 算法的时间空间复杂度
一、算法的时间复杂度(Time Complexity)
❖ 算法的时间复杂度:在算法运行期间所花费的时间。 ❖ 通常用渐进形式表示。比如,T(n)= O (n2)、 (n2) 或
编辑ppt
14
1.3. 分析复杂度的基本步骤
1. O-记号
❖ 设f(n)和g(n)均是从自然数集到非负实数集上的 函数。如果存在常数c>0和一个自然数n0,使得 对于任意的n≥n0 ,均有 f(n)≤cg(n),则f(n)=O(g(n))。
❖ 含义:阶至多为g(n)的函数,即上限。 ❖ 读法: O(g(n))读作“大Oh g(n)”。
下面将学习算法分析的主要内容:
分析算法时间复杂度的基本步骤 算法时间复杂度的有关概念 分析、求解算法复杂度的数学知识
编辑ppt
9
1.3. 分析复杂度的基本步骤
一、选取一种运算作为基本运算(basic operation)
❖ 对算法的分析必须脱离具体的计算机结构和程序设计语言。 因此,比较两个算法的好坏,看其中所需的运算时间的长短 是由算法所需的运算次数决定的。任何一个算法都可能有几 种运算,因此,我们抓住其中影响算法运行时间最大的运算 作为基本运算。如在一个字表中寻找Z的问题,把Z和表中元 素的比较作为基本运算。两个实数矩阵相乘的问题中,则把
编辑ppt
4
1.1.算法及其特性
❖ 一、 算法(algorithm)
算法就是一组有穷的规则,它们规定了解决某 一特定类型问题的一系列运算。
❖ 二、算法的五个特性
① 确定性 ② 能行性 ③ 有穷性 ④ 输入 ⑤ 输出
编辑ppt
5
1.1.算法及其特性
三、衡量算法性能的标准
衡量算法性能一般有下面几个标准: 确定性 易读性 健壮性 算法的时间和空间性能:高效率和低存储空间
编辑ppt
15
1.3. 分析复杂度的基本步骤
2. -记号
❖ 设f(n)和g(n)均是从自然数集到非负实数集上的 函数。如果存在常数c>0和一个自然数n0,使得 对于任意的n≥n0 ,均有 f(n)≥cg(n),则,f(n)= (g(n))。
❖ 含义: 阶至少为g(n)的函数,即下限。 ❖ 读法: (g(n))读作“omega g(n)”。
❖ 当遍历链表时,给指针赋值或者更新指针的操作可作为基本 运算;
❖ 在图的遍历中,可以将访问节点的操作为基本运算;等等。
编辑ppt
13
1.3. 分析复杂度的基本步骤
三 、渐近时间复杂度(asymptotic time complexity)
在实际中精确地求一个算法的基本运算次数f(n)等于多 少,往往不容易,甚至有时根本不可能,有些即使求出结果 很长,很繁琐,不易比较,需要简化。这时候我们可以不精 确地估计f(n)。此外,我们分析算法的时间目的主要在于, 能区分不同算法的优劣,在n很小时候,差别不大,随着n的 逐渐增大,差别越来越大,是个极限行为。基于上述原因, 引进下面渐近表示的方法。复杂度渐近表示可以将简洁地表 示出复杂度的数量级别。
编辑ppt
12
1.3. 分析复杂度的基本步骤
基本运算(basic operation)
❖ 在一个算法中,出现的频数最高(在相差一个常数因子的 意义上)的元运算称为基本元算。
常见的基本运算
❖ 当分析查找和排序的算法时,如果元素的比较是元运算, 则可作为基本运算;
❖ 在矩阵乘法的算法中,数的乘法可作为基本运算;
编辑ppt
8
1.2. 算法的时间空间复杂度
三、 算法分析 (Algorithm Analysis)
❖ 算法分析是指对于计算机算法的时间和空间复杂度进行定 量的分析。为了确切起见,假定执行算法的计算机是满足如 下条件的“通用型”计算机:
顺序处理机:每次执行程序中的一条指令; RAM足够大; 在固定的时间内可把一个数从一个单元取出或者存入。
的指针赋值);等等。
编辑ppt
11
1.3. 分析复杂度的基本步骤
二、表示出在算法运行期间基本运算执行的总频数
同一个问题对不同的输入,基本运算的次数亦可能不同。 因此,我们引进问题大小(即规模,size)的概念。例如, 在一个姓名表中寻找给定的Z的问题,问题的大小可用表中 姓名的数目表示。对于两个实数矩阵相乘的问题,其大小可 用矩阵的阶来表示。而对于遍历一棵二叉树的问题,其大小 是用树中结点数来表示等等。这样,一个算法的基本运算的 次数就可用问题的大小n的函数f(n)来表示。
2
知识要点
❖ 算法分析的概念
① 复杂度渐近表示的记号:O, , ② 平均时间复杂度,最坏时间复杂度,最好时间复杂度 ③ 最优算法
❖ 分析算法复杂度的基本方法
① 分析算法时间复杂度的步骤 ② 基本运算执行频数的统计方法
❖ 数学知识:求和公式、定积分近似求和、递归方程 的求解
编辑ppt
3
学习要求
❖ 掌握算法复杂度的基本概念 ❖ 熟悉算法复杂度分析的基本方法
第1章 算法分析的基本概念和方法
编辑ppt
1
内容提要
一、算法及其特性 二、算法的时间空间复杂度 三、算法分析(Algorithm Analysis)
1.分析算法时间复杂度的基本步骤 2.算法时间复杂度的有关概念 3.分析、求解算法复杂度的方法 四、最优算法(optimal algoritwenku.baidu.comm)
编辑ppt