原文地址:Analysis of Algorithms | Set 1 (Asymptotic Analysis)

为什么要做性能分析?

这里呢有许多东西需要考虑,比如用户的友好度,模块化,安全性,以及可维护性等等。为啥就不考虑考虑性能呢?

答案很简单,如果我们拥有了性能,那么上面提到的东西也就有了。所以性能就像货币一样,用它我们可以买到上面提到的所有东西。另外学习性能的原因就是——速度超有趣!

对一个任务的两种算法,我们怎样才能确定哪个更好呢?

一个最普通的方法就是:实现两种算法,然后用不同的输入在你的计算机上跑跑,看看哪个用的时间更少。但是这种分析算法的方法存在很多问题。

1)对于一些输入,第一个算法可能比第二个快,对于另外一些输入呢,第二个又比第一个好。

2)也有可能对于一些输入,第一个算法在一个机器上比第二个算法好,但是在另一台机器上第二个又比第一个好。

渐近分析是一个大问题,它就是在算法分析中处理上面的问题的。在渐近分析中,我们用输入的大小来评估算法的性能(我们不测量具体的运行时间)。我们计算的是随着输入大小的增加,算法所需要的时间(或者空间)。例如,我们考虑一个有序数组的搜索问题(搜索一个指定项)。
一个方法就是线性查询(递增顺序是线性的),另一个方法就是二分查询(递增顺序是对数级的)。为了能够很好滴理解渐近分析是怎样在算法分析中解决上面提到的问题,我们假设让线性查找在一个快的机器上跑,而让二分查询在一个慢的机器上跑。对于输入数组的大小比较小的时候,那么快的计算机花费的时间可能较少。但是,当输入的数组大小增长到一定程度的时候,二分查询的花费时间毫无疑问要比线性查询花费的时间要少,尽管二分查询是在比较挫的机器上跑的。原因是对递增数组进行二分查询对于输入的大小是对数级的,而线性查询则是线性级的。所以在特定的输入大小之后,机器的本身是可以忽略的。

渐近分析总是有效吗?

渐近分析不是完美的,但是它是分析算法的最好方法。例如,有两个排序算法,在同一台机器上分别花费1000nLogn与2nLogn的时间。这两个算法的进行线是相同的(递增方向是nLogn)。所以,用渐近分析,我们不能判定哪个更好,因为我们忽略了渐近分析的常量。

另外在渐近分析中,我们总是讨论输入的大小多余常量值。你的软件或者算法可能永远不会用到这么量大的输入,虽然你的算法渐近是更慢的,但是它在你特定的情况下工作是很有效的,所以你可以不用为你的软件把渐近更慢的算法替换为更快的算法。

参考:
MIT’ s Video lecture 1 on Introduction to Algorithms.

