算法分析 Analysis of Algorithms -------GeekforGeeker 翻译
算法分析 Analysis of Algorithms
为什么要做性能分析?Why performance analysis?
在计算机领域有很多重要的因素我们要考虑 比如用户友好度,模块化, 安全性,可维护性 等等。但是为什么要关心性能呢?
原因很简单,如果有了很好的性能,我们就可以实现以上那些。所以性能相当于货币,有了货币我们就可以购买其他的东西。另外一个原因是研究proformance 非常有趣。
两个算法,到底哪一个好呢?Given two algorithms for a task, how do we find out which one is better?
最笨的办法就是在电脑上实现两个算法,用不同的输入值,看看那个用时短。但是这样的办法有很多问题:
1. 对于有些输入,第一个算法好,但是对于有些输入,第二个算法好、
2. 还有一种可能,第一个算法对于某些输入在某一台机器上性能好,第二种算法在另一台机器上新能好。
渐进分析是一种可以解决以上问题的一种分析办法。在渐进分析中,我们用输入数据的大小来评估算法性能(我们并不会计算出真正的运行时间)。 我们计算的是根据输入的大小,算法的时间或者空间是如何增长的。
举个例子,在一个已排序的数组的查找问题,一种办法是用线性查找(线性增长),一种是用二分查找(binary search)(对数增长) 。为了理解渐进分析是如何解决上面两种问题的,让我们假设线性搜索运行在一台快速的电脑上,二分查找运行在一台较慢的电脑上。对于比较小的输入,快的电脑花的时间更少。但是输入的大小超过了某个值,二分查找绝对会用更少的时间运行完这个算法,即使二分查找运行在较慢的电脑上。原因是二分查找对于输入的大小增长是遵守对数增长的,但是线性查找是遵守线性增长。所以上面两个问题中关于计算机速度的问题,超过某个输入大小时,是可以忽略的。
渐进分析一直有用吗?Does Asymptotic Analysis always work?
渐进分析不是完美的,但是是最好的分析算法的方法。例如,两个排序算法在一台计算机上,一个用时为 100nlogn 另一个是 2nlogn (n 是排序元素的大小) 。两个渐进分析的大小是一样的,都是nlogn, 所以通过渐进分析,我们不能判断哪个算法更好,因为我们忽略了常数。 (即使100000000nlogn 和 nlog 也是一样的)。
还有一点,我们刚才说了超过某个输入的大小,但是也许你的算法的输入永远不会超过这个值,也就是说在渐进分析中慢的算法的性能更好。所以你可能会选择在渐进算法分析中慢的算法用在你的程序中。
原文链接:
http://www.geeksforgeeks.org/analysis-of-algorithms-set-1-asymptotic-analysis/
算法分析 Analysis of Algorithms -------GeekforGeeker 翻译的更多相关文章
- 《Mathematical Analysis of Algorithms》中有关“选择第t大的数”的算法分析
开头废话 这个问题是Donald.E.Knuth在他发表的论文Mathematical Analysis of Algorithms中提到的,这里对他的算法分析过程给出了更详细的解释. 问题描述: 给 ...
- "Mathematical Analysis of Algorithms" 阅读心得
"Mathematical Analysis of Algorithms" 阅读心得 "Mathematical Analysis of Algorithms" ...
- 6.046 Design and Analysis of Algorithms
课程信息 6.046 Design and Analysis of Algorithms
- 《Mathematical Analysis of Algorithms》中有关“就地排列”(In Situ Permutation)的算法分析
问题描述 把数列\((x_1,x_2,\cdots,x_n)\)变换顺序为\((x_{p(1)},x_{p(2)},\cdots,x_{p(n)})\),其中\(p\)是\(A=\{1,2,3,\cd ...
- Analysis of Algorithms
算法分析 Introduction 有各种原因要求我们分析算法,像预测算法性能,比较不同算法优劣等,其中很实际的一条原因是为了避免性能错误,要对自己算法的性能有个概念. 科学方法(scientific ...
- 612.1.002 ALGS4 | Analysis of Algorithms
我们生活在大数的时代 培养数量级的敏感! Tip:见招拆招 作为工程师,你先要能实现出来. 充实基础,没有什么不好意思 哪怕不完美.但是有时候完成比完美更重要. 之后再去想优化 P.S.作者Rober ...
- Analysis of algorithms: observation
例子: 3-Sum 给定N个整数,这里面有多少个三元组,使其三个整数相加为0,如上面的例子为有4个三元组. 这个问题是许多问题如计算机几何,图形学等的基础. 用简单粗暴的方式来解决3-Sum问题 通过 ...
- Time complexity analysis of algorithms
时间复杂性的计算一般而言,较小的问题所需要的运行时间通常要比较大的问题所需要的时间少.设一个程序P所占用的时间为T,则 T(P)=编译时间+运行时间. 编译时间与实例特征是无关的,且可假设一个编译过的 ...
- AlgorithmsI Exercises: Analysis of Algorithms
Question 1 Suppose that you time a program as a function of N and producethe following table. N seco ...
随机推荐
- KMP--Simpsons’ Hidden Talents
题目网址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110060#problem/C Description Homer: Marge ...
- String系列
String 简介 String 是java中的字符串,它继承于CharSequence.String类所包含的API接口非常多.为了便于今后的使用,我对String的API进行了分类,并都给出的演示 ...
- Wechat4j之Hello world——使用wechat4j快速开发java版微信公众号
Wechat4j是一个开源的java微信开发框架,是目前最简单易用的java微信开发框架. 项目地址:https://github.com/sword-org/wechat4j Wechat4j.ja ...
- Atitit.jsou html转换纯文本 java c# php
Atitit.jsou html转换纯文本 java c# php 1. 原理<p> <h> <li><div> 等lable转换为回车1 2. 调用2 ...
- SharePoint 2010: Nailing the error "The Security Token Service is unavailable"
http://blogs.technet.com/b/sykhad-msft/archive/2012/02/25/sharepoint-2010-nailing-the-error-quot-the ...
- 在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的工具
这是这个系列的第一篇,介绍一个小工具,主要是用在Web Service测试的. 因为为了用一点高级的东西,就免不了和web service打交道. 你可以使用按照KB819267来修改web.conf ...
- android webview 介绍
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装成名为WebView的组件. WebView使用: (1)添加权限:AndroidManifest.xml中必须使用许可&q ...
- java.lang.RuntimeException: Fail to connect to camera service问题
做音视频录制功能的真机调试的时候出现这个问题 错误意思为无法连接到相机服务 可能由两种情况导致 1.配置清单文件没有设置相应的权限 <uses-permission android:name=& ...
- iOS UI 之UILable
@interface ViewController : UIViewController @property (strong,nonatomic) UILabel *aLable; @property ...
- 既生瑜何生亮?ASP.NET MVC VS ASP.NET Web API
Asp.net MVC 与 Asp.net Web API 区别 在我们开发一些web应用时,我们一样可以在MVC Framework 中使用JsonResult 来返回JSON数据,同样也可以处理一 ...