编程珠玑--粗略估算

简介:

粗略估算是《编程珠玑》中第七章提到的内容。

 

这篇文章将“粗略估算”看做是一项工程技术,是程序员必备的一项技能之一。

本人非常同意这个观点。粗略估算是一种把复杂的事情简单化的能力。我们对某个算法的时间复杂度和空间复杂度的估算就是基于这种估算的能力。如果你能较为准确的估算出一个程序的输出结果,如果你能准确估算出这个程序的运行时间,如果你能准确估算出这个项目的开发时间……如果你能拥有这样的能力,该有多么美好啊。所以难怪乎像微软、Google这样的大公司老喜欢出“请计算飞机场一天有多少飞机起飞和降落?”“请计算美国一年产轿车多少辆?”这样的估算问题!

 

估算是随着大家的经验增长而越来越准确的。下面介绍几个估算的基本技巧和定理:

 

1.  72法则

假设以年利率r%投资一笔钱y年,如果r*y=72,那么你的投资差不多会翻倍。

 

具体例子:

以年利率6%投资1000美元12年,可得到约2000美元(实际数字是2012美元)

以年利率8%投资1000美元9年,可得到约2000美元(实际数字式1999美元)

 

假设一个指数程序解决规模为n=40的问题需要10秒的时间,并且n每增加1运行时间就增加12%,问当我们把n=100的时候,大约需要多少运行时间?

根据72法则,n每增加6运行时间翻倍,那么当n增加60,运行时间增加为原来的2^10≈1000倍。因此,n=100时,大约需要10 000秒(2~3个小时)。

 

联合国估算1998年的世界人口为59亿,年增长率为1.33%。如果按照这个速率下去,到2050年人口会是多少?

2050-1998=52; 52*1.33≈70

因此根据72法则,2050年人口约为59*2=118亿。

 

2.  Little定律

队列中物体的平均数量为进入速率与平均停留时间的乘积

 

具体例子:

假设你正在排队等待进入一个火爆的夜总会,根据观察,你可以估算:“这个夜总会能容纳60人,每个人在里面逗留时间约是3小时,因此进入夜总会的速率为20人/小时。现在队伍中前面还有20人,因此这意味着我们需要等待大约一个小时的时间。”

 

请估计一下你所在的城市的死亡率,假设人口的平均寿命为70岁。

Little定律告诉我们,城市的死亡率为1/70。

 

当我们设计一个程序的时候,有算法若干,功能需求若干。这时候就需要组织者有足够的估算能力,估算并平衡每个较优算法所付出的时间代价和性能需求。从而做出正确的决定。

 

作者:Nick Ye(yjf512)
出处:(http://www.cnblogs.com/yjf512/
版权声明:本文的版权归作者与博客园共有。欢迎转载阅读,转载时须注明本文的详细链接。 

 

参考文档:

编程珠玑(第二版)

http://www.jguoer.com/blog/index.php/archives/227

目录
相关文章
【动态规划上分复盘】下降路径最小和|礼物的最大价值
【动态规划上分复盘】下降路径最小和|礼物的最大价值
|
7月前
|
资源调度
回归方程优良性评价(原理+实践+代码)
回归方程优良性评价(原理+实践+代码)
回归方程优良性评价(原理+实践+代码)
|
7月前
|
机器学习/深度学习 算法
【算法 | 实验7】以最小的步骤收集所有硬币(算法正确性还没想清楚)
题目 最小步骤收集硬币 有许多相邻排列的硬币堆。我们需要以最少的步骤收集所有这些硬币,在一个步骤中,我们可以收集一个水平线的硬币或垂直线的硬币,收集的硬币应该是连续的。 输入描述 输入第一行整数N表示硬币堆的数量
89 0
|
7月前
蓝桥杯真题代码记录(最优清零方案
蓝桥杯真题代码记录(最优清零方案
70 0
|
算法
软考:计划评审技术(PERT)三点估算法计算工期、标准差、完成概率
软考:计划评审技术(PERT)三点估算法计算工期、标准差、完成概率
241 0
软考:计划评审技术(PERT)三点估算法计算工期、标准差、完成概率
|
Perl
马知恩周义仓编常微分方程定性与稳定性方法部分习题参考解答
第一章    基本定理   1设有 $$\bex \frac{\rd \bbx}{\rd t}=\bbf(t,\bbx),\quad \bbx(t_0)=\bbx^0,\quad (t_0,\bbx^0)\in \bbR\times \bbR^n.
5045 0
|
算法 Java C++
算法系统学习-水仙fa数是啥花?(蛮力算法补充)
该系列是基于有一定语言基础(C,C++,Java等等)和基本的数据结构基础进行的算法学习专栏,如果觉得有点吃力 😥 ,建议先了解前提知识再学习喔!本个专栏会将用更容易理解的表达去学习算法,如果在一些表述上存在问题还请各位多多指点
153 0
|
算法 程序员
弄懂“三门问题”,成功概率翻倍,来用代码验证一下
弄懂“三门问题”,成功概率翻倍,来用代码验证一下
255 0
弄懂“三门问题”,成功概率翻倍,来用代码验证一下
|
算法
数据结构与算法题目集(中文) - 7-50 畅通工程之局部最小花费问题(35 分)
数据结构与算法题目集(中文) - 7-50 畅通工程之局部最小花费问题(35 分)
181 0