算法分析之渐近分析(Asymptotic Analysis)相关推荐

  1. 人工智能学习框架TensorFlow渐近分析

    https://www.toutiao.com/a6701636038911066637/ 算法的渐近分析是指定义其运行时性能的数学边界/框架.使用渐近分析,我们可以很好地得出算法的最佳情况,平均情况 ...

  2. Asymptotic Analysis——渐近分析

    上图主要介绍的是渐进分析的动机是什么. 高级推理算法的"灵魂"(翻译水平有限,不知道合适不合适,若有好的翻译请告诉我,或者你直接看英文原版吧) 不关注架构/语言/编译器的相关细节( ...

  3. 算法复杂度/大O方法/渐近分析法

    A Gentle Introduction to Algorithm Complexity Analysis Dionysis "dionyziz" Zindros dionyzi ...

  4. 【算法设计与分析】算法的时间复杂度(介绍O渐近上界,Ω渐近下界,θ准确的界)

    什么是时间复杂度? 我们先看看一些函数的渐近表达式: 关于时间复杂度的基本要点: 时间复杂度反映的是随着问题规模的变大,计算所需的时间的增长速度,与系数的多少关系不大 算法的渐近时间复杂度,简称时间复 ...

  5. 【算法设计zxd】第2章 分析基础——渐近的界,基本效率类型

    多数情况:贪心>动态规划[同阶,但是系数不同] 增长的记号: O渐近上界,o f比g低阶,Ω渐近下界,ω f比g高阶,Θ渐近紧界 算法效率评价的指标: 算法对计算机资源的使用:          ...

  6. 算法复杂度分析(渐近记号)

    [见解]关于算法复杂度的理解不能只停留在根据代码直接凭感官或者经验直接推测其公式(例如:根据for循环直接推测出一个O(n)复杂度,关于复杂度的理解更应该深入到其所代表的函数空间中去. 1.渐进记号 ...

  7. 《算法导论》算法分析 5种渐近记号 Θ O o Ω ω

    当输入规模足够大,使得运行时间只与增长量级有关时,需要研究算法的渐近效率.也就是,当输入规模无限增加时,在极限中,算法的运行时间如何随着输入规模的变大而增加.本文中所用插图来自<算法导论> ...

  8. 多角度透彻理解渐近表示法(大O表示法)

    多角度透彻理解渐近表示法(大O表示法) 若觉得本文写得还可以,请多多关注本人所作书籍<C++语法详解>电子工业出版社出版,网盘地址: https://pan.baidu.com/s/1dI ...

  9. 归因分析(Attribution Analysis)模型解析

    一.什么是归因分析? 在复杂的数据时代,我们每天都会面临产生产生的大量的数据以及用户复杂的消费行为路径,特别是在互联网广告行业,在广告投放的效果评估上,往往会产生一系列的问题: 哪些营销渠道促成了销售 ...

  10. 央行数字货币渐行渐近:未来金融竞争终极场所

    "目前数字人民币已取得阶段性成果,正在进行内部的封闭测试."央行副行长范一飞日前在公开场合透露的这一重磅信息,再次激起对央行数字货币(DC/EP)的热烈讨论.从 2016 年央行数 ...

最新文章

  1. element ui分页怎么做_elementUI实现分页
  2. visual C++如何查看汇编代码
  3. SecureCRT的使用
  4. Android中利用HttpClient建立一次持久的连接
  5. 【Linux】一步一步学Linux——unset命令(202)
  6. HBase-site.xml 常见重要配置参数(转载)
  7. Redis--事务理解
  8. 无线路由器在手机上如何连接服务器,192.168.10.1路由器手机怎么设置? | 192路由网...
  9. 前端学习(2655):vue2中用ref实现计算器
  10. Java IO流之PrintStream分析
  11. 2020中国移动阅读行业报告
  12. 转-开源云API竞争大幕开启
  13. The requested URL /server-status was not found on this server
  14. mysql排序区分大小写吗_MySQL的order by时区分大小写
  15. 【测试】ESP32连接蓝牙耳机音箱测试
  16. 几何画板椭圆九种画法_椭圆的画法几何画板的动画演示
  17. 1_科普—什么是GNU?什么是GPL协议?GNU和Linux是怎么结合在一起的?
  18. 金山篡改浏览器主页问题(改成毒霸网址大全)
  19. 计算机分层和tcp分层_认知分层的机械权威与人类权威
  20. 中国兽医参考实验室市场趋势报告、技术动态创新及市场预测

热门文章

  1. dsp2812 pmsm foc之EVA初始化详解
  2. MCU中RS485接口设计
  3. 黑客Windows攻防初级知识点整合
  4. tl494cn逆变器电路图_用TL494制作的逆变电源
  5. 支付宝对应APPID
  6. 谷歌和金山词霸合作 翻译行业垄断出现
  7. 传说中的世界500强面试题-
  8. 微信小程序地图导航实例讲解
  9. 使用 ExtendSim 进行国防、军事和安全系统建模
  10. 华胜天成以精益服务为中国联通构建电子渠道容灾系统