- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法的经验分析
摘要:我们以前应用过许多算法分析,虽然这些技术能够成功应用于许多简单的算法,但即使有许多高级技术的支持,数学也远不是万能的。实际上我们能够证明,即使许多貌似简单的算法也是很难用数学的精确性和严格性来分析的。除了可以对算法的效率做数学分析以外,另一种主要的方法是对算法的效率做经验分析。
关键词:算法;效率;伪随机数;散点图
中图分类号:TP302文献标识码:A文章编号:1009-3044(2008)20-30281-02
Empirical Analysis of Algorithms
LI Zhan-xin
(Guangdong Technical School of Metallurgy,Guangzhou 511430,China)
Abstract:Algorithmic analysis has been put into application in many ways.And it has been applied in many simple algorithm successfully. Though this technology has been supported by many other advanced techniques, mathematics are not definitely omnipotent. In fact it has been proved that it is difficult to analyze many seemingly simple algorithm through the accuracy and preciseness of mathematics.Besides mathematic analysis of efficiency of algorithm, we can focus on the empirical analysis of it.
Key words:Algorithms;efficiency;pseudo-random number;scatter diagram
我们常常希望算法具有许多良好的特性,除了正确性,最重要的的特性就是“效率”了。实际上,有两种算法效率:时间效率和空间效率。对特定算法设计技术使问题求解的有效策略。下面这个方案清楚地描述了算法分析中的经验分析。
1 对算法效率做经验分析的通用方案
(1)了解实验的目的。
(2)决定用来度量效率的量度M和度量单位(操作次数还是直接时间)。
(3)决定输入样本的特性(它的范围和大小等)。
(4)为实验准备算法(或者若干算法)的程序实现。
(5)生成输入样本。
(6)对输入样本运行算法(或者若干算法),并记录观察到的实验数据。
(7)分析获得的实验数据。
在做算法的经验分析时,我们的目标往往不尽相同。可选的目标包括:检验算法效率理论上的结论的精确性,比较相同问题的不同算法或者相同算法的不同实现的效率,先假定算法的效率类型,然后在特定的计算机上确定实现该算法的程序效率。显而易见,这种实验的设计依赖于实验者打算探寻什么答案。
2 对算法的效率进行度量的方法
第一种方法就是在算法的程序实现中插入一些计数器来对算法执行的基本操作次数进行计数。这常常是一种简单的操作,我们只要留心程序的哪些地方可以会出现基本操作,并保证对每次基本操作都进行计数。虽然这项工作常常很简单,我们每次修改完程序以后还要对程序做测试,一方面保证它能够正确解决问题,另一方面保证它对基本操作的计数是正确的。
第二种方法是记录待讨论算法的程序实现的运行时间。最简单的做法是利用系统命令,就像UNIX中的time命令一样。另一种测量程序段运行时间的做法是,在程序段德刚开始处(tstart)和才结束时(tfinish)查询系统的时间,然后计算着两个时间的差(tfinish―tstart)。再C和C++中,我们可以用clock函数来达到这个目的;在Java中,System类的currentTimeMillis()方法提供了这个功能。
然而,我们应该了解这样一些事实。第一,一般来说,系统时间并不是十分精确的,对相同程序的相同输入重复运行多次,可能会得到有轻微差异的统计结果。一个明显的补救办法是进行多次这样的度量,然后取它们的平均值或中值作为该样本的观察值。第二,由于现代计算机的速度很快,程序的运行时间可能被报告为0,使得记录完全失败。解决这种困境的标准做法是用一个特定的循环多次运行这段程序,度量总运行时间,然后除以循环的重复次数。第三,在一个运行分时系统(像UNIX)
您可能关注的文档
最近下载
- 糖尿病的康复医学课件.ppt VIP
- 2025二 《在庆祝中国共产党成立100周年大会上的讲话》(教学设计)【中职专用】高一语文同步精品课堂(高教版2023·基础模块下册)(同课异构).docx VIP
- 2025年湖南省长沙市小升初入学分班考试数学试卷解析版.pdf
- 肾动脉狭窄的诊断和处理中国专家共识解读PPT课件.pptx VIP
- 2024年甘肃财贸职业学院招聘事业编制工作人员真题.docx VIP
- 人教版小学六年级数学上册教案全册 (最全).doc VIP
- 2023贵州教师招聘考试试题及答案.docx VIP
- 《跨文化交际》第七章 跨文化的人际交往 PPT课件.pptx
- 2025年海南省中考英语试题卷(含答案解析).docx
- 《亲爱的汉修先生》阅读练习及答案.docx VIP
文档评论(0)