AlgorithmsI Exercises: Analysis of Algorithms
Question 1
Suppose that you time a program as a function of N and produce
the 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
1048576 698.592
2097152 2958.141
Estimate the order of growth of the running time as a function of N.
Assume that the running time obeys a power law T(N) ~ a N^b. For your
answer, enter the constant b. Your answer will be marked as correct
if it is within 1% of the target answer - we recommend using
two digits after the decimal separator, e.g., 2.34.
Answer: 2.08
Question Explanation
The theoretical order-of-growth is N ^ (25/12) = 2.08
The empirical order-of-growth is N ^ (log_2 ratio)
log_2
N seconds ratio ratio
---------------------------------------
1024 0.000 - -
2048 0.001 - -
4096 0.007 7.00 2.81
8192 0.029 4.14 2.05
16384 0.121 4.17 2.06
32768 0.519 4.29 2.10
65536 2.156 4.15 2.05
131072 9.182 4.26 2.09
262144 38.784 4.22 2.08
524288 164.585 4.24 2.09
1048576 698.592 4.24 2.09
2097152 2958.141 4.23 2.08
Question 2
What is the order of growth of the worst case running time of the following code fragment
as a function of N?
int sum = 0;
for (int i = 0; i < N; i++)
for (int j = i+1; j < N; j++)
for (int k = j+1; k < N; k++)
for (int h = k+1; h < N; h++)
sum++;
Answer: N^4
int sum = 0;
for (int i = N*N; i > 1; i = i/2)
sum++;
Answer: logN
The i loops iterates ~ lg (N^2) ~ 2 lg N times.
int sum = 0;
for (int i = 1; i <= N*N; i = i*2)
for (int j = 0; j < i; j++)
sum++;
Answer: N^2
The body of the innermost loop executes 1 + 2 + 4 + 8 + ... + N^2 ~ 2 N^2 times.
Question 3
Given the following definition of a MysteryBox object:
public class MysteryBox {
private final long x0, x1, x2, x3;
private final double y0, y1, y2, y3;
private final boolean z0;
private final int[] a = new int[320];
...
}
Using the 64-bit memory cost model from lecture, how many bytes does
each object of type MysteryBox use? Include all memory allocated when the
client calls new MysteryBox().
Answer: 1400
Question Explanation:
The correct answer is: 1400
public class MysteryBox { // 16 (object overhead)
private final long x0, x1, x2, x3; // 32 (4 long)
private final double y0, y1, y2, y3; // 32 (4 double)
private final boolean z0; // 1 (1 boolean)
private final int[] a = new int[320]; // 8 (reference to array)
// 1304 (int array of size 320)
... 7 (padding to round up to a multiple of 8)
} ----
1400
AlgorithmsI Exercises: Analysis of Algorithms的更多相关文章
- 算法分析 Analysis of Algorithms -------GeekforGeeker 翻译
算法分析 Analysis of Algorithms 为什么要做性能分析?Why performance analysis? 在计算机领域有很多重要的因素我们要考虑 比如用户友好度,模块化, 安全性 ...
- 6.046 Design and Analysis of Algorithms
课程信息 6.046 Design and Analysis of Algorithms
- "Mathematical Analysis of Algorithms" 阅读心得
"Mathematical Analysis of Algorithms" 阅读心得 "Mathematical Analysis of Algorithms" ...
- 《Mathematical Analysis of Algorithms》中有关“选择第t大的数”的算法分析
开头废话 这个问题是Donald.E.Knuth在他发表的论文Mathematical Analysis of Algorithms中提到的,这里对他的算法分析过程给出了更详细的解释. 问题描述: 给 ...
- 612.1.002 ALGS4 | Analysis of Algorithms
我们生活在大数的时代 培养数量级的敏感! Tip:见招拆招 作为工程师,你先要能实现出来. 充实基础,没有什么不好意思 哪怕不完美.但是有时候完成比完美更重要. 之后再去想优化 P.S.作者Rober ...
- Analysis of Algorithms
算法分析 Introduction 有各种原因要求我们分析算法,像预测算法性能,比较不同算法优劣等,其中很实际的一条原因是为了避免性能错误,要对自己算法的性能有个概念. 科学方法(scientific ...
- Analysis of algorithms: observation
例子: 3-Sum 给定N个整数,这里面有多少个三元组,使其三个整数相加为0,如上面的例子为有4个三元组. 这个问题是许多问题如计算机几何,图形学等的基础. 用简单粗暴的方式来解决3-Sum问题 通过 ...
- Time complexity analysis of algorithms
时间复杂性的计算一般而言,较小的问题所需要的运行时间通常要比较大的问题所需要的时间少.设一个程序P所占用的时间为T,则 T(P)=编译时间+运行时间. 编译时间与实例特征是无关的,且可假设一个编译过的 ...
- AlgorithmsI Exercises: UnionFind
Question1 Give the id[] array that results from the following sequence of 6 unionoperations on a set ...
随机推荐
- UVa 993: Product of digits
这道题很简单.先将N用2,3,5,7(即10以内的素数)分解因数(需要先特殊判断N不为1),然后将可以合并的因数合并(如2*2合并成4,)这样求得的结果位数会减少,大小肯定会小一些.具体实现见代码. ...
- Spring 3 MVC: Themes In Spring-Tutorial With Example---reference
Welcome to Part 6 of Spring 3.0 MVC Series. In previous article we saw how to add Internationalizati ...
- Call Directory Extension 初探
推荐序 本文介绍了 iOS 10 中的 Call Directory Extension 特性,并且最终 Demo 出一个来电黑名单的 App. 作者:余龙泽,哈工大软件工程大四学生,之前在美图公司实 ...
- RHEL7重置root密码
一.rd.break方法 在linux16那一段的最后,空一格输入rd.break 按Ctrl+启动到单用户模式,如下: 进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=r ...
- table 数据少时 ,tr高度变化
table设置固定高度,如果点击分页,数据条数发生变化时,tr的高度会变化. 解决办法:table外 加div层 将table隔离.
- LinkedIn第三方登录
官方开发文档网址:https://developer.linkedin.com angularjs LinkedIn初始化 var apiKey='77n7z65hd7azmb';$(function ...
- 在企业级开发中使用Try...Catch...会影响效率吗?
感谢神啊.上帝及老天爷让我失眠,才能够有了本篇文章. 记得不久之前,公司一同事曾经说过:“如果是Winform开发,由于程序是在本地,使用try...catch不会有太大性能问题,可是如果是在web服 ...
- 【原创】不用封装jar包 直接引入工程使用的方法(类似android的 is Library功能)
1.制作lib工程,这里我简单制作一个测试类 2.eclipse中 java Project工程引入方法 2.1.新建个java工程,在属性配置中选择 "Java Build Path&qu ...
- Switch Case语句中多个值匹配同一个代码块的写法
switch ($p) { case 'home': case '': $current_home = 'current'; break; case 'users.online': case 'use ...
- Eclipse中点击小猫提示Tomcat settings should be set in Tomcat Preference Page
1.window->preference->tomcat->tomcat-version选择自己tomcat版本 tomcat home 选择tomcat安装目录,即bin的上一层 ...