算法 讲稿.docVIP

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法 讲稿.doc

南 阳 理 工 学 院 备 课 讲 稿 教 学 内 容 批注 算法分析与设计 主讲教师:王秋芬 第一章 算法及基础知识(第一讲) 1.自我介绍 2.算法设计与分析内容介绍 3.进入课堂内容讲解。 由排序问题引出——(1)解决问题的方法、步骤(算法) (2)评价解决方法的好坏(算法复杂性分析) (3)数据结构 ↓ 瑞士著名计算机科学家N,wirth→程序=算法+数据结构 (学习算法的原因之一) 4.为什么要学习算法? (1)程序=算法+数据结构; (2)算法与日常生活息息相关算法是程序设计的根基学习算法能够提高分析问题的能力算法是推动计算机发展的关键研究算法是件快乐的事情 南 阳 理 工 学 院 备 课 讲 稿 教 学 内 容 批注 (1)输入零个或多个 (2)输出一个或多个(3)确定性。组成算法的每条指令必须有确定的含义,无歧义。(4)有限性。算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的 (5)可行性。1.自然语言步骤1:输入a和b步骤2:判断b是否为0,如果不为0,转步骤3,否则转步骤4步骤3:a除以b的余数赋值给r,b赋值给a,r赋值给b,转步骤2步骤4:输出a,算法结束。2.图形欧几里德算法用流程图描述如 3.伪代码 Step1: input a,b; Step2: if (b等于0) 执行Step3,否则执行Step4Step3: r=a%b,a=b,b=r,转Step2Step4: print a; End{算法结束} 南 阳 理 工 学 院 备 课 讲 稿 教 学 内 容 批注 4.程序设计语言 class OJLD{ public: OJLD(int m,int n) //OJLD是带两个整型参数的构造函数 {a=m;b=n;} void zzf( ) //zzf是类的成员函数,用于计算a和b的最大公约数 { int r; while(b!=0) { r=a%b; a=b; b=r; } printf(%d\n,a); } }; //类OJLD的定义结束 练习:将两个变量x和y的值交换,用四种方式描述。 三、算法与程序的区别 1.算法是具有输入、输出、有限性、确定性和可行性的有限条指令的集合;程序是用程序设计语言编写,用来完成特定任务的功能代码。 2.算法一般不能直接到计算机上执行,程序则能。 3.程序是某种程序设计语言对算法的具体实现,即翻译的结果。 4.程序可以不满足算法的有限性。(如操作系统) 1.2算法设计的一般过程 1.充分理解要解决的问题2.数学模型拟制 3.算法详细设计4.算法描述5.算法思路的正确性验证 6算法分析 7算法的计算机实现和测试8.文档资料的编制 南 阳 理 工 学 院 备 课 讲 稿 教 学 内 容 批注 1.3 算法分析 一、基本概念 1.算法的复杂性——算法所需要的计算机资源所需资源越多,表明该算法的复杂性越高所需资源越,表明该算法的复杂性越 二、算法分析的意义 1.对于任意给定的问题,设计出复杂性尽可能低的算法是在设计时考虑的一个重要目标当给定的问题已有多种算法时,选择复杂性最低者是在选用算法时应遵循的一个重要准则算法分析有助于对算法进行改进。 南 阳 理 工 学 院 备 课 讲 稿 教 学 内 容 批注 四、空间复杂性 (1)存储算法本身所占用的存储空间; (2)算法的输入输出数据所占用的存储空间; (3)算法在运行过程中所需的辅助变量占用的存储空间。 本书分析第三种情况占有的存储空间——最有意义。 五、渐进意义下的复杂性(第二讲) 一、引入 1.人们要求计算机解决的问题规模越来越大; 2.不能精打细算算法分析的工作量大、步骤繁简化的问题。假设算法AT1(n)=30n4+ 20n3+40n2+46n+100 算法BT2(n)=1000n3+50n2+78n+10 显然,当问题的规模足够大的时候,例如n=100万,算法的运行时间将主要取决于式的的执行时间只有它的几十万分之一,可以忽略不计。第一项的常数,随着n的增大,对算法的执行时间也变得不重要了。 于是,算法AT*1(n)≈n4,称n4为T*1(n)的阶。 算法BT*2(n)≈n3,称n3为T*(n)的阶。 结论:随着问题规模的增大,算法的时间复杂性将主要取决时间表达式的阶。设算法的运行时间为T(n),如果存在T*(n),使得 就称T*(n)为算法的渐进性态或渐进时间复杂性。 问题规模充分大在算法分析中,对算法的时间复杂性和算法的渐进时间复杂性往往不加区分,并用后者来一个算法的时间复杂

文档评论(0)

dzzj200808 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档