- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2011研-算法复杂度.ppt
* 比如说操作系统,很多服务器程序 * 结合“最大子序列和”问题,阐述对应概念。 * * 引导为什么要定义在抽象计算机上? * 各有好处,可操作性最好、最有价值的是最坏情况下的时间复杂性! * 理解渐进复杂性的重要性和原理 矩阵乘法的主要运算,排序的主要运算! * * 在课堂推理规则(2) * 简单说明即可,它只不过是O的一个补充 10/25 * 举例说明时间复杂性: n=1024时,单个加法运算 O(logn)和O(n)各自所需要的时间; 画出各个函数的草图 1-n的全排列是一个O(n !)问题 * 算法设计与分析 北京交通大学计算机学院 李清勇 E-mail: Qingyongli@ Tel: 主校区: 9号楼 北314 算法与程序 输 入:有零个或多个外部量作为算法的输入。 输 出:算法产生至少一个量作为输出。 确定性:组成算法的每条指令清晰、无歧义。 有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。 算法是解决问题的方法或过程,严格地讲是满足下述性质的指令序列。 程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质(4)即有限性。 算法复杂度-直观定义 算法复杂度是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性,需要的空间资源的量称为空间复杂性。 这个量应该只依赖于算法要解的问题的规模、算法的输入和算法本身的函数。如果分别用N、I表示算法要求解问题的规模、算法的输入。一般把时间复杂性和空间复杂性分开,并分别用T和S来表示,则有: T=T(N,I)和S=S(N,I)。 问题规模 迷宫问题: 在一个N*N的迷宫中,求解从入口到出口的 路径,如果不存在路径则返回0。 问题的规模: N=2 VS N=10000 输入实例 迷宫问题: 在一个N*N的迷宫中,求解从入口到出口的路径,如果不存在 路径则返回0。 问题的规模: N=2 VS N=100000000000 算法的输入: N=10000时, 输入1:没有路径,且入口即被障碍包围 输入2:有一条路径; 更多例子 最大和连续子数列问题: 时间复杂度不应该是在特定计算机上求解某一个输入实例所需要的运行时间;而应该是一个不依赖于计算机配置、问题规模和输入实例的抽象表示。 10 100 1000 10000 算法1 飞快 很快 还可以 不能忍受 算法3 飞快 飞快 飞快 很快 快速排序算法: 输入实例1:完全逆序的数组,很慢; 输入实例2:完全顺序的数组,很快。 算法复杂度分析 T(N,I)定义-算法在一台抽象的计算机上运行所需要的时间。 K个元运算,O1,O2,…,Ok,运行一次所需时间为 t1,t2,…,tk; 统计Oi的调用次数为ei,ei=ei(N, I); 因此,T(N, I) = ∑tiei(N, I)。 算法复杂度分析 冒泡排序算法(升序排列) void sort(int *pValues, int iDim) { for (int i = 0; i iDim; i++) for (int j = 1; j iDim – i; j++) if (pValues[j] pValues[j -1]) { int iTemp = pValues[j]; pValues[j] = pValues[j - 1]; pValues[j - 1] = iTemp; } } 不可对规模为N的每一种合法输入都统计Swap,需合理的简化 Swap 算法复杂度分析 最坏情况下的时间复杂性: 最好情况下的时间复杂性: 平均情况下的时间复杂性: 其中DN是规模为N的合法输入的集合;I*是DN中使T(N, I*) 达到Tmax(N)的合法输入; 是中使T(N, )达到Tmin(N)的合法 输入;而P(I)是在算法的应用中出现输入I的概率。 算法复杂度分析 为什么要引入渐近复杂性?由大规模的输入数据决定。 对于算法A的复杂性函数T(N),如果存在T‘(N),使得当N→∞时有(T(N)- T‘(N))/T(N) → 0,那么就称T‘(N)为算法A当N→∞的渐近复杂性。 T‘(N)是T(N)略去低阶项所留下的主项,表达简单; 如果两个算法的渐近复杂性的阶不相同,那么只要确定出各自的阶就可以判断哪一个算法效率高; 进一步简化,省略常数因子(理由:阶跟T‘(N)中的常数因子没有关系!)。 算法复杂度表示 渐近意义下的记号:O、Ω、θ、o 设f(N)和g(N)是
您可能关注的文档
最近下载
- 西门子PLC通讯.ppt VIP
- 在线网课学习课堂《研究生学术规范与学术诚信》单元测试考核答案.docx VIP
- 风力发电机组防腐规范.pdf VIP
- 卧式车床使用说明书.doc VIP
- 2025年八项规定精神纠正“四风”应知应会知识问答试题及答案详解(历年真题).docx VIP
- 广西桂林2021年中考语文现代文阅读真题.docx VIP
- 2018年10月注册土木工程师(水利水电工程)《专业知识考试(上)》真题及详解.doc VIP
- 疫苗采购管理制度.docx VIP
- 国家中医药管理局《中医药事业发展“十五五 ”规划》全文.docx
- 苏G02-2019 房屋建筑工程抗震构造设计.pdf VIP
文档评论(0)