Analysis of Algorithms--preface

Analysis of Algorithms:

  • First part of the course is focused on analysis.
  • Second part of the course is focused on design.

The analysis of algorithm is the theoretical study.(算法分析是理论研究)

The theoretical study of computer-program performance and resource usage.(理论研究是关于计算机性能和资源利用的研究)

In programming, what is more important than performance?

  • correctness
  • simplicity
  • maintainability
  • cost
  • stability
  • functionablity
  • fearures
  • modularity
  • security
  • scalability
  • user-friendly

Why do we bother and why study algorithms and performance?

  • Algorithms is the feasible versus infeasible.
  • Algorithms give you a lauguage of talking about program behavior.
  • We study algorithms performance is it‘s tons of fun.

The problem of sorting(排序问题)

  • input:sequence<a1,a2,a3...an>
  • output:permutation<A1,A2...An>

Such that:A1<A2<...<An

Insertion-Sort:

for (int i = 1; i < a.length; i++) {
            key=a[i];
            int j=i-1;
            while (j>=0&&a[j]>key) {
                a[j+1]=a[j];
                a[j]=key;
                j--;
            }

            for (int k = 0; k < a.length; k++) {
                System.out.print(a[k]+" ");
            }
            System.out.println();

        }}

running time:

  one thing it depends on is the input itself.

  • Depends on input self(eg:already sorted)
  • Depends on input size(eg:6 elements vs 6*109)

  --parameterize things in the input size.

  • want upper bounds.guarantee to the user

Kinds of analysis:

  • worst-case analysis(usually):T(n)=max time on any input of size n.
  • Average case analysis(sometimes):T(n)=expected time over all inputs of size n.
  • best-case analysis(bogus:假象)No good.

What is insertion sorts worst-case time?

  Depends n computer.

  • relative speed (on same machine)
  • absolute speed (on defferent machine)

BIG Idea of algorithms:

on same machine analysis algorithms performance use asymptotic analysis(渐进分析)

asymptotic analysis:

  • ignore machine-dependent constants
  • look at the growth of the running time,look at growth of T(n) as n->∞

asymptotic notation(渐进符号Θ)

Θ-notation:

  • drop low order terms(弃去它的低阶级)
  • ignore leading constants(忽略前面的常量因子)
  • EX:3n3+90n2-5n+6046=Θ(n3)

Insertion-Sort worst-case sorted:T(n)=∑Θ(j)=Θ(n2)

Is insertion sort fast?

It‘s turns out for small n it is moderately fast;but it is not at all for large n.

时间: 2024-10-06 00:31:02

Analysis of Algorithms--preface的相关文章

《Mathematical Analysis of Algorithms》中有关“选择第t大的数”的算法分析

开头废话 这个问题是Donald.E.Knuth在他发表的论文Mathematical Analysis of Algorithms中提到的,这里对他的算法分析过程给出了更详细的解释. 问题描述: 给定一个数组a[1,2,...,n],用尽量少的比较次数找出数组中第t大的数.(假定这n个数两两不同). 算法描述: 对于这个问题,可以很容易想到对应的算法.一个 \(O(n\log n)\) 的排序算法总能解决问题(然鹅今天我们并不对数组进行完全的排序). 参照快速排序中的Partition操作,将

Analysis of algorithms: observation

例子: 3-Sum 给定N个整数,这里面有多少个三元组,使其三个整数相加为0,如上面的例子为有4个三元组. 这个问题是许多问题如计算机几何,图形学等的基础. 用简单粗暴的方式来解决3-Sum问题 通过三个for循环来执行 那么怎么计算它运行的时间呢? Java有一个内嵌的函数来计算运行时间:Stopwatch()           我们通过对不同的input size来运行获得运行时间,如上图所示,那么根据这些已得出来的值,我们可以推测出当input size为8K时,它的运行时间为多少吗?

612.1.002 ALGS4 | Analysis of Algorithms

我们生活在大数的时代 培养数量级的敏感! 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

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

AlgorithmsI Exercises: Analysis of Algorithms

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

analysis of algorithms

1. 2. binary search (sorted array) 给定查找对象,array,以及最大最小的范围:将查找对象与middle作比较,进而改变最大最小的范围,然后调用递归 时间复杂度的计算要考虑最坏的情况,本题中最坏的情况类比一条面包每天吃一半几天吃完的问题,时间复杂度为log以2为底n的对数 O(log2 n)可以直接写成O(log n),与底数无关(换底公式可以将它们换成统一的底) 3. array的缺点有两个,第一个是fixed size,所以一开始就要给所有元素预留出足够的

370 门免费编程与计算机科学在线课程

简评:这篇文章为大家整理出 370 门精选的免费高质量编程计算机科学类的课程(涵盖程序语言.人工智能.深度学习与机器学习等热门话题).这370 门课程是从 Class Central数据库里面的 7000 门课程挑选出来的,每个课程的 Rating(评价)也是由该网站上获取下来的平均值. 370 门课程里面根据难易程度被分为: 入门 中级 进阶 所收录的大部分教程都已经更新完毕了,你可以按照自己的节奏(Self Paced)随时观看学习,有小部分教程还在持续更新至中,当然了,它们全都是免费的!

计算机会议排名等级

http://blog.sina.com.cn/s/blog_9c411c310102vs2g.html 附件是计算机领域的学术会议等级排名情况,分为A+, A, B, C, L 共5个档次.其中A+属于顶级会议,基本是这个领域全世界大牛们参与和关注最多的会议.国内的研究者能在其中发表论文的话,是很值得骄傲的成就.A类也是非常好的会议了,尤其是一些热门的研究方向,A类的会议投稿多录用率低,部分A类会议影响力逐步逼近A+类会议.B类的会议分两种,一种称为盛会级,参与的人多,发表的论文也多,论文录用

Awesome Machine Learning

Awesome Machine Learning  A curated list of awesome machine learning frameworks, libraries and software (by language). Inspired by awesome-php. If you want to contribute to this list (please do), send me a pull request or contact me @josephmisiti Als