




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.3-1.4 算法和算法分析算法: 是对特定问题求解步骤的一种描画,它是指令的有限序列,其中每一条指令表示一个或多个操作。一个算法通常具有五个重要特性: 有穷性 有限步终了 确定性 独一执行途径无歧义 可行性 可以经过根本运算实现实际上可以由人用纸和笔完成 输入 零个或多个输入 输出 一个或多个输出Al Khwarizmi阿勒.霍瓦里松初次提出算法概念,非常强调求解问题有条理的步骤。这是算法亘古不变的中心。1.3.1 算 法 的 概 念算法和数据构造是两个不可分割的一致体程序 = 数据构造 + 算法数据构造经过算法实现操作算法根据数据构造设计程序留意:不要把算法和计算机程序等同起来,后者只是
2、描画前者的手段之一,我们还可以用流程图、方式言语与自动机甚至自然言语描画一个算法。算法设计的要求: 正确性 正确反映需求(经过测试) 可读性 有助于了解、调试和维护 强壮性 完备的异常和出错处置 高效率与低存储的需求 时间、空间的要求1.3.2 算 法 设 计算法设计与分析是计算机科学的中心问题。算法设计与分析是计算机科学的中心问题。常用的算法设计方法有:常用的算法设计方法有:穷举法穷举法将问题空间中的一切求解对象一一列举出来,逐将问题空间中的一切求解对象一一列举出来,逐一分析、处置,并验证结果能否满足给定的条件。一分析、处置,并验证结果能否满足给定的条件。例:例:C+switch语句语句回溯
3、法回溯法将问题的候选解按某种顺序逐一枚举和检验,来将问题的候选解按某种顺序逐一枚举和检验,来寻觅一个满足预定条件的解。当发现当前候选解寻觅一个满足预定条件的解。当发现当前候选解不能够是解时,就退回到上一步重新选择下一个不能够是解时,就退回到上一步重新选择下一个候选解回溯。例:八皇后、迷宫、深度优候选解回溯。例:八皇后、迷宫、深度优先搜索先搜索 分治法和递归法分治法和递归法 遇到一个难以直接处理的大问题时,将遇到一个难以直接处理的大问题时,将其分割成一些规模较小的子问题,以便其分割成一些规模较小的子问题,以便各个击破,分而治之,然后把各个子问各个击破,分而治之,然后把各个子问题的解合并起来,得出
4、整个问题的解。题的解合并起来,得出整个问题的解。例:快速排序、归并排序、二分检索例:快速排序、归并排序、二分检索等等 贪婪法和动态规划法贪婪法和动态规划法 贪婪法的根本思想是从问题的初始形状贪婪法的根本思想是从问题的初始形状出发,根据某种贪婪规范,经过假设干出发,根据某种贪婪规范,经过假设干次的贪婪选择而得出部分最优解,寄希次的贪婪选择而得出部分最优解,寄希望于部分的最优解构建最终的全局最优望于部分的最优解构建最终的全局最优解。解。Prim和和Kruskal算法、算法、Dijkstra算算法法 动态规划是一种将问题实例分解为更小动态规划是一种将问题实例分解为更小的、类似的子问题,并存储子问题的
5、解的、类似的子问题,并存储子问题的解而防止计算反复的子问题,以处理最优而防止计算反复的子问题,以处理最优化问题的算法战略。动态规划法和分治化问题的算法战略。动态规划法和分治法类似?区别?例:法类似?区别?例:Floyd算法、矩阵算法、矩阵连乘积连乘积1.4 算法 分 析算法效率的衡量方法算法效率的衡量方法1事后统计事后统计利用计算机内记时功能。利用计算机内记时功能。缺陷:缺陷:必需先运转根据算法编制的程序;必需先运转根据算法编制的程序;所得时间统计量依赖于硬件、软件等环境要素,掩所得时间统计量依赖于硬件、软件等环境要素,掩盖算法本身的优劣盖算法本身的优劣1.4 算法 分 析 算法效率的衡量方法
6、算法效率的衡量方法2 事前分析估计事前分析估计 一个高级言语程序在计算机上运转所耗费的时间取决一个高级言语程序在计算机上运转所耗费的时间取决于:于:根据的算法选用何种战略根据的算法选用何种战略问题的规模问题的规模程序文语程序文语编译程序产活力器代码质量编译程序产活力器代码质量机器执行指令速度机器执行指令速度 时间复杂度和空间复杂度时间复杂度和空间复杂度算法的时间度量 从算法中选取一种对于研讨的问题来说是根本操作的原操作,以该根本操作反复执行的次数作为算法执行的时间度量。例,for ( j = 1 ;j=n ;j+ )X = X + 1 ;for ( i = 1 ;i=n ;i+ )(c)for
7、 ( i = 1 ;i 时的时间复杂性,被称之为渐进时间复杂度。 空间复杂度:算法的所需的空间和问题规模的函数。记为 S(n)。当 n- 时的时间复杂性,被称之为渐进空间复杂度。 给定两个正值函数 f 和 g,思索以下定义: 定义1: 假设存在正数c和N,对于一切的nN,有f(n)cg(n), 那么f(n)=O(g(n)。 上述定义阐明,假设对于足够大的n,或大于某自然数N的n,存在正数c,使 f 不大于cg,那么 f 是g的大O符号。大大O O符号符号 例如: f(n)=2n2+3n+1=O(n2) 在这里,g(n)=n2,c和N的可选值如表所示: 表 对于函数f(n)=2n2+3n+1=O
8、(n2),根据大O定义计算得到的c和N的不同值 N 1 2 3 4 5 c 6 4339131613225162大O符号 算法分析中常见的复杂度 O(1) O(lgn) O(n) O(nlgn) O(n2) O(n3) O(2n) O(n!) O(nn) 常数 对数 多项式 指数复杂度举例Time to FinishInput Size (n)O(nx)O(n)O(1)O( lg n)O(an)复杂度举例算法的重要性:算法的重要性:计算机不是万能的,并非一切的算法,计算机都可以计算出有用的结果。差的算法不一计算机不是万能的,并非一切的算法,计算机都可以计算出有用的结果。差的算法不一 定有实践意
9、义。定有实践意义。 举一个例子加以阐明。假定时间复杂性函数的时间单位为举一个例子加以阐明。假定时间复杂性函数的时间单位为 us。函数函数 n=20 n=50 n=100 n=500 1000n .02s .05s .15s .5s1000nlogn .09s .3s .6s 4.5s 100n2 .04s .25s 1s 25s10n3 .02s 1s 10s 21分分nlogn .4s 1.1小时小时 220天天 5 108世纪世纪2n/3 .0001s 0.1s 2.7小时小时 5 108世纪世纪2n 1s 35年年 3 104世纪世纪3n 58分分 2109世纪世纪易性算法易性算法顽性算
10、法顽性算法在大多数的情况下,我们只对时间复杂度感兴趣,它通常计算程序执行过程中赋值和比较操作的次数。 例1: for (i=sum=0; in; i+) Sum +=a i; 赋值2+2n次,渐近复杂度O(n)。确定渐近复杂度确定渐近复杂度 例2: for ( i = 0; i n; i+ ) for ( j = 1, sum=a 0; j = i; j+ ) sum +=a j; cout“sum for subarray 0 through i “issumendl; )()()() 1(31) 1321 (2312312211nOnOnOnnnnninni符号 符号符号 假设存在正数假设
11、存在正数c1,c2c1,c2及及N N,对于一切的,对于一切的nNnN,有,有c1g(n)f(n) c2g(n), c1g(n)f(n) c2g(n), 那么那么f(n)= (g(n)f(n)= (g(n)。 最好、平均和最坏情况有时,算法中根本操作反复执行的次数随问题的输入不同而不同。例,顺序查找算法Status search ( int a ,int n ,int e )for ( i = 0 ;i =n - 1 ;+i )if ( e = ai ) return TRUE ;比较次数的复杂度是多少?return FALSE ;最好、平均和最坏情况 最好情况:算法需求的最少步骤 最坏情况:
12、算法需求的最多步骤 平均复杂度:将处置每个输入所执行的步骤数与该输入出现的概率相乘,然后将一切相乘的结果相加。()()avgiiiCp input steps input()()avgiiiCp input steps input最好、平均和最坏情况有时,算法中根本操作反复执行的次数随问题的输入不同而不同。例,顺序查找算法Status serch ( int a ,int n ,int e )for ( i = 0 ;i =n - 1 ;+i )if ( e = ai ) return TRUE ;最好 1 次比较,最坏 n 次比较,平均 (n+1)/2 次比较。return FALSE ;数据构造的选择 分析问题分析问题 在算法设计之前初步设计数据构造在算法设计之前初步设计数据构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考试风纪教育及寒假安全
- 建筑设计规范与施工流程试题库
- 金融科技区块链技术创新与应用方案
- 2025年经济法概论考点回顾试题及答案
- 2025年辽阳营口鞍山三市中考语文5月模拟试卷附答案解析
- APP开发技术支持协议
- 社会责任承包协议
- 中级经济师考试应试策略及试题答案
- 2025年市政工程数据分析试题及答案
- 农田流转服务协议
- 2025届湖南省怀化三中数学高一下期末学业水平测试试题含解析
- 预防医学(安徽中医药大学)智慧树知到期末考试答案章节答案2024年安徽中医药大学
- 2019年4月自考00158资产评估试题及答案含解析
- (高清版)DZT 0004-2015 重力调查技术规范(150 000)
- 农业物流资料课件
- 大学生志愿服务西部计划
- 渡槽施工施工工艺与方法的技术创新
- 固体废弃物管理培训
- 【高新技术企业所得税税务筹划探析案例:以科大讯飞为例13000字(论文)】
- 培训资源整合报告
- 公司物业服务项目 投标方案(技术方案)
评论
0/150
提交评论