Analysis of algorithms: introduction】的更多相关文章

一系列的人物角色 Programmer,client,theoretician和blocking 学生可能会承担里面的一个或者多个角色 Running time 提出running time这个概念的可能要追溯到很远的时候,那时通过analytic engine来计算how many times turn lthe crank(手柄) 为什么要分析算法 一些高效算法的例子    快速傅里叶变换:NlogN而不是N2,快速傅里叶变换应用在很多领域(DVD,JPEG...) N-body simul…
算法分析 Analysis of Algorithms 为什么要做性能分析?Why performance analysis? 在计算机领域有很多重要的因素我们要考虑 比如用户友好度,模块化, 安全性,可维护性 等等.但是为什么要关心性能呢? 原因很简单,如果有了很好的性能,我们就可以实现以上那些.所以性能相当于货币,有了货币我们就可以购买其他的东西.另外一个原因是研究proformance 非常有趣. 两个算法,到底哪一个好呢?Given two algorithms for a task,…
课程信息 6.046 Design and Analysis of Algorithms…
"Mathematical Analysis of Algorithms" 阅读心得 "Mathematical Analysis of Algorithms"是著名计算机界大神Knuth在1971年发表的论文.以前只是听说Knuth非常神,看了这篇论文才体会到Knuth到底有多神-Orz 此外,特别感谢 @solaaaaa 聚聚,没有他的指导我可能根本看不懂这篇论文-... 这篇文章要解决什么问题? 作为算法分析这一领域的早期论文,这篇文章回答了以下两个问题: 算…
开头废话 这个问题是Donald.E.Knuth在他发表的论文Mathematical Analysis of Algorithms中提到的,这里对他的算法分析过程给出了更详细的解释. 问题描述: 给定一个数组a[1,2,...,n],用尽量少的比较次数找出数组中第t大的数.(假定这n个数两两不同). 算法描述: 对于这个问题,可以很容易想到对应的算法.一个 \(O(n\log n)\) 的排序算法总能解决问题(然鹅今天我们并不对数组进行完全的排序). 参照快速排序中的Partition操作,将…
算法分析 Introduction 有各种原因要求我们分析算法,像预测算法性能,比较不同算法优劣等,其中很实际的一条原因是为了避免性能错误,要对自己算法的性能有个概念. 科学方法(scientific method)也适用于算法分析,它提供了一个预测性能和比较算法的框架: Observe 观察真实世界的某些特征 Hypothesize 根据观察结果提出假设模型 Predict 用模型预测未来的事件 Verify 继续观察来核实预测的准确性 Validate 重复直到预测和观察一致 此外还有两条原…
我们生活在大数的时代 培养数量级的敏感! Tip:见招拆招 作为工程师,你先要能实现出来. 充实基础,没有什么不好意思 哪怕不完美.但是有时候完成比完美更重要. 之后再去想优化 P.S.作者Robert Sedgewick的导师是Knuth(高德纳!) Conclusion First 1.Running Time Operation table 2.Memory 1 SOP - Analysis 2 Observations Measuring the running time - autom…
例子: 3-Sum 给定N个整数,这里面有多少个三元组,使其三个整数相加为0,如上面的例子为有4个三元组. 这个问题是许多问题如计算机几何,图形学等的基础. 用简单粗暴的方式来解决3-Sum问题 通过三个for循环来执行 那么怎么计算它运行的时间呢? Java有一个内嵌的函数来计算运行时间:Stopwatch()           我们通过对不同的input size来运行获得运行时间,如上图所示,那么根据这些已得出来的值,我们可以推测出当input size为8K时,它的运行时间为多少吗?…
时间复杂性的计算一般而言,较小的问题所需要的运行时间通常要比较大的问题所需要的时间少.设一个程序P所占用的时间为T,则 T(P)=编译时间+运行时间. 编译时间与实例特征是无关的,且可假设一个编译过的程序可以运行多次而无需再编译.因此分析程序的时间特性就只需考虑程序的运行时间. 令程序P的运行时间为tp(n),其中n是所要求解问题的实例特征.由于编写程序时,影响tp的许多因素还是未知的,所以只能对tp进行估算.由于代码P的主要操作通常包括加.减.乘.除.比较.读.写等,而这些操作的执行时间是可预…
Question 1 Suppose that you time a program as a function of N and producethe following table. N seconds------------------- 1024 0.000 2048 0.001 4096 0.007 8192 0.029 16384 0.121 32768 0.519 65536 2.156 131072 9.182 262144 38.784 524288 164.585 10485…